From 94aeb39cab64a16b34ca81653e06b10224828ad3 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Tue, 29 Nov 2016 09:22:51 +0100 Subject: [PATCH] write_tsdb plugin: Simplify the ResolveInterval configuration. The defaults have been set to the more reasonable 1*interval. --- src/collectd.conf.pod | 7 ++++--- src/write_tsdb.c | 29 +++++------------------------ 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 489b7e0b..ebd9d27f 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -8167,12 +8167,13 @@ When I connects to a TSDB node, it will request the hostname from DNS. This can become a problem if the TSDB node is unavailable or badly configured because collectd will request DNS in order to reconnect for every metric, which can flood your DNS. So you can cache the last value for -I seconds (default: B<600>, i.e. 10 minutes). +I seconds. +Defaults to the I of the I, e.g. 10Eseconds. You can also define a jitter, a random interval to wait in addition to I. This prevents all your collectd servers to resolve the -hostname at the same time when the connection fails. Default value is 15 * the -interval of the I (defaults to 10 seconds). +hostname at the same time when the connection fails. +Defaults to the I of the I, e.g. 10Eseconds. B If the DNS resolution has already been successful when the socket closes, the plugin will try to reconnect immediately with the cached diff --git a/src/write_tsdb.c b/src/write_tsdb.c index fea2b686..a3b3c3d4 100644 --- a/src/write_tsdb.c +++ b/src/write_tsdb.c @@ -67,20 +67,6 @@ #define WT_SEND_BUF_SIZE 1428 #endif -/* Default configuration */ - -/* WRITE_TSDB_DEFAULT_DNS_TTL is the time we keep the dns cached info - * (seconds) - */ -#define WRITE_TSDB_DEFAULT_DNS_TTL 600 - -/* WRITE_TSDB_DEFAULT_DNS_RANDOM_TTL helps define the max random - * time we keep the dns cached info : - * min = 0 - * max = WRITE_TSDB_DEFAULT_DNS_RANDOM_TTL * get_plugin_interval() - */ -#define WRITE_TSDB_DEFAULT_DNS_RANDOM_TTL 15 - /* * Private variables */ @@ -108,8 +94,7 @@ struct wt_callback { cdtime_t next_random_ttl; }; -static cdtime_t resolve_interval = - TIME_T_TO_CDTIME_T_STATIC(WRITE_TSDB_DEFAULT_DNS_TTL); +static cdtime_t resolve_interval = 0; static cdtime_t resolve_jitter = 0; /* @@ -637,7 +622,8 @@ static int wt_config_tsd(oconfig_item_t *ci) { } static int wt_config(oconfig_item_t *ci) { - _Bool config_random_ttl = 0; + if ((resolve_interval == 0) && (resolve_jitter == 0)) + resolve_interval = resolve_jitter = plugin_get_interval(); for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; @@ -646,20 +632,15 @@ static int wt_config(oconfig_item_t *ci) { wt_config_tsd(child); else if (strcasecmp("ResolveInterval", child->key) == 0) cf_util_get_cdtime(child, &resolve_interval); - else if (strcasecmp("ResolveJitter", child->key) == 0) { - config_random_ttl = 1; + else if (strcasecmp("ResolveJitter", child->key) == 0) cf_util_get_cdtime(child, &resolve_jitter); - } else { + else { ERROR("write_tsdb plugin: Invalid configuration " "option: %s.", child->key); } } - if (!config_random_ttl) - resolve_jitter = CDTIME_T_TO_DOUBLE(WRITE_TSDB_DEFAULT_DNS_RANDOM_TTL * - plugin_get_interval()); - return 0; } -- 2.11.0