Code

varnish: adapt to metrics renames & deprecations in varnish4
authorMarc Fournier <marc.fournier@camptocamp.com>
Tue, 28 Oct 2014 14:46:20 +0000 (15:46 +0100)
committerMarc Fournier <marc.fournier@camptocamp.com>
Tue, 28 Oct 2014 14:47:26 +0000 (15:47 +0100)
Summary of changes:
- connections: "accepted" & "dropped" are now found in the session section
- dirdns: doesn't exist in varnish 4 anymore
- objects: "n_obj*" were removed from varnish 4
- ban: "obj", "req" & "completed" bans were added. As a lot of new
  "tested" metrics are available, so we only collectd the overall total
  now
- session: metrics from "connections" and "threads" categories were
  moved here
- struct: "n_sess*" were removed
- totals: new, more detailed *bytes metrics were made available
- threads: new metrics were made available. "queued" was moved the
  session section.

src/varnish.c

index f349bf5af0a6965863cb1f4c5c858c50011bfcfc..e3b6cec14d6a5c73484a6969b965922a1e935faf 100644 (file)
@@ -73,7 +73,7 @@ struct user_config_s {
 #endif
        _Bool collect_struct;
        _Bool collect_totals;
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
        _Bool collect_uptime;
 #endif
        _Bool collect_vcl;
@@ -147,10 +147,12 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
 
        if (conf->collect_connections)
        {
+#ifndef HAVE_VARNISH_V4
                /* Client connections accepted */
                varnish_submit_derive (conf->instance, "connections", "connections", "accepted", stats->client_conn);
                /* Connection dropped, no sess */
                varnish_submit_derive (conf->instance, "connections", "connections", "dropped" , stats->client_drop);
+#endif
                /* Client requests received    */
                varnish_submit_derive (conf->instance, "connections", "connections", "received", stats->client_req);
        }
@@ -231,7 +233,7 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                varnish_submit_derive (conf->instance, "fetch", "http_requests", "zero"       , stats->fetch_zero);
                /* Fetch failed              */
                varnish_submit_derive (conf->instance, "fetch", "http_requests", "failed"     , stats->fetch_failed);
-#if HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
                /* Fetch no body (1xx)       */
                varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_1xx", stats->fetch_1xx);
                /* Fetch no body (204)       */
@@ -269,12 +271,14 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
 #endif
                /* HTTP header overflows         */
                varnish_submit_derive (conf->instance, "objects", "total_objects", "header_overflow",    stats->losthdr);
+#if !HAVE_VARNISH_V4
                /* Objects sent with sendfile    */
                varnish_submit_derive (conf->instance, "objects", "total_objects", "sent_sendfile",      stats->n_objsendfile);
                /* Objects sent with write       */
                varnish_submit_derive (conf->instance, "objects", "total_objects", "sent_write",         stats->n_objwrite);
                /* Objects overflowing workspace */
                varnish_submit_derive (conf->instance, "objects", "total_objects", "workspace_overflow", stats->n_objoverflow);
+#endif
        }
 
 #if HAVE_VARNISH_V2
@@ -293,7 +297,8 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                /* N duplicate purges removed */
                varnish_submit_derive (conf->instance, "purge", "total_operations", "duplicate",        stats->n_purge_dups);
        }
-#else
+#endif
+#if HAVE_VARNISH_V3
        if (conf->collect_ban)
        {
                /* N total active bans      */
@@ -310,6 +315,27 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                varnish_submit_derive (conf->instance, "ban", "total_operations", "duplicate",      stats->n_ban_dups);
        }
 #endif
+#if HAVE_VARNISH_V4
+       if (conf->collect_ban)
+       {
+               /* N total active bans      */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "total",          stats->bans);
+               /* N new bans added         */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "added",          stats->bans_added);
+               /* N bans using obj */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "obj",            stats->bans_obj);
+               /* N bans using req */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "req",            stats->bans_req);
+               /* N new bans completed     */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "completed",      stats->bans_completed);
+               /* N old bans deleted       */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "deleted",        stats->bans_deleted);
+               /* N objects tested         */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "tested",         stats->bans_tested);
+               /* N duplicate bans removed */
+               varnish_submit_derive (conf->instance, "ban", "total_operations", "duplicate",      stats->bans_dups);
+       }
+#endif
 
        if (conf->collect_session)
        {
@@ -319,8 +345,21 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                varnish_submit_derive (conf->instance, "session", "total_operations", "pipeline",  stats->sess_pipeline);
                /* Session Read Ahead */
                varnish_submit_derive (conf->instance, "session", "total_operations", "readahead", stats->sess_readahead);
+#if HAVE_VARNISH_V4
+               /* Sessions accepted */
+               varnish_submit_derive (conf->instance, "session", "total_operations", "accepted",  stats->sess_conn);
+               /* Sessions dropped for thread */
+               varnish_submit_derive (conf->instance, "session", "total_operations", "dropped",   stats->sess_drop);
+               /* Sessions accept failure */
+               varnish_submit_derive (conf->instance, "session", "total_operations", "failed",    stats->sess_fail);
+               /* Sessions pipe overflow */
+               varnish_submit_derive (conf->instance, "session", "total_operations", "overflow",  stats->sess_pipe_overflow);
+               /* Sessions queued for thread */
+               varnish_submit_derive (conf->instance, "session", "total_operations", "queued",    stats->sess_queued);
+#else
                /* Session Linger     */
                varnish_submit_derive (conf->instance, "session", "total_operations", "linger",    stats->sess_linger);
+#endif
                /* Session herd       */
                varnish_submit_derive (conf->instance, "session", "total_operations", "herd",      stats->sess_herd);
        }
