- rename PostTimeoutSec parameter to Timeout
- change Timeout to take milliseconds rather than seconds, for the sake
of consistency: collectd allow working at the sub-second scale if need
be, so it's a shame to restrain this here.
- do *not* set the default timeout to the value of Interval. Rationale:
what matters here is that each POST request completes before the send
buffer fills up again. How fast the send buffer fills up completely
depends on how much data is collected. Interval is unrelated to this,
and unlike read plugins, I don't think it makes a good value to use as
the default timeout.
Sets bytes per second value for B<LowSpeedLimit> to make a decission if
connection is too slow. Default value is C<100>.
Sets bytes per second value for B<LowSpeedLimit> to make a decission if
connection is too slow. Default value is C<100>.
-=item B<PostTimeoutSec> I<Seconds>
+=item B<Timeout> I<Timeout>
+
+Sets the maximum time in milliseconds given for HTTP POST operations to
+complete. When this limit is reached, the POST operation will be aborted, and
+all the data in the current send buffer will probably be lost. Defaults to 0,
+which means the connection never times out.
-If defined, provided positive integer value will be used to set maximum time
-in seconds that you allow for transfer(http post) operation to take.
+The C<write_http> plugin regularly submits the collected values to the HTTP
+server. How frequently this happens depends on how much data you are collecting
+and the size of B<BufferSize>. The optimal value to set B<Timeout> to is
+slightly below this interval, which you can estimate by monitoring the network
+traffic between collectd and the HTTP server.
_Bool abort_on_slow;
int low_limit_bytes;
time_t interval;
_Bool abort_on_slow;
int low_limit_bytes;
time_t interval;
#define WH_FORMAT_COMMAND 0
#define WH_FORMAT_JSON 1
#define WH_FORMAT_COMMAND 0
#define WH_FORMAT_JSON 1
curl_easy_setopt (cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval);
}
curl_easy_setopt (cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval);
}
- if (cb->post_timeout > 0)
- curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT, cb->post_timeout);
+ if (cb->timeout > 0)
+ curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT_MS, cb->timeout);
curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
cb->format = WH_FORMAT_COMMAND;
cb->sslversion = CURL_SSLVERSION_DEFAULT;
cb->low_limit_bytes = WH_DEFAULT_LOW_LIMIT_BYTES_PER_SEC;
cb->format = WH_FORMAT_COMMAND;
cb->sslversion = CURL_SSLVERSION_DEFAULT;
cb->low_limit_bytes = WH_DEFAULT_LOW_LIMIT_BYTES_PER_SEC;
pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
cf_util_get_boolean (child,&cb->abort_on_slow);
else if (strcasecmp ("LowLimitBytesPerSec", child->key) == 0)
cf_util_get_int (child, &cb->low_limit_bytes);
cf_util_get_boolean (child,&cb->abort_on_slow);
else if (strcasecmp ("LowLimitBytesPerSec", child->key) == 0)
cf_util_get_int (child, &cb->low_limit_bytes);
- else if (strcasecmp ("PostTimeoutSec", child->key) == 0)
- cf_util_get_int (child, &cb->post_timeout);
+ else if (strcasecmp ("Timeout", child->key) == 0)
+ cf_util_get_int (child, &cb->timeout);
else
{
ERROR ("write_http plugin: Invalid configuration "
else
{
ERROR ("write_http plugin: Invalid configuration "
if (cb->abort_on_slow)
cb->interval = CDTIME_T_TO_TIME_T(plugin_get_interval());
if (cb->abort_on_slow)
cb->interval = CDTIME_T_TO_TIME_T(plugin_get_interval());
- if (cb->post_timeout == 0)
- //setting default timeout to plugin interval.
- cb->post_timeout = CDTIME_T_TO_TIME_T(plugin_get_interval());
-
/* Determine send_buffer_size. */
cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE;
if (buffer_size >= 1024)
/* Determine send_buffer_size. */
cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE;
if (buffer_size >= 1024)