Varnish plugin: Added 'fetch' monitoring
authorJérôme Renard <jerome.renard@gmail.com>
Fri, 4 Jun 2010 16:25:52 +0000 (18:25 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Mon, 7 Jun 2010 12:40:47 +0000 (14:40 +0200)
src/collectd.conf.in
src/types.db
src/varnish.c

index d2f7bfb..efa2af4 100644 (file)
 #  MonitorConnections yes
 #  MonitorESI yes
 #  MonitorBackend yes
+#  MonitorFetch yes
 #</Plugin>
 
 #<Plugin vmem>
index 99e96e9..375ac7c 100644 (file)
@@ -164,6 +164,7 @@ varnish_cache_ratio value:GAUGE:0:U
 varnish_connections    value:GAUGE:0:U
 varnish_esi            value:GAUGE:0:U
 varnish_backend_connections     value:GAUGE:0:U
+varnish_fetch       value:GAUGE:0:U
 virt_cpu_total         ns:COUNTER:0:256000000000
 virt_vcpu              ns:COUNTER:0:1000000000
 vmpage_action          value:COUNTER:0:4294967295
index 3fe9f93..14e18f1 100644 (file)
@@ -25,7 +25,7 @@
 
 #include <varnish/varnishapi.h>
 
-#define USER_CONFIG_INIT {0, 0, 0, 0}
+#define USER_CONFIG_INIT {0, 0, 0, 0, 0}
 #define SET_MONITOR_FLAG(name, flag, value) if((strcasecmp(name, key) == 0) && IS_TRUE(value)) user_config.flag = 1
 
 /* {{{ user_config_s */
@@ -34,6 +34,7 @@ struct user_config_s {
        int monitor_connections;
        int monitor_esi;
        int monitor_backend;
+       int monitor_fetch;
 };
 
 typedef struct user_config_s user_config_t; /* }}} */
@@ -47,6 +48,7 @@ static const char *config_keys[] =
   "MonitorConnections",
   "MonitorESI",
   "MonitorBackend",
+  "MonitorFetch"
 };
 
 static int config_keys_num = STATIC_ARRAY_SIZE (config_keys); /* }}} */
@@ -57,6 +59,7 @@ static int varnish_config(const char *key, const char *value) /* {{{ */
        SET_MONITOR_FLAG("MonitorConnections", monitor_connections, value);
        SET_MONITOR_FLAG("MonitorESI", monitor_esi, value);
        SET_MONITOR_FLAG("MonitorBackend", monitor_backend, value);
+       SET_MONITOR_FLAG("MonitorFetch", monitor_fetch, value);
 
        return (0);
 } /* }}} */
@@ -111,6 +114,19 @@ static void varnish_monitor(struct varnish_stats *VSL_stats) /* {{{ */
                varnish_submit("varnish_backend_connections", "backend_connections-recycles"     , VSL_stats->backend_recycle);   /* Backend conn. recycles      */
                varnish_submit("varnish_backend_connections", "backend_connections-unused"       , VSL_stats->backend_unused);    /* Backend conn. unused        */
        }
+
+       if(user_config.monitor_fetch == 1)
+       {
+               varnish_submit("varnish_fetch", "fetch_head"       , VSL_stats->fetch_head);    /* Fetch head                */
+               varnish_submit("varnish_fetch", "fetch_length"     , VSL_stats->fetch_length);  /* Fetch with length         */
+               varnish_submit("varnish_fetch", "fetch_chunked"    , VSL_stats->fetch_chunked); /* Fetch chunked             */
+               varnish_submit("varnish_fetch", "fetch_eof"        , VSL_stats->fetch_eof);     /* Fetch EOF                 */
+               varnish_submit("varnish_fetch", "fetch_bad-headers", VSL_stats->fetch_bad);     /* Fetch bad headers         */
+               varnish_submit("varnish_fetch", "fetch_close"      , VSL_stats->fetch_close);   /* Fetch wanted close        */
+               varnish_submit("varnish_fetch", "fetch_oldhttp"    , VSL_stats->fetch_oldhttp); /* Fetch pre HTTP/1.1 closed */
+               varnish_submit("varnish_fetch", "fetch_zero"       , VSL_stats->fetch_zero);    /* Fetch zero len            */
+               varnish_submit("varnish_fetch", "fetch_failed"     , VSL_stats->fetch_failed);  /* Fetch failed              */
+       }
 } /* }}} */
 
 static int varnish_read(void) /* {{{ */