/**
* collectd - src/apache.c
* Copyright (C) 2006 Florian octo Forster
+ * Copyright (C) 2007 Florent EppO Monbillard
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
*
* Authors:
* Florian octo Forster <octo at verplant.org>
+ * Florent EppO Monbillard <eppo at darox.net>
+ * - connections/lighttpd extension
**/
#include "collectd.h"
#include "common.h"
#include "plugin.h"
#include "configfile.h"
-#include "utils_debug.h"
#if HAVE_LIBCURL && HAVE_CURL_CURL_H
# define APACHE_HAVE_READ 1
# define APACHE_HAVE_READ 0
#endif
-/* Limit to 2^27 bytes/s. That's what a gigabit-ethernet link can handle, in
- * theory. */
-static data_source_t apache_bytes_dsrc[1] =
-{
- {"count", DS_TYPE_COUNTER, 0, 134217728.0},
-};
-
-static data_set_t apache_bytes_ds =
-{
- "apache_bytes", 1, apache_bytes_dsrc
-};
-
-/* Limit to 2^20 requests/s */
-static data_source_t apache_requests_dsrc[1] =
-{
- {"count", DS_TYPE_COUNTER, 0, 134217728.0},
-};
-
-static data_set_t apache_requests_ds =
-{
- "apache_requests", 1, apache_requests_dsrc
-};
-
-static data_source_t apache_scoreboard_dsrc[1] =
-{
- {"count", DS_TYPE_GAUGE, 0, 65535.0},
-};
-
-static data_set_t apache_scoreboard_ds =
-{
- "apache_scoreboard", 1, apache_scoreboard_dsrc
-};
-
#if APACHE_HAVE_READ
static char *url = NULL;
static char *user = NULL;
if ((curl = curl_easy_init ()) == NULL)
{
- syslog (LOG_ERR, "apache: `curl_easy_init' failed.");
+ ERROR ("apache: `curl_easy_init' failed.");
return (-1);
}
{
if (snprintf (credentials, 1024, "%s:%s", user, pass == NULL ? "" : pass) >= 1024)
{
- syslog (LOG_ERR, "apache: Credentials would have been truncated.");
+ ERROR ("apache: Credentials would have been truncated.");
return (-1);
}
value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- DBG ("type = %s; type_instance = %s; value = %llu;",
+ DEBUG ("type = %s; type_instance = %s; value = %llu;",
type, type_instance, value);
values[0].counter = value;
vl.values = values;
vl.values_len = 1;
vl.time = time (NULL);
- strcpy (vl.host, hostname);
+ strcpy (vl.host, hostname_g);
strcpy (vl.plugin, "apache");
strcpy (vl.plugin_instance, "");
strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- DBG ("type = %s; type_instance = %s; value = %lf;",
+ DEBUG ("type = %s; type_instance = %s; value = %lf;",
type, type_instance, value);
values[0].gauge = value;
vl.values = values;
vl.values_len = 1;
vl.time = time (NULL);
- strcpy (vl.host, hostname);
+ strcpy (vl.host, hostname_g);
strcpy (vl.plugin, "apache");
strcpy (vl.plugin_instance, "");
- strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
+
+ if (type_instance != NULL)
+ strncpy (vl.type_instance, type_instance,
+ sizeof (vl.type_instance));
plugin_dispatch_values (type, &vl);
} /* void submit_counter */
int i;
char *ptr;
+ char *saveptr;
char *lines[16];
int lines_num = 0;
apache_buffer_len = 0;
if (curl_easy_perform (curl) != 0)
{
- syslog (LOG_ERR, "apache: curl_easy_perform failed: %s",
+ ERROR ("apache: curl_easy_perform failed: %s",
apache_curl_error);
return (-1);
}
ptr = apache_buffer;
- while ((lines[lines_num] = strtok (ptr, "\n\r")) != NULL)
+ saveptr = NULL;
+ while ((lines[lines_num] = strtok_r (ptr, "\n\r", &saveptr)) != NULL)
{
ptr = NULL;
lines_num++;
{
if (strcmp (fields[0], "Scoreboard:") == 0)
submit_scoreboard (fields[1]);
+ else if (strcmp (fields[0], "BusyServers:") == 0)
+ submit_gauge ("apache_connections", NULL, atol (fields[1]));
}
}
void module_register (void)
{
- plugin_register_data_set (&apache_bytes_ds);
- plugin_register_data_set (&apache_requests_ds);
- plugin_register_data_set (&apache_scoreboard_ds);
-
#if APACHE_HAVE_READ
plugin_register_config ("apache", config,
config_keys, config_keys_num);
plugin_register_init ("apache", init);
plugin_register_read ("apache", apache_read);
#endif
-}
+} /* void module_register */