From: Pierre-Yves Ritschard Date: Wed, 30 Jul 2014 16:08:32 +0000 (+0200) Subject: Merge pull request #685 from teftin/curl-json-per-url-interval X-Git-Tag: collectd-5.5.0~242 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=eca80da0ace9897fda8842fd64ae5006e89bf420;hp=8a3968c739163a86e26c3c5915fd84f1eca34ee0;p=collectd.git Merge pull request #685 from teftin/curl-json-per-url-interval per-url intervals for curl_json --- diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 7674847d..cc556a0d 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -1339,6 +1339,11 @@ The following options are valid within B blocks: Sets the plugin instance to I. +=item B I + +Sets the interval (in seconds) in which the values will be collected from this +URL. By default the global B setting will be used. + =item B I =item B I diff --git a/src/curl_json.c b/src/curl_json.c index 029c8027..6a015902 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -77,6 +77,7 @@ struct cj_s /* {{{ */ char *cacert; struct curl_slist *headers; char *post_body; + cdtime_t interval; CURL *curl; char curl_errbuf[CURL_ERROR_SIZE]; @@ -697,6 +698,8 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */ status = cf_util_get_string (child, &db->post_body); else if (strcasecmp ("Key", child->key) == 0) status = cj_config_add_key (db, child); + else if (strcasecmp ("Interval", child->key) == 0) + status = cf_util_get_cdtime(child, &db->interval); else { WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key); @@ -724,6 +727,9 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */ { user_data_t ud; char cb_name[DATA_MAX_NAME_LEN]; + struct timespec interval = { 0, 0 }; + + CDTIME_T_TO_TIMESPEC (db->interval, &interval); if (db->instance == NULL) db->instance = strdup("default"); @@ -739,7 +745,8 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */ db->instance, db->url ? db->url : db->sock); plugin_register_complex_read (/* group = */ NULL, cb_name, cj_read, - /* interval = */ NULL, &ud); + /* interval = */ (db->interval > 0) ? &interval : NULL, + &ud); } else { @@ -822,6 +829,9 @@ static void cj_submit (cj_t *db, cj_key_t *key, value_t *value) /* {{{ */ sstrncpy (vl.plugin_instance, db->instance, sizeof (vl.plugin_instance)); sstrncpy (vl.type, key->type, sizeof (vl.type)); + if (db->interval > 0) + vl.interval = db->interval; + plugin_dispatch_values (&vl); } /* }}} int cj_submit */