summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 4261255)
raw | patch | inline | side by side (parent: 4261255)
author | Florian Forster <octo@collectd.org> | |
Mon, 3 Jun 2013 07:07:15 +0000 (09:07 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Mon, 3 Jun 2013 07:14:40 +0000 (09:14 +0200) |
Github: #336
src/collectd.conf.pod | patch | blob | history | |
src/write_riemann.c | patch | blob | history |
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index b66c4350305a8a217b2ebbdfbd78aa6341d54302..541af4ce9340b66450a06a21a5d582e3c9331c63 100644 (file)
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
Protocol UDP
StoreRates true
AlwaysAppendDS false
- Delay 10
+ TTLFactor 2.0
</Node>
Tag "foobar"
</Plugin>
identifies a metric in I<Riemann>. If set to B<false> (the default), this is
only done when there is more than one DS.
+=item B<TTLFactor> I<Factor>
+
+I<Riemann> events have a I<Time to Live> (TTL) which specifies how long each
+event is considered active. I<collectd> populates this field based on the
+metrics interval setting. This setting controls the factor with which the
+interval is multiplied to set the TTL. The default value is B<2.0>. Unless you
+know exactly what you're doing, you should only increase this setting from its
+default value.
+
=back
=item B<Tag> I<String>
diff --git a/src/write_riemann.c b/src/write_riemann.c
index d31a988e76de275fe52adb50d3d23557095e4de9..3e2ddd75b0d5caec3bbc40b5121b1de20ab819b4 100644 (file)
--- a/src/write_riemann.c
+++ b/src/write_riemann.c
#define RIEMANN_HOST "localhost"
#define RIEMANN_PORT "5555"
+#define RIEMANN_TTL_FACTOR 2.0
struct riemann_host {
char *name;
char *service;
_Bool use_tcp;
int s;
+ double ttl_factor;
int reference_count;
};
@@ -365,6 +367,7 @@ static Event *riemann_value_to_protobuf (struct riemann_host const *host, /* {{{
Event *event;
char name_buffer[5 * DATA_MAX_NAME_LEN];
char service_buffer[6 * DATA_MAX_NAME_LEN];
+ double ttl;
int i;
event = malloc (sizeof (*event));
@@ -379,7 +382,9 @@ static Event *riemann_value_to_protobuf (struct riemann_host const *host, /* {{{
event->host = strdup (vl->host);
event->time = CDTIME_T_TO_TIME_T (vl->time);
event->has_time = 1;
- event->ttl = CDTIME_T_TO_TIME_T (2 * vl->interval);
+
+ ttl = CDTIME_T_TO_DOUBLE (vl->interval) * host->ttl_factor;
+ event->ttl = (float) ttl;
event->has_ttl = 1;
riemann_event_add_attribute (event, "plugin", vl->plugin);
host->store_rates = 1;
host->always_append_ds = 0;
host->use_tcp = 0;
+ host->ttl_factor = RIEMANN_TTL_FACTOR;
status = cf_util_get_string (ci, &host->name);
if (status != 0) {
&host->always_append_ds);
if (status != 0)
break;
+ } else if (strcasecmp ("TTLFactor", child->key) == 0) {
+ double tmp = NAN;
+ status = cf_util_get_double (child, &tmp);
+ if (status != 0)
+ break;
+ if (tmp >= 2.0) {
+ host->ttl_factor = tmp;
+ } else if (tmp >= 1.0) {
+ NOTICE ("write_riemann plugin: The configured "
+ "TTLFactor is very small "
+ "(%.1f). A value of 2.0 or "
+ "greater is recommended.",
+ tmp);
+ host->ttl_factor = tmp;
+ } else if (tmp > 0.0) {
+ WARNING ("write_riemann plugin: The configured "
+ "TTLFactor is too small to be "
+ "useful (%.1f). I'll use it "
+ "since the user knows best, "
+ "but under protest.",
+ tmp);
+ host->ttl_factor = tmp;
+ } else { /* zero, negative and NAN */
+ ERROR ("write_riemann plugin: The configured "
+ "TTLFactor is invalid (%.1f).",
+ tmp);
+ }
} else {
WARNING("write_riemann plugin: ignoring unknown config "
"option: \"%s\"", child->key);