[Pkg-nagios-changes] [pkg-nagios-plugins-contrib] 05/11: check_varnish: add support for varnish 4
Bernd Zeimetz
bernd at bzed.de
Sun Apr 27 10:05:13 UTC 2014
This is an automated email from the git hooks/post-receive script.
bzed pushed a commit to branch master
in repository pkg-nagios-plugins-contrib.
commit 8a28edeb9a9c042ed37516fda64ecaf190901111
Author: Evgeni Golov <evgeni.golov at credativ.de>
Date: Sat Apr 26 18:17:14 2014 +0200
check_varnish: add support for varnish 4
Closes: #745895
---
debian/patches/check_varnish/support-for-varnish-4 | 133 +++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 134 insertions(+)
diff --git a/debian/patches/check_varnish/support-for-varnish-4 b/debian/patches/check_varnish/support-for-varnish-4
new file mode 100644
index 0000000..ea3e0c7
--- /dev/null
+++ b/debian/patches/check_varnish/support-for-varnish-4
@@ -0,0 +1,133 @@
+From 04555fb05cb5292b811f696cacd585435f6a9f3e Mon Sep 17 00:00:00 2001
+From: Evgeni Golov <evgeni.golov at credativ.de>
+Date: Sat, 26 Apr 2014 18:06:26 +0200
+Subject: [PATCH] add support for varnish 4
+
+closes #2
+---
+ check_varnish.c | 41 +++++++++++++++++++++++++++++++++++++++--
+ configure.ac | 8 +++++++-
+ 2 files changed, 46 insertions(+), 3 deletions(-)
+
+diff --git a/check_varnish.c b/check_varnish.c
+index 2ba36aa..95156f3 100644
+--- a/check_varnish/varnish-nagios-1.1/check_varnish.c
++++ b/check_varnish/varnish-nagios-1.1/check_varnish.c
+@@ -43,8 +43,13 @@
+ #include <locale.h>
+ #include <assert.h>
+
++#if defined(HAVE_VARNISHAPI_4)
++#include <vapi/vsc.h>
++#include <vapi/vsm.h>
++#elif defined(HAVE_VARNISHAPI_3)
+ #include "vsc.h"
+ #include "varnishapi.h"
++#endif
+
+ static int verbose = 0;
+
+@@ -177,6 +182,22 @@ check_stats_cb(void *priv, const struct VSC_point * const pt)
+ struct stat_priv *p;
+ char tmp[1024];
+
++ if (pt == NULL)
++ return(0);
++
++#if defined(HAVE_VARNISHAPI_4)
++ assert(sizeof(tmp) > (strlen(pt->section->fantom->type) + 1 +
++ strlen(pt->section->fantom->ident) + 1 +
++ strlen(pt->desc->name) + 1));
++ snprintf(tmp, sizeof(tmp), "%s%s%s%s%s",
++ (pt->section->fantom->type[0] == 0 ? "" : pt->section->fantom->type),
++ (pt->section->fantom->type[0] == 0 ? "" : "."),
++ (pt->section->fantom->ident[0] == 0 ? "" : pt->section->fantom->ident),
++ (pt->section->fantom->ident[0] == 0 ? "" : "."),
++ pt->desc->name);
++ p = priv;
++ assert(!strcmp(pt->desc->fmt, "uint64_t"));
++#elif defined(HAVE_VARNISHAPI_3)
+ assert(sizeof(tmp) > (strlen(pt->class) + 1 +
+ strlen(pt->ident) + 1 +
+ strlen(pt->name) + 1));
+@@ -188,15 +209,20 @@ check_stats_cb(void *priv, const struct VSC_point * const pt)
+ pt->name);
+ p = priv;
+ assert(!strcmp(pt->fmt, "uint64_t"));
++#endif
+ if (strcmp(tmp, p->param) == 0) {
+ p->found = 1;
++#if defined(HAVE_VARNISHAPI_4)
++ p->info = pt->desc->sdesc;
++#elif defined(HAVE_VARNISHAPI_3)
+ p->info = pt->desc;
++#endif
+ p->value = *(const volatile uint64_t*)pt->ptr;
+ } else if (strcmp(p->param, "ratio") == 0) {
+- if (strcmp(tmp, "cache_hit") == 0) {
++ if (strcmp(tmp, "cache_hit") == 0 || strcmp(tmp, "MAIN.cache_hit") == 0) {
+ p->found = 1;
+ p->cache_hit = *(const volatile uint64_t*)pt->ptr;
+- } else if (strcmp(tmp, "cache_miss") == 0) {
++ } else if (strcmp(tmp, "cache_miss") == 0 || strcmp(tmp, "MAIN.cache_miss") == 0) {
+ p->cache_miss = *(const volatile uint64_t*)pt->ptr;
+ }
+ }
+@@ -215,7 +241,11 @@ check_stats(struct VSM_data *vd, char *param)
+ priv.found = 0;
+ priv.param = param;
+
++#if defined(HAVE_VARNISHAPI_4)
++ (void)VSC_Iter(vd, NULL, check_stats_cb, &priv);
++#elif defined(HAVE_VARNISHAPI_3)
+ (void)VSC_Iter(vd, check_stats_cb, &priv);
++#endif
+ if (strcmp(param, "ratio") == 0) {
+ intmax_t total = priv.cache_hit + priv.cache_miss;
+ priv.value = total ? (100 * priv.cache_hit / total) : 0;
+@@ -280,7 +310,9 @@ main(int argc, char **argv)
+ setlocale(LC_ALL, "");
+
+ vd = VSM_New();
++#if defined(HAVE_VARNISHAPI_3)
+ VSC_Setup(vd);
++#endif
+
+ while ((opt = getopt(argc, argv, VSC_ARGS "c:hn:p:vw:")) != -1) {
+ switch (opt) {
+@@ -311,8 +343,13 @@ main(int argc, char **argv)
+ }
+ }
+
++#if defined(HAVE_VARNISHAPI_4)
++ if (VSM_Open(vd))
++ exit(1);
++#elif defined(HAVE_VARNISHAPI_3)
+ if (VSC_Open(vd, 1))
+ exit(1);
++#endif
+
+ /* Default: if no param specified, check hit ratio. If no warning
+ * and critical values are specified either, set these to default.
+diff --git a/configure.ac b/configure.ac
+index feac2bd..a3df21e 100644
+--- a/check_varnish/varnish-nagios-1.1/configure.ac
++++ b/check_varnish/varnish-nagios-1.1/configure.ac
+@@ -21,7 +21,13 @@ AC_PROG_LIBTOOL
+ AC_PROG_MAKE_SET
+
+ # Checks for libraries.
+-PKG_CHECK_MODULES([VARNISHAPI], [varnishapi])
++PKG_CHECK_MODULES([VARNISHAPI], [varnishapi >= 4],
++ [AC_DEFINE([HAVE_VARNISHAPI_4], [1], [Use VARNISHAPI v4])],
++ [PKG_CHECK_MODULES([VARNISHAPI], [varnishapi >= 3],
++ [AC_DEFINE([HAVE_VARNISHAPI_3], [1], [Use VARNISHAPI v3])],
++ [AC_MSG_ERROR([Could not find neither varnishapi v4 nor v3.])])
++ ]
++)
+
+ # Checks for header files.
+ AC_HEADER_STDC
+--
+2.0.0.rc0
+
diff --git a/debian/patches/series b/debian/patches/series
index b6f8a37..db59537 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -30,5 +30,6 @@ check_cups/epn
check_webinject/epn
check_snmp_time/epn
check_varnish/automake_foreign
+check_varnish/support-for-varnish-4
check_drbd/fix_for_oos_and_cosmetic
check_imap_quota/syntax_error_fix
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-nagios/pkg-nagios-plugins-contrib
More information about the Pkg-nagios-changes
mailing list