X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fapache.c;h=23bba3ea6561e958c4f616fcf78e1aef9f7304cc;hb=799ef5daf3d87e11efe18922fec943af5e0e6ee2;hp=df1b560f092e89bbc8dd9cb65309fb55b20216f5;hpb=f9d51dc8fabe44f3cd17499713d63b518f0e1853;p=collectd.git diff --git a/src/apache.c b/src/apache.c index df1b560f..23bba3ea 100644 --- a/src/apache.c +++ b/src/apache.c @@ -202,7 +202,7 @@ static int config_set_boolean (int *ret_boolean, /* {{{ */ return (-1); } - if (ci->values[0].type != OCONFIG_TYPE_BOOLEAN) + if (ci->values[0].type == OCONFIG_TYPE_BOOLEAN) { if (ci->values[0].value.boolean) *ret_boolean = 1; @@ -313,7 +313,8 @@ static int config_add (oconfig_item_t *ci) (st->host != NULL) ? st->host : hostname_g, (st->name != NULL) ? st->name : "default"), - status = plugin_register_complex_read (callback_name, + status = plugin_register_complex_read (/* group = */ NULL, + /* name = */ callback_name, /* callback = */ apache_read_host, /* interval = */ NULL, /* user_data = */ &ud); @@ -405,6 +406,7 @@ static int init_host (apache_t *st) /* {{{ */ return (-1); } + curl_easy_setopt (st->curl, CURLOPT_NOSIGNAL, 1L); curl_easy_setopt (st->curl, CURLOPT_WRITEFUNCTION, apache_curl_callback); curl_easy_setopt (st->curl, CURLOPT_WRITEDATA, st); @@ -454,24 +456,25 @@ static int init_host (apache_t *st) /* {{{ */ } curl_easy_setopt (st->curl, CURLOPT_URL, st->url); - curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt (st->curl, CURLOPT_MAXREDIRS, 50L); if (st->verify_peer != 0) { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1L); } else { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0L); } if (st->verify_host != 0) { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2L); } else { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0L); } if (st->cacert != NULL) @@ -640,7 +643,7 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ assert (st->curl != NULL); st->apache_buffer_fill = 0; - if (curl_easy_perform (st->curl) != 0) + if (curl_easy_perform (st->curl) != CURLE_OK) { ERROR ("apache: curl_easy_perform failed: %s", st->apache_curl_error); @@ -685,8 +688,12 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ { if (strcmp (fields[0], "Scoreboard:") == 0) submit_scoreboard (fields[1], st); - else if (strcmp (fields[0], "BusyServers:") == 0) + else if ((strcmp (fields[0], "BusyServers:") == 0) /* Apache 1.* */ + || (strcmp (fields[0], "BusyWorkers:") == 0) /* Apache 2.* */) submit_gauge ("apache_connections", NULL, atol (fields[1]), st); + else if ((strcmp (fields[0], "IdleServers:") == 0) /* Apache 1.x */ + || (strcmp (fields[0], "IdleWorkers:") == 0) /* Apache 2.x */) + submit_gauge ("apache_idle_workers", NULL, atol (fields[1]), st); } } @@ -695,9 +702,18 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ return (0); } /* }}} int apache_read_host */ +static int apache_init (void) /* {{{ */ +{ + /* Call this while collectd is still single-threaded to avoid + * initialization issues in libgcrypt. */ + curl_global_init (CURL_GLOBAL_SSL); + return (0); +} /* }}} int apache_init */ + void module_register (void) { plugin_register_complex_config ("apache", config); + plugin_register_init ("apache", apache_init); } /* void module_register */ /* vim: set sw=8 noet fdm=marker : */