diff --git a/src/apache.c b/src/apache.c
index df1b560f092e89bbc8dd9cb65309fb55b20216f5..8458ce15d1c9b58bdd8c9c24220e844242443f3a 100644 (file)
--- a/src/apache.c
+++ b/src/apache.c
/**
* collectd - src/apache.c
- * Copyright (C) 2006-2009 Florian octo Forster
+ * Copyright (C) 2006-2010 Florian octo Forster
* Copyright (C) 2007 Florent EppO Monbillard
* Copyright (C) 2009 Amit Gupta
*
st->server_type = APACHE;
else if (strstr (buf, "lighttpd") != NULL)
st->server_type = LIGHTTPD;
+ else if (strstr (buf, "IBM_HTTP_Server") != NULL)
+ st->server_type = APACHE;
else
{
const char *hdr = buf;
return (-1);
}
- if (ci->values[0].type != OCONFIG_TYPE_BOOLEAN)
+ if (ci->values[0].type == OCONFIG_TYPE_BOOLEAN)
{
if (ci->values[0].value.boolean)
*ret_boolean = 1;
(st->host != NULL) ? st->host : hostname_g,
(st->name != NULL) ? st->name : "default"),
- status = plugin_register_complex_read (callback_name,
+ status = plugin_register_complex_read (/* group = */ NULL,
+ /* name = */ callback_name,
/* callback = */ apache_read_host,
/* interval = */ NULL,
/* user_data = */ &ud);
{
int status = 0;
int i;
- oconfig_item_t *lci = NULL; /* legacy config */
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
- if (strcasecmp ("Instance", child->key) == 0 && child->children_num > 0)
+ if (strcasecmp ("Instance", child->key) == 0)
config_add (child);
else
- {
- /* legacy mode - convert to <Instance ...> config */
- if (lci == NULL)
- {
- lci = malloc (sizeof(*lci));
- if (lci == NULL)
- {
- ERROR ("apache plugin: malloc failed.");
- return (-1);
- }
- memset (lci, '\0', sizeof (*lci));
- }
-
- lci->children_num++;
- lci->children =
- realloc (lci->children,
- lci->children_num * sizeof (*child));
- if (lci->children == NULL)
- {
- ERROR ("apache plugin: realloc failed.");
- return (-1);
- }
- memcpy (&lci->children[lci->children_num-1], child, sizeof (*child));
- }
+ WARNING ("apache plugin: The configuration option "
+ "\"%s\" is not allowed here. Did you "
+ "forget to add an <Instance /> block "
+ "around the configuration?",
+ child->key);
} /* for (ci->children) */
- if (lci)
- {
- /* create a <Instance ""> entry */
- lci->key = "Instance";
- lci->values_num = 1;
- lci->values = (oconfig_value_t *) malloc (lci->values_num * sizeof (oconfig_value_t));
- lci->values[0].type = OCONFIG_TYPE_STRING;
- lci->values[0].value.string = "";
-
- status = config_add (lci);
- sfree (lci->values);
- sfree (lci->children);
- sfree (lci);
- }
-
- return status;
+ return (status);
} /* int config */
/* initialize curl for each host */
return (-1);
}
+ curl_easy_setopt (st->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt (st->curl, CURLOPT_WRITEFUNCTION, apache_curl_callback);
curl_easy_setopt (st->curl, CURLOPT_WRITEDATA, st);
st->server_type = APACHE;
else if (strcasecmp(st->server, "lighttpd") == 0)
st->server_type = LIGHTTPD;
+ else if (strcasecmp(st->server, "ibm_http_server") == 0)
+ st->server_type = APACHE;
else
WARNING ("apache plugin: Unknown `Server' setting: %s",
st->server);
}
curl_easy_setopt (st->curl, CURLOPT_URL, st->url);
- curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1L);
+ curl_easy_setopt (st->curl, CURLOPT_MAXREDIRS, 50L);
if (st->verify_peer != 0)
{
- curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1);
+ curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1L);
}
else
{
- curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0);
+ curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0L);
}
if (st->verify_host != 0)
{
- curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2);
+ curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2L);
}
else
{
- curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0L);
}
if (st->cacert != NULL)
plugin_dispatch_values (&vl);
} /* void submit_value */
-static void submit_counter (const char *type, const char *type_instance,
- counter_t c, apache_t *st)
+static void submit_derive (const char *type, const char *type_instance,
+ derive_t c, apache_t *st)
{
value_t v;
- v.counter = c;
+ v.derive = c;
submit_value (type, type_instance, v, st);
-} /* void submit_counter */
+} /* void submit_derive */
static void submit_gauge (const char *type, const char *type_instance,
gauge_t g, apache_t *st)
assert (st->curl != NULL);
st->apache_buffer_fill = 0;
- if (curl_easy_perform (st->curl) != 0)
+ if (curl_easy_perform (st->curl) != CURLE_OK)
{
ERROR ("apache: curl_easy_perform failed: %s",
st->apache_curl_error);
{
if ((strcmp (fields[0], "Total") == 0)
&& (strcmp (fields[1], "Accesses:") == 0))
- submit_counter ("apache_requests", "",
+ submit_derive ("apache_requests", "",
atoll (fields[2]), st);
else if ((strcmp (fields[0], "Total") == 0)
&& (strcmp (fields[1], "kBytes:") == 0))
- submit_counter ("apache_bytes", "",
+ submit_derive ("apache_bytes", "",
1024LL * atoll (fields[2]), st);
}
else if (fields_num == 2)
{
if (strcmp (fields[0], "Scoreboard:") == 0)
submit_scoreboard (fields[1], st);
- else if (strcmp (fields[0], "BusyServers:") == 0)
+ else if ((strcmp (fields[0], "BusyServers:") == 0) /* Apache 1.* */
+ || (strcmp (fields[0], "BusyWorkers:") == 0) /* Apache 2.* */)
submit_gauge ("apache_connections", NULL, atol (fields[1]), st);
+ else if ((strcmp (fields[0], "IdleServers:") == 0) /* Apache 1.x */
+ || (strcmp (fields[0], "IdleWorkers:") == 0) /* Apache 2.x */)
+ submit_gauge ("apache_idle_workers", NULL, atol (fields[1]), st);
}
}