From 64d0aa3fd682b4920751c2740a393437e3b8099b Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Sat, 29 Aug 2009 08:07:21 +0200 Subject: [PATCH] =?utf8?q?write=5Fhttp=20plugin:=20Rename=20the=20?= =?utf8?q?=E2=80=9Chttp=E2=80=9D=20plugin=20to=20=E2=80=9Cwrite=5Fhttp?= =?utf8?q?=E2=80=9D.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- AUTHORS | 2 +- README | 6 +++- configure.in | 4 +-- src/Makefile.am | 28 +++++++-------- src/{http.c => write_http.c} | 85 +++++++++++++++++++++++--------------------- 5 files changed, 66 insertions(+), 59 deletions(-) rename src/{http.c => write_http.c} (81%) diff --git a/AUTHORS b/AUTHORS index 062a42e4..11ce8a7a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -109,7 +109,7 @@ Ondrej Zajicek Paul Sadauskas - tokyotyrant plugin. - `ReportByDevice' option of the df plugin. - - http plugin. + - write_http plugin. Peter Holik - cpufreq plugin. diff --git a/README b/README index 1cfa6434..8d54b4da 100644 --- a/README +++ b/README @@ -261,6 +261,9 @@ Features - wireless Link quality of wireless cards. Linux only. + - write_http + Send data to a web-server using POST requests. + - xmms Bitrate and frequency of music played with XMMS. @@ -441,7 +444,8 @@ Prerequisites Used by the `oracle' plugin. * libcurl (optional) - If you want to use the `apache', `ascent', `curl' or `nginx' plugin. + If you want to use the `apache', `ascent', `curl', `nginx', or `write_http' + plugin. * libdbi (optional) diff --git a/configure.in b/configure.in index e1dc8c64..fd920812 100644 --- a/configure.in +++ b/configure.in @@ -3710,7 +3710,6 @@ AC_PLUGIN([filecount], [yes], [Count files in directories]) AC_PLUGIN([fscache], [$plugin_fscache], [fscache statistics]) AC_PLUGIN([gmond], [$with_libganglia], [Ganglia plugin]) AC_PLUGIN([hddtemp], [yes], [Query hddtempd]) -AC_PLUGIN([http], [$with_libcurl], [HTTP output plugin]) AC_PLUGIN([interface], [$plugin_interface], [Interface traffic statistics]) AC_PLUGIN([ipmi], [$plugin_ipmi], [IPMI sensor statistics]) AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters]) @@ -3774,6 +3773,7 @@ AC_PLUGIN([uuid], [yes], [UUID as hostname plugin]) AC_PLUGIN([vmem], [$plugin_vmem], [Virtual memory statistics]) AC_PLUGIN([vserver], [$plugin_vserver], [Linux VServer statistics]) AC_PLUGIN([wireless], [$plugin_wireless], [Wireless statistics]) +AC_PLUGIN([write_http], [$with_libcurl], [HTTP output plugin]) AC_PLUGIN([xmms], [$with_libxmms], [XMMS statistics]) dnl Default configuration file @@ -4009,7 +4009,6 @@ Configuration: fscache . . . . . . . $enable_fscache gmond . . . . . . . . $enable_gmond hddtemp . . . . . . . $enable_hddtemp - http . . . . . . . . $enable_http interface . . . . . . $enable_interface ipmi . . . . . . . . $enable_ipmi iptables . . . . . . $enable_iptables @@ -4073,6 +4072,7 @@ Configuration: vmem . . . . . . . . $enable_vmem vserver . . . . . . . $enable_vserver wireless . . . . . . $enable_wireless + write_http . . . . . $enable_write_http xmms . . . . . . . . $enable_xmms EOF diff --git a/src/Makefile.am b/src/Makefile.am index d3e27f85..11c03486 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -347,20 +347,6 @@ collectd_LDADD += "-dlopen" hddtemp.la collectd_DEPENDENCIES += hddtemp.la endif -if BUILD_PLUGIN_HTTP -pkglib_LTLIBRARIES += http.la -http_la_SOURCES = http.c -http_la_LDFLAGS = -module -avoid-version -http_la_CFLAGS = $(AM_CFLAGS) -http_la_LIBADD = -collectd_LDADD += "-dlopen" http.la -if BUILD_WITH_LIBCURL -http_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS) -http_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS) -endif -collectd_DEPENDENCIES += http.la -endif - if BUILD_PLUGIN_INTERFACE pkglib_LTLIBRARIES += interface.la interface_la_SOURCES = interface.c @@ -1056,6 +1042,20 @@ collectd_LDADD += "-dlopen" wireless.la collectd_DEPENDENCIES += wireless.la endif +if BUILD_PLUGIN_WRITE_HTTP +pkglib_LTLIBRARIES += write_http.la +write_http_la_SOURCES = write_http.c +write_http_la_LDFLAGS = -module -avoid-version +write_http_la_CFLAGS = $(AM_CFLAGS) +write_http_la_LIBADD = +collectd_LDADD += "-dlopen" write_http.la +if BUILD_WITH_LIBCURL +write_http_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS) +write_http_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS) +endif +collectd_DEPENDENCIES += write_http.la +endif + if BUILD_PLUGIN_XMMS pkglib_LTLIBRARIES += xmms.la xmms_la_SOURCES = xmms.c diff --git a/src/http.c b/src/write_http.c similarity index 81% rename from src/http.c rename to src/write_http.c index e68f2a19..27d1842c 100644 --- a/src/http.c +++ b/src/write_http.c @@ -1,8 +1,8 @@ /** - * collectd - src/http.c + * collectd - src/write_http.c * Copyright (C) 2009 Paul Sadauskas - * Copyright (C) 2007-2009 Florian octo Forster * Copyright (C) 2009 Doug MacEachern + * Copyright (C) 2007-2009 Florian octo Forster * * 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 @@ -61,15 +61,15 @@ static time_t send_buffer_init_time; static pthread_mutex_t send_lock = PTHREAD_MUTEX_INITIALIZER; -static void http_init_buffer (void) /* {{{ */ +static void wh_init_buffer (void) /* {{{ */ { memset (send_buffer, 0, sizeof (send_buffer)); send_buffer_free = sizeof (send_buffer); send_buffer_fill = 0; send_buffer_init_time = time (NULL); -} /* }}} http_init_buffer */ +} /* }}} wh_init_buffer */ -static int http_init(void) /* {{{ */ +static int wh_init(void) /* {{{ */ { curl = curl_easy_init (); @@ -112,12 +112,12 @@ static int http_init(void) /* {{{ */ curl_easy_setopt (curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); } - http_init_buffer (); + wh_init_buffer (); return (0); } /* }}} */ -static int http_value_list_to_string (char *buffer, /* {{{ */ +static int wh_value_list_to_string (char *buffer, /* {{{ */ size_t buffer_size, const data_set_t *ds, const value_list_t *vl) { @@ -154,7 +154,7 @@ static int http_value_list_to_string (char *buffer, /* {{{ */ BUFFER_ADD (":%"PRIu64, vl->values[i].absolute); else { - ERROR ("http plugin: Unknown data source type: %i", + ERROR ("write_http plugin: Unknown data source type: %i", ds->ds[i].type); return (-1); } @@ -163,9 +163,9 @@ static int http_value_list_to_string (char *buffer, /* {{{ */ #undef BUFFER_ADD return (0); -} /* }}} int http_value_list_to_string */ +} /* }}} int wh_value_list_to_string */ -static int http_config (const char *key, const char *value) /* {{{ */ +static int wh_config (const char *key, const char *value) /* {{{ */ { if (strcasecmp ("URL", key) == 0) { @@ -232,9 +232,9 @@ static int http_config (const char *key, const char *value) /* {{{ */ return (-1); } return (0); -} /* }}} int http_config */ +} /* }}} int wh_config */ -static int http_send_buffer (char *buffer) /* {{{ */ +static int wh_send_buffer (char *buffer) /* {{{ */ { int status = 0; @@ -242,17 +242,18 @@ static int http_send_buffer (char *buffer) /* {{{ */ status = curl_easy_perform (curl); if (status != 0) { - ERROR ("http plugin: curl_easy_perform failed with staus %i: %s", + ERROR ("write_http plugin: curl_easy_perform failed with " + "staus %i: %s", status, curl_errbuf); } return (status); -} /* }}} http_send_buffer */ +} /* }}} wh_send_buffer */ -static int http_flush_nolock (int timeout) /* {{{ */ +static int wh_flush_nolock (int timeout) /* {{{ */ { int status; - DEBUG ("http plugin: http_flush_nolock: timeout = %i; " + DEBUG ("write_http plugin: wh_flush_nolock: timeout = %i; " "send_buffer =\n %s", timeout, send_buffer); if (timeout > 0) @@ -270,26 +271,26 @@ static int http_flush_nolock (int timeout) /* {{{ */ return (0); } - status = http_send_buffer (send_buffer); - http_init_buffer (); + status = wh_send_buffer (send_buffer); + wh_init_buffer (); return (status); -} /* }}} http_flush_nolock */ +} /* }}} wh_flush_nolock */ -static int http_flush (int timeout, /* {{{ */ +static int wh_flush (int timeout, /* {{{ */ const char *identifier __attribute__((unused)), user_data_t *user_data __attribute__((unused))) { int status; pthread_mutex_lock (&send_lock); - status = http_flush_nolock (timeout); + status = wh_flush_nolock (timeout); pthread_mutex_unlock (&send_lock); return (status); -} /* }}} int http_flush */ +} /* }}} int wh_flush */ -static int http_write_command (const data_set_t *ds, const value_list_t *vl) /* {{{ */ +static int wh_write_command (const data_set_t *ds, const value_list_t *vl) /* {{{ */ { char key[10*DATA_MAX_NAME_LEN]; char values[512]; @@ -299,23 +300,25 @@ static int http_write_command (const data_set_t *ds, const value_list_t *vl) /* int status; if (0 != strcmp (ds->type, vl->type)) { - ERROR ("http plugin: DS type does not match value list type"); + ERROR ("write_http plugin: DS type does not match " + "value list type"); return -1; } /* Copy the identifier to `key' and escape it. */ status = FORMAT_VL (key, sizeof (key), vl); if (status != 0) { - ERROR ("http plugin: error with format_name"); + ERROR ("write_http plugin: error with format_name"); return (status); } escape_string (key, sizeof (key)); /* Convert the values to an ASCII representation and put that into * `values'. */ - status = http_value_list_to_string (values, sizeof (values), ds, vl); + status = wh_value_list_to_string (values, sizeof (values), ds, vl); if (status != 0) { - ERROR ("http plugin: error with http_value_list_to_string"); + ERROR ("write_http plugin: error with " + "wh_value_list_to_string"); return (status); } @@ -323,7 +326,7 @@ static int http_write_command (const data_set_t *ds, const value_list_t *vl) /* "PUTVAL %s interval=%i %s\n", key, vl->interval, values); if (command_len >= sizeof (command)) { - ERROR ("http plugin: Command buffer too small: " + ERROR ("write_http plugin: Command buffer too small: " "Need %zu bytes.", command_len + 1); return (-1); } @@ -333,7 +336,7 @@ static int http_write_command (const data_set_t *ds, const value_list_t *vl) /* /* Check if we have enough space for this command. */ if (command_len >= send_buffer_free) { - status = http_flush_nolock (/* timeout = */ -1); + status = wh_flush_nolock (/* timeout = */ -1); if (status != 0) { pthread_mutex_unlock (&send_lock); @@ -351,33 +354,33 @@ static int http_write_command (const data_set_t *ds, const value_list_t *vl) /* pthread_mutex_unlock (&send_lock); return (0); -} /* }}} int http_write_command */ +} /* }}} int wh_write_command */ -static int http_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */ +static int wh_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */ user_data_t __attribute__((unused)) *user_data) { int status; - status = http_write_command (ds, vl); + status = wh_write_command (ds, vl); return (status); -} /* }}} int http_write */ +} /* }}} int wh_write */ -static int http_shutdown (void) /* {{{ */ +static int wh_shutdown (void) /* {{{ */ { - http_flush_nolock (/* timeout = */ -1); + wh_flush_nolock (/* timeout = */ -1); curl_easy_cleanup(curl); return (0); -} /* }}} int http_shutdown */ +} /* }}} int wh_shutdown */ void module_register (void) /* {{{ */ { - plugin_register_init("http", http_init); - plugin_register_config ("http", http_config, + plugin_register_init("write_http", wh_init); + plugin_register_config ("write_http", wh_config, config_keys, config_keys_num); - plugin_register_write ("http", http_write, /* user_data = */ NULL); - plugin_register_flush ("http", http_flush, /* user_data = */ NULL); - plugin_register_shutdown("http", http_shutdown); + plugin_register_write ("write_http", wh_write, /* user_data = */ NULL); + plugin_register_flush ("write_http", wh_flush, /* user_data = */ NULL); + plugin_register_shutdown("write_http", wh_shutdown); } /* }}} void module_register */ /* vim: set fdm=marker sw=8 ts=8 tw=78 et : */ -- 2.11.0