From dc03739e9e9f4a19275b9c5028ee840276a0d646 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 08:22:02 +0100 Subject: [PATCH 1/9] configure: add varnish4 presence detection --- configure.ac | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index 9dd30c7899..bee86bf3ae 100644 --- a/configure.ac +++ b/configure.ac @@ -4590,25 +4590,18 @@ fi if test "x$with_libvarnish" = "xyes" then SAVE_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags" - AC_CHECK_HEADERS(varnish/varnishapi.h, [], [with_libvarnish="no (varnish/varnishapi.h not found)"]) - - CPPFLAGS="$SAVE_CPPFLAGS" -fi -if test "x$with_libvarnish" = "xyes" -then - SAVE_CPPFLAGS="$CPPFLAGS" - #SAVE_LDFLAGS="$LDFLAGS" CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags" - #LDFLAGS="$LDFLAGS $with_libvarnish_libs" - AC_CHECK_HEADERS(varnish/vsc.h, - [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support])], - [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])]) + AC_CHECK_HEADERS(varnish/vapi/vsc.h, + [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])], + [AC_CHECK_HEADERS(varnish/vsc.h, + [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support])], + [AC_CHECK_HEADERS(varnish/varnishapi.h, + [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])], + [with_libvarnish="no (found none of the varnish header files)"])])]) CPPFLAGS="$SAVE_CPPFLAGS" - #LDFLAGS="$SAVE_LDFLAGS" fi if test "x$with_libvarnish" = "xyes" then From 09b9f40fc28ea15db0e1c31790fca5fa876fec4a Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 08:32:53 +0100 Subject: [PATCH 2/9] varnish: bare minimum changes to support varnish4 --- src/varnish.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/varnish.c b/src/varnish.c index 3a8dddd78a..f349bf5af0 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -28,14 +28,20 @@ #include "plugin.h" #include "configfile.h" -#include +#if HAVE_VARNISH_V4 +#include +#include +typedef struct VSC_C_main c_varnish_stats_t; +#endif #if HAVE_VARNISH_V3 -# include +#include +#include typedef struct VSC_C_main c_varnish_stats_t; #endif #if HAVE_VARNISH_V2 +#include typedef struct varnish_stats c_varnish_stats_t; #endif @@ -465,7 +471,7 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ } } /* }}} void varnish_monitor */ -#if HAVE_VARNISH_V3 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 static int varnish_read (user_data_t *ud) /* {{{ */ { struct VSM_data *vd; @@ -479,7 +485,9 @@ static int varnish_read (user_data_t *ud) /* {{{ */ conf = ud->data; vd = VSM_New(); +#if HAVE_VARNISH_V3 VSC_Setup(vd); +#endif if (conf->instance != NULL) { @@ -495,14 +503,22 @@ static int varnish_read (user_data_t *ud) /* {{{ */ } } +#if HAVE_VARNISH_V3 if (VSC_Open (vd, /* diag = */ 1)) +#else /* if HAVE_VARNISH_V4 */ + if (VSM_Open (vd)) +#endif { ERROR ("varnish plugin: Unable to load statistics."); return (-1); } +#if HAVE_VARNISH_V3 stats = VSC_Main(vd); +#else /* if HAVE_VARNISH_V4 */ + stats = VSC_Main(vd, NULL); +#endif varnish_monitor (conf, stats); VSM_Close (vd); From a9a8e4bcd0e688e054ae816813475c8784cc4012 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 15:46:20 +0100 Subject: [PATCH 3/9] varnish: adapt to metrics renames & deprecations in varnish4 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 | 93 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 9 deletions(-) diff --git a/src/varnish.c b/src/varnish.c index f349bf5af0..e3b6cec14d 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -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 From e937457838e63cc0422396222552020ff72c0d75 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 17:55:41 +0100 Subject: [PATCH 4/9] varnish: add a couple of metrics available both in V3 & V4 --- src/varnish.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/varnish.c b/src/varnish.c index e3b6cec14d..bdff16a95f 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -435,6 +435,8 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_gauge (conf->instance, "struct", "objects", "vampireobject", stats->n_vampireobject); /* N struct objectcore */ varnish_submit_gauge (conf->instance, "struct", "objects", "objectcore", stats->n_objectcore); + /* N struct waitinglist */ + varnish_submit_gauge (conf->instance, "struct", "objects", "waitinglist", stats->n_waitinglist); #endif /* N struct objecthead */ varnish_submit_gauge (conf->instance, "struct", "objects", "objecthead", stats->n_objecthead); @@ -484,6 +486,12 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ 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 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 + /* Gzip operations */ + varnish_submit_derive (conf->instance, "totals", "total_operations", "gzip", stats->n_gzip); + /* Gunzip operations */ + varnish_submit_derive (conf->instance, "totals", "total_operations", "gunzip", stats->n_gunzip); #endif } @@ -503,6 +511,10 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_gauge (conf->instance, "vcl", "vcl", "avail_vcl", stats->n_vcl_avail); /* N vcl discarded */ varnish_submit_gauge (conf->instance, "vcl", "vcl", "discarded_vcl", stats->n_vcl_discard); +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 + /* Loaded VMODs */ + varnish_submit_gauge (conf->instance, "vcl", "objects", "vmod", stats->vmods); +#endif } if (conf->collect_workers) From 70d4799e842e29d270fe601ef2e21131365737ee Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 18:28:56 +0100 Subject: [PATCH 5/9] varnish: monitor 2 purge-relatad metrics added in V4 --- src/varnish.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/varnish.c b/src/varnish.c index bdff16a95f..517258e2cf 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -271,7 +271,10 @@ 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 +#if HAVE_VARNISH_V4 + /* N purged objects */ + varnish_submit_derive (conf->instance, "objects", "total_objects", "purged", stats->n_obj_purged); +#else /* Objects sent with sendfile */ varnish_submit_derive (conf->instance, "objects", "total_objects", "sent_sendfile", stats->n_objsendfile); /* Objects sent with write */ @@ -481,6 +484,8 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ 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); + /* Number of purge operations */ + varnish_submit_derive (conf->instance, "totals", "total_operations", "purges", stats->n_purges); #else /* Total header bytes */ varnish_submit_derive (conf->instance, "totals", "total_bytes", "header-bytes", stats->s_hdrbytes); From 0bbb85cf0a4d087409b1887f5073cd25d35e383c Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 18:35:55 +0100 Subject: [PATCH 6/9] varnish: monitor VSM usage stats, made available in V4 --- src/collectd.conf.in | 1 + src/collectd.conf.pod | 6 ++++++ src/varnish.c | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/collectd.conf.in b/src/collectd.conf.in index 80e1d5cd4a..0583c00633 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -1179,6 +1179,7 @@ # CollectUptime false # CollectVCL false # CollectWorkers false +# CollectVSM false # Varnish 4 only # # diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index ac0ff2abb0..1ba8500648 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -6322,6 +6322,7 @@ Synopsis: CollectSM false CollectTotals false CollectWorkers false + CollectVSM false @@ -6431,6 +6432,11 @@ Number of total (available + discarded) VCL (config files). False by default. Collect statistics about worker threads. False by default. +=item B B|B + +Collect statistics about Varnish's shared memory usage (used by the logging and +statisticss subsystems). False by default. + =back =head2 Plugin C diff --git a/src/varnish.c b/src/varnish.c index 517258e2cf..38efcdc892 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -78,6 +78,9 @@ struct user_config_s { #endif _Bool collect_vcl; _Bool collect_workers; +#if HAVE_VARNISH_V4 + _Bool collect_vsm; +#endif }; typedef struct user_config_s user_config_t; /* }}} */ @@ -561,6 +564,23 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ #endif #endif } + +#if HAVE_VARNISH_V4 + if (conf->collect_vsm) + { + /* Free VSM space */ + varnish_submit_gauge (conf->instance, "vsm", "bytes", "free", stats->vsm_free); + /* Used VSM space */ + varnish_submit_gauge (conf->instance, "vsm", "bytes", "used", stats->vsm_used); + /* Cooling VSM space */ + varnish_submit_gauge (conf->instance, "vsm", "bytes", "cooling", stats->vsm_cooling); + /* Overflow VSM space */ + varnish_submit_gauge (conf->instance, "vsm", "bytes", "overflow", stats->vsm_overflow); + /* Total overflowed VSM space */ + varnish_submit_derive (conf->instance, "vsm", "total_bytes", "overflowed", stats->vsm_overflowed); + } +#endif + } /* }}} void varnish_monitor */ #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 @@ -688,6 +708,9 @@ static int varnish_config_apply_default (user_config_t *conf) /* {{{ */ #endif conf->collect_vcl = 0; conf->collect_workers = 0; +#if HAVE_VARNISH_V4 + conf->collect_vsm = 0; +#endif return (0); } /* }}} int varnish_config_apply_default */ @@ -815,6 +838,10 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */ cf_util_get_boolean (child, &conf->collect_vcl); else if (strcasecmp ("CollectWorkers", child->key) == 0) cf_util_get_boolean (child, &conf->collect_workers); +#if HAVE_VARNISH_V4 + else if (strcasecmp ("CollectVSM", child->key) == 0) + cf_util_get_boolean (child, &conf->collect_vsm); +#endif else { WARNING ("Varnish plugin: Ignoring unknown " @@ -853,7 +880,11 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */ && !conf->collect_uptime #endif && !conf->collect_vcl - && !conf->collect_workers) + && !conf->collect_workers +#if HAVE_VARNISH_V4 + && !conf->collect_vsm +#endif + ) { WARNING ("Varnish plugin: No metric has been configured for " "instance \"%s\". Disabling this instance.", From 8dcb711f702913162afdd653591816886fe30d72 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Tue, 28 Oct 2014 19:24:45 +0100 Subject: [PATCH 7/9] varnish: correct an erroneous type Affects Varnish 3 only. --- src/varnish.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/varnish.c b/src/varnish.c index 38efcdc892..8e6d95eefa 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -550,7 +550,7 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ /* worker threads limited */ varnish_submit_derive (conf->instance, "workers", "total_threads", "limited", stats->n_wrk_max); /* dropped work requests */ - varnish_submit_derive (conf->instance, "workers", "total_requests", "dropped", stats->n_wrk_drop); + varnish_submit_derive (conf->instance, "workers", "total_threads", "dropped", stats->n_wrk_drop); #ifdef HAVE_VARNISH_V2 /* queued work requests */ varnish_submit_derive (conf->instance, "workers", "total_requests", "queued", stats->n_wrk_queue); From a056d347e1c427512c2f4050161d96748e3b34fb Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Wed, 29 Oct 2014 00:38:21 +0100 Subject: [PATCH 8/9] varnish: manpage & example cleanup Consitently alphabetically ordered options and ensured all version limitations are mentioned. --- src/collectd.conf.in | 10 ++++---- src/collectd.conf.pod | 58 +++++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/src/collectd.conf.in b/src/collectd.conf.in index 0583c00633..19b3854e17 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -1159,27 +1159,27 @@ # If you prefer defining another instance you can do # so by using # -# CollectCache true # CollectBackend true -# CollectBan false # Varnish 3 only +# CollectBan false # Varnish 3 and above +# CollectCache true # CollectConnections true # CollectDirectorDNS false # Varnish 3 only -# CollectSHM true # CollectESI false # CollectFetch false # CollectHCB false # CollectObjects false # CollectPurge false # Varnish 2 only # CollectSession false +# CollectSHM true # CollectSMA false # Varnish 2 only # CollectSMS false # CollectSM false # Varnish 2 only # CollectStruct false # CollectTotals false -# CollectUptime false +# CollectUptime false # Varnish 3 and above # CollectVCL false -# CollectWorkers false # CollectVSM false # Varnish 4 only +# CollectWorkers false # # diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 1ba8500648..dac1842ba4 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -6310,19 +6310,27 @@ Synopsis: + CollectBackend true + CollectBan false CollectCache true CollectConnections true - CollectBackend true - CollectSHM true + CollectDirectorDNS false CollectESI false CollectFetch false CollectHCB false + CollectObjects false + CollectPurge false + CollectSession false + CollectSHM true CollectSMA false CollectSMS false CollectSM false + CollectStruct false CollectTotals false - CollectWorkers false + CollectUptime false + CollectVCL false CollectVSM false + CollectWorkers false @@ -6335,29 +6343,24 @@ Inside each EBE blocks, the following options are recognized: =over 4 -=item B B|B - -Cache hits and misses. True by default. - -=item B B|B - -Number of client connections received, accepted and dropped. True by default. - =item B B|B Back-end connection statistics, such as successful, reused, and closed connections. True by default. -=item B B|B - -Statistics about the shared memory log, a memory region to store -log messages which is flushed to disk when full. True by default. - =item B B|B Statistics about ban operations, such as number of bans added, retired, and number of objects tested against ban operations. Only available with Varnish -3.x. False by default. +3.x and above. False by default. + +=item B B|B + +Cache hits and misses. True by default. + +=item B B|B + +Number of client connections received, accepted and dropped. True by default. =item B B|B @@ -6391,7 +6394,14 @@ number of objects tested against purge operations. Only available with Varnish =item B B|B Client session statistics. Number of past and current sessions, session herd and -linger counters, etc. False by default. +linger counters, etc. False by default. Note that if using Varnish 4.x, some +metrics found in the Connections and Threads sections with previous versions of +Varnish have been moved here. + +=item B B|B + +Statistics about the shared memory log, a memory region to store +log messages which is flushed to disk when full. True by default. =item B B|B @@ -6422,20 +6432,20 @@ the number of requests and bytes transferred. False by default. =item B B|B -Varnish uptime. False by default. +Varnish uptime. Only available with Varnish 3.x and above. False by default. =item B B|B Number of total (available + discarded) VCL (config files). False by default. -=item B B|B - -Collect statistics about worker threads. False by default. - =item B B|B Collect statistics about Varnish's shared memory usage (used by the logging and -statisticss subsystems). False by default. +statistics subsystems). Only available with Varnish 4.x. False by default. + +=item B B|B + +Collect statistics about worker threads. False by default. =back From 3949234bad21a8dfd3c4a8298cbef2c7083170da Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Wed, 29 Oct 2014 16:16:46 +0100 Subject: [PATCH 9/9] varnish: add some detail & references to manpage --- src/collectd.conf.pod | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index dac1842ba4..60cc9b5256 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -6305,6 +6305,10 @@ Take the UUID from the given file (default I). =head2 Plugin C The I collects information about Varnish, an HTTP accelerator. +It collects a subset of the values displayed by L, and +organizes them in categories which can be enabled or disabled. Currently only +metrics shown in L's I
section are collected. The exact +meaning of each metric can be found in L. Synopsis: