From b208ddc7d08978f4cf52364c1935e94a0479ee42 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Wed, 4 Nov 2015 21:12:36 +0100 Subject: [PATCH] varnish: isolate varnish v2 code Segregating v2-specific code will allow reworking the v3 and v4 parts, while ensuring backwards compatibility with v2. The downside is that this leads to a large chunk of mostly duplicate code. That said, my suggestion would be to drop support for varnish v2 in collectd 5.6. NB: this commit breaks v3 and v4 support. --- src/varnish.c | 189 +------------------------------------------------- 1 file changed, 2 insertions(+), 187 deletions(-) diff --git a/src/varnish.c b/src/varnish.c index 10892223..45e7f9c6 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -135,6 +135,7 @@ static int varnish_submit_derive (const char *plugin_instance, /* {{{ */ return (varnish_submit (plugin_instance, category, type, type_instance, value)); } /* }}} int varnish_submit_derive */ +#if HAVE_VARNISH_V2 static void varnish_monitor (const user_config_t *conf, /* {{{ */ const c_varnish_stats_t *stats) { @@ -150,41 +151,20 @@ 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); } -#ifdef HAVE_VARNISH_V3 - if (conf->collect_dirdns) - { - /* DNS director lookups */ - varnish_submit_derive (conf->instance, "dirdns", "cache_operation", "lookups", stats->dir_dns_lookups); - /* DNS director failed lookups */ - varnish_submit_derive (conf->instance, "dirdns", "cache_result", "failed", stats->dir_dns_failed); - /* DNS director cached lookups hit */ - varnish_submit_derive (conf->instance, "dirdns", "cache_result", "hits", stats->dir_dns_hit); - /* DNS director full dnscache */ - varnish_submit_derive (conf->instance, "dirdns", "cache_result", "cache_full", stats->dir_dns_cache_full); - } -#endif - if (conf->collect_esi) { /* ESI parse errors (unlock) */ varnish_submit_derive (conf->instance, "esi", "total_operations", "error", stats->esi_errors); -#if HAVE_VARNISH_V2 /* Objects ESI parsed (unlock) */ varnish_submit_derive (conf->instance, "esi", "total_operations", "parsed", stats->esi_parse); -#else - /* ESI parse warnings (unlock) */ - varnish_submit_derive (conf->instance, "esi", "total_operations", "warning", stats->esi_warnings); -#endif } if (conf->collect_backend) @@ -203,13 +183,8 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_derive (conf->instance, "backend", "connections", "was-closed" , stats->backend_toolate); /* Backend conn. recycles */ varnish_submit_derive (conf->instance, "backend", "connections", "recycled" , stats->backend_recycle); -#if HAVE_VARNISH_V2 /* Backend conn. unused */ varnish_submit_derive (conf->instance, "backend", "connections", "unused" , stats->backend_unused); -#else - /* Backend conn. retry */ - varnish_submit_derive (conf->instance, "backend", "connections", "retries" , stats->backend_retry); -#endif /* Backend requests mades */ varnish_submit_derive (conf->instance, "backend", "http_requests", "requests" , stats->backend_req); /* N backends */ @@ -236,14 +211,6 @@ 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 || 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) */ - varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_204", stats->fetch_204); - /* Fetch no body (304) */ - varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_304", stats->fetch_304); -#endif } if (conf->collect_hcb) @@ -262,32 +229,22 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_derive (conf->instance, "objects", "total_objects", "expired", stats->n_expired); /* N LRU nuked objects */ varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_nuked", stats->n_lru_nuked); -#if HAVE_VARNISH_V2 /* N LRU saved objects */ varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_saved", stats->n_lru_saved); -#endif /* N LRU moved objects */ varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_moved", stats->n_lru_moved); -#if HAVE_VARNISH_V2 /* N objects on deathrow */ varnish_submit_derive (conf->instance, "objects", "total_objects", "deathrow", stats->n_deathrow); -#endif /* HTTP header overflows */ varnish_submit_derive (conf->instance, "objects", "total_objects", "header_overflow", stats->losthdr); -#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 */ 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 if (conf->collect_purge) { /* N total active purges */ @@ -303,45 +260,6 @@ 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); } -#endif -#if HAVE_VARNISH_V3 - if (conf->collect_ban) - { - /* N total active bans */ - varnish_submit_derive (conf->instance, "ban", "total_operations", "total", stats->n_ban); - /* N new bans added */ - varnish_submit_derive (conf->instance, "ban", "total_operations", "added", stats->n_ban_add); - /* N old bans deleted */ - varnish_submit_derive (conf->instance, "ban", "total_operations", "deleted", stats->n_ban_retire); - /* N objects tested */ - varnish_submit_derive (conf->instance, "ban", "total_operations", "objects_tested", stats->n_ban_obj_test); - /* N regexps tested against */ - varnish_submit_derive (conf->instance, "ban", "total_operations", "regexps_tested", stats->n_ban_re_test); - /* N duplicate bans removed */ - 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) { @@ -351,21 +269,8 @@ 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); } @@ -384,7 +289,6 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_derive (conf->instance, "shm", "total_operations", "cycles" , stats->shm_cycles); } -#if HAVE_VARNISH_V2 if (conf->collect_sm) { /* allocator requests */ @@ -410,7 +314,6 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ /* SMA bytes free */ varnish_submit_derive (conf->instance, "sma", "total_bytes", "free" , stats->sma_bfree); } -#endif if (conf->collect_sms) { @@ -428,25 +331,14 @@ 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); -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 - /* N unresurrected objects */ - 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); -#ifdef HAVE_VARNISH_V2 /* N struct smf */ varnish_submit_gauge (conf->instance, "struct", "objects", "smf", stats->n_smf); /* N small free smf */ @@ -455,7 +347,6 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_gauge (conf->instance, "struct", "objects", "smf_large", stats->n_smf_large); /* N struct vbe_conn */ varnish_submit_gauge (conf->instance, "struct", "objects", "vbe_conn", stats->n_vbe_conn); -#endif } if (conf->collect_totals) @@ -470,47 +361,12 @@ 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); - /* 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); /* 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 } -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 - if (conf->collect_uptime) - { - /* Client uptime */ - varnish_submit_gauge (conf->instance, "uptime", "uptime", "client_uptime", stats->uptime); - } -#endif - if (conf->collect_vcl) { /* N vcl total */ @@ -519,28 +375,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) { -#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 */ @@ -551,37 +389,14 @@ static void varnish_monitor (const user_config_t *conf, /* {{{ */ varnish_submit_derive (conf->instance, "workers", "total_threads", "limited", stats->n_wrk_max); /* dropped work requests */ 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); /* overflowed work requests */ varnish_submit_derive (conf->instance, "workers", "total_requests", "overflowed", stats->n_wrk_overflow); -#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 } -#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 */ +#endif #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 static int varnish_read (user_data_t *ud) /* {{{ */ -- 2.30.2