Skip to content

Commit

Permalink
varnish: isolate varnish v2 code
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Marc Fournier committed Nov 4, 2015
1 parent 4632d38 commit b208ddc
Showing 1 changed file with 2 additions and 187 deletions.
189 changes: 2 additions & 187 deletions src/varnish.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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)
Expand All @@ -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 */
Expand All @@ -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)
Expand All @@ -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 */
Expand All @@ -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)
{
Expand All @@ -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);
}
Expand All @@ -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 */
Expand All @@ -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)
{
Expand All @@ -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 */
Expand All @@ -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)
Expand All @@ -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 */
Expand All @@ -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 */
Expand All @@ -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) /* {{{ */
Expand Down

0 comments on commit b208ddc

Please sign in to comment.