From 1c790e620e1d9b8f550290959e7cd8ec6ba549e9 Mon Sep 17 00:00:00 2001 From: vzubko Date: Fri, 28 Aug 2015 11:23:21 -0700 Subject: [PATCH] Log http error codes other than 200. New config option LogHttpError [true/false]. --- src/collectd.conf.pod | 4 ++++ src/write_http.c | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index aaeeaf41..683ec8e3 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -7482,6 +7482,10 @@ 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. +=item B B|B + +Enables printing of HTTP error code to log. Turned off by default. + The C 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. The optimal value to set B to is diff --git a/src/write_http.c b/src/write_http.c index ed596bbf..868bca84 100644 --- a/src/write_http.c +++ b/src/write_http.c @@ -59,6 +59,7 @@ struct wh_callback_s char *clientkeypass; long sslversion; _Bool store_rates; + _Bool log_http_error; int low_speed_limit; time_t low_speed_time; int timeout; @@ -80,6 +81,19 @@ struct wh_callback_s }; typedef struct wh_callback_s wh_callback_t; +static void wh_log_http_error (wh_callback_t *cb) +{ + if (!cb->log_http_error) + return; + + long http_code = 0; + + curl_easy_getinfo (cb->curl, CURLINFO_RESPONSE_CODE, &http_code); + + if (http_code != 200) + INFO ("write_http plugin: HTTP Error code: %lu", http_code); +} + static void wh_reset_buffer (wh_callback_t *cb) /* {{{ */ { memset (cb->send_buffer, 0, cb->send_buffer_size); @@ -101,6 +115,9 @@ static int wh_send_buffer (wh_callback_t *cb) /* {{{ */ curl_easy_setopt (cb->curl, CURLOPT_POSTFIELDS, cb->send_buffer); status = curl_easy_perform (cb->curl); + + wh_log_http_error (cb); + if (status != CURLE_OK) { ERROR ("write_http plugin: curl_easy_perform failed with " @@ -538,6 +555,7 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */ cb->sslversion = CURL_SSLVERSION_DEFAULT; cb->low_speed_limit = 0; cb->timeout = 0; + cb->log_http_error = 0; pthread_mutex_init (&cb->send_lock, /* attr = */ NULL); @@ -609,6 +627,8 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */ cf_util_get_int (child, &cb->low_speed_limit); else if (strcasecmp ("Timeout", child->key) == 0) cf_util_get_int (child, &cb->timeout); + else if (strcasecmp ("LogHttpError", child->key) == 0) + cf_util_get_boolean (child, &cb->log_http_error); else { ERROR ("write_http plugin: Invalid configuration " -- 2.11.0