#include "collectd.h"
#include "plugin.h"
#include "common.h"
+#include "utils_cache.h"
/*
* Private variables
*/
static const char *config_keys[] =
{
- "DataDir"
+ "DataDir",
+ "StoreRates"
};
static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
static char *datadir = NULL;
+static int store_rates = 0;
static int value_list_to_string (char *buffer, int buffer_len,
const data_set_t *ds, const value_list_t *vl)
int offset;
int status;
int i;
+ gauge_t *rates = NULL;
- memset (buffer, '\0', sizeof (buffer_len));
+ memset (buffer, '\0', buffer_len);
status = snprintf (buffer, buffer_len, "%u", (unsigned int) vl->time);
if ((status < 1) || (status >= buffer_len))
return (-1);
if (ds->ds[i].type == DS_TYPE_COUNTER)
- status = snprintf (buffer + offset, buffer_len - offset,
- ",%llu", vl->values[i].counter);
- else
+ {
+ if (store_rates == 0)
+ {
+ status = snprintf (buffer + offset,
+ buffer_len - offset,
+ ",%llu",
+ vl->values[i].counter);
+ }
+ else /* if (store_rates == 1) */
+ {
+ if (rates == NULL)
+ rates = uc_get_rate (ds, vl);
+ if (rates == NULL)
+ {
+ WARNING ("csv plugin: "
+ "uc_get_rate failed.");
+ return (-1);
+ }
+ status = snprintf (buffer + offset,
+ buffer_len - offset,
+ ",%lf", rates[i]);
+ }
+ }
+ else /* if (ds->ds[i].type == DS_TYPE_GAUGE) */
+ {
status = snprintf (buffer + offset, buffer_len - offset,
",%lf", vl->values[i].gauge);
+ }
if ((status < 1) || (status >= (buffer_len - offset)))
+ {
+ sfree (rates);
return (-1);
+ }
offset += status;
} /* for ds->ds_num */
+ sfree (rates);
return (0);
} /* int value_list_to_string */
}
}
}
+ else if (strcasecmp ("StoreRates", key) == 0)
+ {
+ if ((strcasecmp ("True", value) == 0)
+ || (strcasecmp ("Yes", value) == 0)
+ || (strcasecmp ("On", value) == 0))
+ {
+ store_rates = 1;
+ }
+ else
+ {
+ store_rates = 0;
+ }
+ }
else
{
return (-1);
if (value_list_to_filename (filename, sizeof (filename), ds, vl) != 0)
return (-1);
- DEBUG ("filename = %s;", filename);
+ DEBUG ("csv plugin: csv_write: filename = %s;", filename);
if (value_list_to_string (values, sizeof (values), ds, vl) != 0)
return (-1);
plugin_register_config ("csv", csv_config,
config_keys, config_keys_num);
plugin_register_write ("csv", csv_write);
-}
+} /* void module_register */