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<ResolveInterval> seconds (default: B<600>, i.e. 10 minutes).
+I<ResolveInterval> seconds.
+Defaults to the I<Interval> of the I<write_tsdb plugin>, e.g. 10E<nbsp>seconds.
You can also define a jitter, a random interval to wait in addition to
I<ResolveInterval>. 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<write_tsdb plugin> (defaults to 10 seconds).
+hostname at the same time when the connection fails.
+Defaults to the I<Interval> of the I<write_tsdb plugin>, e.g. 10E<nbsp>seconds.
B<Note:> If the DNS resolution has already been successful when the socket
closes, the plugin will try to reconnect immediately with the cached
#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
*/
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;
/*
}
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;
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;
}