char escape_char;
_Bool store_rates;
+ _Bool separate_instances;
_Bool always_append_ds;
char send_buf[WG_SEND_BUF_SIZE];
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));
cb->send_buf_fill += message_len;
cb->send_buf_free -= message_len;
- DEBUG ("write_graphite plugin: <%s:%s> buf %zu/%zu (%g%%) \"%s\"",
+ DEBUG ("write_graphite plugin: [%s]:%s buf %zu/%zu (%.1f %%) \"%s\"",
cb->node,
cb->service,
cb->send_buf_fill, sizeof (cb->send_buf),
{
struct wg_callback *cb;
user_data_t user_data;
+ char callback_name[DATA_MAX_NAME_LEN];
int i;
cb = malloc (sizeof (*cb));
cb->prefix = NULL;
cb->postfix = NULL;
cb->escape_char = WG_DEFAULT_ESCAPE;
+ cb->store_rates = 1;
pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
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)
}
}
- DEBUG ("write_graphite: Registering write callback to carbon agent %s:%s",
- cb->node ? cb->node : WG_DEFAULT_NODE,
- cb->service ? cb->service : WG_DEFAULT_SERVICE);
+ ssnprintf (callback_name, sizeof (callback_name), "write_graphite/%s/%s",
+ cb->node != NULL ? cb->node : WG_DEFAULT_NODE,
+ cb->service != NULL ? cb->service : WG_DEFAULT_SERVICE);
memset (&user_data, 0, sizeof (user_data));
user_data.data = cb;
- user_data.free_func = NULL;
- plugin_register_flush ("write_graphite", wg_flush, &user_data);
-
user_data.free_func = wg_callback_free;
- plugin_register_write ("write_graphite", wg_write, &user_data);
+ plugin_register_write (callback_name, wg_write, &user_data);
+
+ user_data.free_func = NULL;
+ plugin_register_flush (callback_name, wg_flush, &user_data);
return (0);
}