summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bc29180)
raw | patch | inline | side by side (parent: bc29180)
author | Marc Fournier <marc.fournier@camptocamp.com> | |
Tue, 20 Jan 2015 22:09:56 +0000 (23:09 +0100) | ||
committer | Marc Fournier <marc.fournier@camptocamp.com> | |
Wed, 21 Jan 2015 09:13:42 +0000 (10:13 +0100) |
This makes the plugin use `<Node>` blocks liks most other write plugins,
while maintaining backwards compatibility with `<URL>` blocks.
It's a follow up to #899, which was merely a fix for the release
branches.
while maintaining backwards compatibility with `<URL>` blocks.
It's a follow up to #899, which was merely a fix for the release
branches.
src/collectd.conf.in | patch | blob | history | |
src/collectd.conf.pod | patch | blob | history | |
src/write_http.c | patch | blob | history |
diff --git a/src/collectd.conf.in b/src/collectd.conf.in
index dda4fcc5ee17a33c1a718bb9c78e80b994e360b0..62cfb77352476d86b4b5d3c1266fc9c06c659d43 100644 (file)
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
#</Plugin>
#<Plugin write_http>
-# <URL "http://example.com/collectd-post">
+# <Node "example">
+# URL "http://example.com/collectd-post"
# User "collectd"
# Password "weCh3ik0"
# VerifyPeer true
# Format "Command"
# StoreRates false
# BufferSize 4096
-# </URL>
+# </Node>
#</Plugin>
#<Plugin write_kafka>
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index 12269ae1f67d5e082b5f2081b928e4bc75af2c87..8560066470814f616612d50ce5708b16704a2087 100644 (file)
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
This output plugin submits values to an HTTP server using POST requests and
encoding metrics with JSON or using the C<PUTVAL> command described in
-L<collectd-unixsock(5)>. Each destination you want to post data to needs to
-have one B<URL> block, within which the destination can be configured further,
-for example by specifying authentication data.
+L<collectd-unixsock(5)>.
Synopsis:
<Plugin "write_http">
- <URL "http://example.com/post-collectd">
+ <Node "example">
+ URL "http://example.com/post-collectd"
User "collectd"
Password "weCh3ik0"
Format JSON
- </URL>
+ </Node>
</Plugin>
-B<URL> blocks need one string argument which is used as the URL to which data
-is posted. The following options are understood within B<URL> blocks.
+The plugin can send values to multiple HTTP servers by specifying one
+E<lt>B<Node>E<nbsp>I<Name>E<gt> block for each server. Within each B<Node>
+block, the following options are available:
=over 4
+=item B<URL> I<URL>
+
+URL to which the values are submitted to. Mandatory.
+
=item B<User> I<Username>
Optional user name needed for authentication.
diff --git a/src/write_http.c b/src/write_http.c
index 1253a26a8dc9fc15cb15352c117fb92ea084eab6..9d8f30c2a6a2ed2324924d9c74500d8f09e950d8 100644 (file)
--- a/src/write_http.c
+++ b/src/write_http.c
*/
struct wh_callback_s
{
- char *location;
+ char *name;
+ char *location;
char *user;
char *pass;
char *credentials;
curl_easy_cleanup (cb->curl);
cb->curl = NULL;
}
+ sfree (cb->name);
sfree (cb->location);
sfree (cb->user);
sfree (cb->pass);
return (0);
} /* }}} int config_set_format */
-static int wh_config_url (oconfig_item_t *ci) /* {{{ */
+static int wh_config_node (oconfig_item_t *ci) /* {{{ */
{
wh_callback_t *cb;
int buffer_size = 0;
pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
- cf_util_get_string (ci, &cb->location);
- if (cb->location == NULL)
- return (-1);
+ cf_util_get_string (ci, &cb->name);
+
+ /* FIXME: Remove this legacy mode in version 6. */
+ if (strcasecmp ("URL", ci->key) == 0)
+ cf_util_get_string (ci, &cb->location);
for (i = 0; i < ci->children_num; i++)
{
oconfig_item_t *child = ci->children + i;
- if (strcasecmp ("User", child->key) == 0)
+ if (strcasecmp ("URL", child->key) == 0)
+ cf_util_get_string (child, &cb->location);
+ else if (strcasecmp ("User", child->key) == 0)
cf_util_get_string (child, &cb->user);
else if (strcasecmp ("Password", child->key) == 0)
cf_util_get_string (child, &cb->pass);
}
}
+ if (cb->location == NULL)
+ {
+ ERROR ("write_http plugin: no URL defined for instance '%s'",
+ cb->name);
+ wh_callback_free (cb);
+ return (-1);
+ }
+
/* Determine send_buffer_size. */
cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE;
if (buffer_size >= 1024)
wh_reset_buffer (cb);
ssnprintf (callback_name, sizeof (callback_name), "write_http/%s",
- cb->location);
+ cb->name);
DEBUG ("write_http: Registering write callback '%s' with URL '%s'",
callback_name, cb->location);
plugin_register_write (callback_name, wh_write, &user_data);
return (0);
-} /* }}} int wh_config_url */
+} /* }}} int wh_config_node */
static int wh_config (oconfig_item_t *ci) /* {{{ */
{
{
oconfig_item_t *child = ci->children + i;
- if (strcasecmp ("URL", child->key) == 0)
- wh_config_url (child);
+ if (strcasecmp ("Node", child->key) == 0)
+ wh_config_node (child);
+ /* FIXME: Remove this legacy mode in version 6. */
+ else if (strcasecmp ("URL", child->key) == 0) {
+ WARNING ("write_http plugin: Legacy <URL> block found. "
+ "Please use <Node> instead.");
+ wh_config_node (child);
+ }
else
{
ERROR ("write_http plugin: Invalid configuration "