X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwrite_graphite.c;h=a3bead39b49147a8a72fca8ebf9c16489d095464;hb=d6021a800b12c89b5a78877af2c5b9abc1a8e609;hp=3ff8e04d991396df22fa0b91239d2b9c45d758e3;hpb=c149ae31b04a082f7915f39e8d51ddec4a0595f8;p=collectd.git diff --git a/src/write_graphite.c b/src/write_graphite.c index 3ff8e04d..a3bead39 100644 --- a/src/write_graphite.c +++ b/src/write_graphite.c @@ -4,7 +4,7 @@ * Copyright (C) 2011 Scott Sanders * Copyright (C) 2009 Paul Sadauskas * Copyright (C) 2009 Doug MacEachern - * Copyright (C) 2007-2012 Florian octo Forster + * Copyright (C) 2007-2013 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 @@ -46,6 +46,7 @@ #include "configfile.h" #include "utils_cache.h" +#include "utils_complain.h" #include "utils_parse_option.h" /* Folks without pthread will need to disable this plugin. */ @@ -85,6 +86,7 @@ struct wg_callback char escape_char; _Bool store_rates; + _Bool separate_instances; _Bool always_append_ds; char send_buf[WG_SEND_BUF_SIZE]; @@ -93,6 +95,7 @@ struct wg_callback cdtime_t send_buf_init_time; pthread_mutex_t send_lock; + c_complain_t init_complaint; }; @@ -214,12 +217,19 @@ static int wg_callback_init (struct wg_callback *cb) if (cb->sock_fd < 0) { char errbuf[1024]; - ERROR ("write_graphite plugin: Connecting to %s:%s failed. " + c_complain (LOG_ERR, &cb->init_complaint, + "write_graphite plugin: Connecting to %s:%s failed. " "The last error was: %s", node, service, sstrerror (errno, errbuf, sizeof (errbuf))); close (cb->sock_fd); return (-1); } + else + { + c_release (LOG_INFO, &cb->init_complaint, + "write_graphite plugin: Successfully connected to %s:%s.", + node, service); + } wg_reset_buffer (cb); @@ -271,7 +281,7 @@ static int wg_flush (cdtime_t timeout, status = wg_callback_init (cb); if (status != 0) { - ERROR ("write_graphite plugin: wg_callback_init failed."); + /* An error message has already been printed. */ pthread_mutex_unlock (&cb->send_lock); return (-1); } @@ -410,14 +420,18 @@ static int wg_format_name (char *ret, int ret_len, sizeof (n_type_instance), cb->escape_char); if (n_plugin_instance[0] != '\0') - ssnprintf (tmp_plugin, sizeof (tmp_plugin), "%s-%s", - n_plugin, n_plugin_instance); + ssnprintf (tmp_plugin, sizeof (tmp_plugin), "%s%c%s", + n_plugin, + cb->separate_instances ? '.' : '-', + n_plugin_instance); else sstrncpy (tmp_plugin, n_plugin, sizeof (tmp_plugin)); if (n_type_instance[0] != '\0') - ssnprintf (tmp_type, sizeof (tmp_type), "%s-%s", - n_type, n_type_instance); + ssnprintf (tmp_type, sizeof (tmp_type), "%s%c%s", + n_type, + cb->separate_instances ? '.' : '-', + n_type_instance); else sstrncpy (tmp_type, n_type, sizeof (tmp_type)); @@ -456,7 +470,7 @@ static int wg_send_message (const char* key, const char* value, status = wg_callback_init (cb); if (status != 0) { - ERROR ("write_graphite plugin: wg_callback_init failed."); + /* An error message has already been printed. */ pthread_mutex_unlock (&cb->send_lock); return (-1); } @@ -540,8 +554,7 @@ static int wg_write_messages (const data_set_t *ds, const value_list_t *vl, status = wg_send_message (key, values, vl->time, cb); if (status != 0) { - ERROR ("write_graphite plugin: error with " - "wg_send_message"); + /* An error message has already been printed. */ return (status); } } @@ -616,8 +629,10 @@ static int wg_config_carbon (oconfig_item_t *ci) cb->prefix = NULL; cb->postfix = NULL; cb->escape_char = WG_DEFAULT_ESCAPE; + cb->store_rates = 1; pthread_mutex_init (&cb->send_lock, /* attr = */ NULL); + C_COMPLAIN_INIT (&cb->init_complaint); for (i = 0; i < ci->children_num; i++) { @@ -633,6 +648,8 @@ static int wg_config_carbon (oconfig_item_t *ci) cf_util_get_string (child, &cb->postfix); else if (strcasecmp ("StoreRates", child->key) == 0) cf_util_get_boolean (child, &cb->store_rates); + else if (strcasecmp ("SeparateInstances", child->key) == 0) + cf_util_get_boolean (child, &cb->separate_instances); else if (strcasecmp ("AlwaysAppendDS", child->key) == 0) cf_util_get_boolean (child, &cb->always_append_ds); else if (strcasecmp ("EscapeCharacter", child->key) == 0)