#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;
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);
}
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) */
#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
/* 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 */
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)
{
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);
}
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 */
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 */
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 */
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 */
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;
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
#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