@@ -383,13 +422,15 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
 
        if (conf->collect_struct)
        {
+#if !HAVE_VARNISH_V4
                /* N struct sess_mem       */
                varnish_submit_gauge (conf->instance, "struct", "current_sessions", "sess_mem",  stats->n_sess_mem);
                /* N struct sess           */
                varnish_submit_gauge (conf->instance, "struct", "current_sessions", "sess",      stats->n_sess);
+#endif
                /* N struct object         */
                varnish_submit_gauge (conf->instance, "struct", "objects", "object",             stats->n_object);
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
                /* N unresurrected objects */
                varnish_submit_gauge (conf->instance, "struct", "objects", "vampireobject",      stats->n_vampireobject);
                /* N struct objectcore     */
@@ -421,13 +462,32 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                varnish_submit_derive (conf->instance, "totals", "total_operations", "pass",    stats->s_pass);
                /* Total fetch */
                varnish_submit_derive (conf->instance, "totals", "total_operations", "fetches", stats->s_fetch);
+#if HAVE_VARNISH_V4
+               /* Total synth */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "synth",       stats->s_synth);
+               /* Request header bytes */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "req_header",  stats->s_req_hdrbytes);
+               /* Request body byte */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "req_body",    stats->s_req_bodybytes);
+               /* Response header bytes */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "resp_header", stats->s_resp_hdrbytes);
+               /* Response body byte */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "resp_body",   stats->s_resp_bodybytes);
+               /* Pipe request header bytes */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_header", stats->s_pipe_hdrbytes);
+               /* Piped bytes from client */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_in",     stats->s_pipe_in);
+               /* Piped bytes to client */
+               varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_out",    stats->s_pipe_out);
+#else
                /* Total header bytes */
                varnish_submit_derive (conf->instance, "totals", "total_bytes", "header-bytes", stats->s_hdrbytes);
                /* Total body byte */
                varnish_submit_derive (conf->instance, "totals", "total_bytes", "body-bytes",   stats->s_bodybytes);
+#endif
        }
 
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
        if (conf->collect_uptime)
        {
                /* Client uptime */
@@ -447,6 +507,20 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
 
        if (conf->collect_workers)
        {
+#ifdef HAVE_VARNISH_V4
+               /* total number of threads */
+               varnish_submit_gauge (conf->instance, "workers", "threads", "worker",             stats->threads);
+               /* threads created */
+               varnish_submit_derive (conf->instance, "workers", "total_threads", "created",     stats->threads_created);
+               /* thread creation failed */
+               varnish_submit_derive (conf->instance, "workers", "total_threads", "failed",      stats->threads_failed);
+               /* threads hit max */
+               varnish_submit_derive (conf->instance, "workers", "total_threads", "limited",     stats->threads_limited);
+               /* threads destroyed */
+               varnish_submit_derive (conf->instance, "workers", "total_threads", "dropped",     stats->threads_destroyed);
+               /* length of session queue */
+               varnish_submit_derive (conf->instance, "workers", "queue_length",  "threads",     stats->thread_queue_len);
+#else
                /* worker threads */
                varnish_submit_gauge (conf->instance, "workers", "threads", "worker",             stats->n_wrk);
                /* worker threads created */
@@ -462,11 +536,12 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */
                varnish_submit_derive (conf->instance, "workers", "total_requests", "queued",     stats->n_wrk_queue);
                /* overflowed work requests */
                varnish_submit_derive (conf->instance, "workers", "total_requests", "overflowed", stats->n_wrk_overflow);
-#else
+#else /* HAVE_VARNISH_V3 */
                /* queued work requests */
                varnish_submit_derive (conf->instance, "workers", "total_requests", "queued",       stats->n_wrk_queued);
                /* work request queue length */
                varnish_submit_derive (conf->instance, "workers", "total_requests", "queue_length", stats->n_wrk_lqueue);
+#endif
 #endif
        }
 } /* }}} void varnish_monitor */
@@ -591,7 +666,7 @@ static int varnish_config_apply_default (user_config_t *conf) /* {{{ */
        conf->collect_sms         = 0;
        conf->collect_struct      = 0;
        conf->collect_totals      = 0;
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
        conf->collect_uptime      = 0;
 #endif
        conf->collect_vcl         = 0;
@@ -715,7 +790,7 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
                        cf_util_get_boolean (child, &conf->collect_struct);
                else if (strcasecmp ("CollectTotals", child->key) == 0)
                        cf_util_get_boolean (child, &conf->collect_totals);
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
                else if (strcasecmp ("CollectUptime", child->key) == 0)
                        cf_util_get_boolean (child, &conf->collect_uptime);
 #endif
@@ -757,7 +832,7 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
 #endif
                        && !conf->collect_struct
                        && !conf->collect_totals
-#ifdef HAVE_VARNISH_V3
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
                        && !conf->collect_uptime
 #endif
                        && !conf->collect_vcl