From: Charly Koza Date: Thu, 23 Apr 2020 13:52:00 +0000 (+0200) Subject: Add varnish 6 support X-Git-Tag: collectd-5.12.0~41^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e9bdd411a5fc1ac0d7309689ce5f81ee0614a876;p=thirdparty%2Fcollectd.git Add varnish 6 support --- diff --git a/configure.ac b/configure.ac index 1fa3580a9..45b94ce0d 100644 --- a/configure.ac +++ b/configure.ac @@ -6084,24 +6084,29 @@ if test "x$with_libvarnish" = "xyes"; then SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags" - $PKG_CONFIG --atleast-version=5.2 'varnishapi' 2>/dev/null + $PKG_CONFIG --atleast-version=6 'varnishapi' 2>/dev/null if test $? -eq 0; then - AC_DEFINE([HAVE_VARNISH_V5], [1], [Varnish 5 API support]) + AC_DEFINE([HAVE_VARNISH_V6], [1], [Varnish 6 API support]) else - AC_CHECK_HEADERS([vapi/vsc.h], - [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])], - [ - AC_CHECK_HEADERS([vsc.h], - [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support]) ], - [ - AC_CHECK_HEADERS([varnishapi.h], - [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])], - [with_libvarnish="no (found none of the varnish header files)"] - ) - ] - ) - ] - ) + $PKG_CONFIG --atleast-version=5.2 'varnishapi' 2>/dev/null + if test $? -eq 0; then + AC_DEFINE([HAVE_VARNISH_V5], [1], [Varnish 5 API support]) + else + AC_CHECK_HEADERS([vapi/vsc.h], + [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])], + [ + AC_CHECK_HEADERS([vsc.h], + [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support]) ], + [ + AC_CHECK_HEADERS([varnishapi.h], + [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])], + [with_libvarnish="no (found none of the varnish header files)"] + ) + ] + ) + ] + ) + fi fi CPPFLAGS="$SAVE_CPPFLAGS" diff --git a/src/varnish.c b/src/varnish.c index f4c70af84..be6c7041e 100644 --- a/src/varnish.c +++ b/src/varnish.c @@ -29,7 +29,7 @@ #include "plugin.h" #include "utils/common/common.h" -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 #include #include typedef struct VSC_C_main c_varnish_stats_t; @@ -71,17 +71,17 @@ struct user_config_s { #if HAVE_VARNISH_V2 bool collect_sm; #endif -#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 bool collect_sma; #endif bool collect_struct; bool collect_totals; -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 bool collect_uptime; #endif bool collect_vcl; bool collect_workers; -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 bool collect_vsm; bool collect_lck; bool collect_mempool; @@ -138,7 +138,7 @@ static int varnish_submit_derive(const char *plugin_instance, /* {{{ */ }); } /* }}} int varnish_submit_derive */ -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 static int varnish_monitor(void *priv, const struct VSC_point *const pt) /* {{{ */ { @@ -151,7 +151,7 @@ static int varnish_monitor(void *priv, conf = priv; -#if HAVE_VARNISH_V5 +#if HAVE_VARNISH_V5 || HAVE_VARNISH_V6 char namebuff[DATA_MAX_NAME_LEN]; char const *c = strrchr(pt->name, '.'); @@ -197,7 +197,7 @@ static int varnish_monitor(void *priv, else if (strcmp(name, "client_req") == 0) return varnish_submit_derive(conf->instance, "connections", "connections", "received", val); -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 else if (strcmp(name, "client_req_400") == 0) return varnish_submit_derive(conf->instance, "connections", "connections", "error_400", val); @@ -312,7 +312,7 @@ static int varnish_monitor(void *priv, else if (strcmp(name, "fetch_304") == 0) return varnish_submit_derive(conf->instance, "fetch", "http_requests", "no_body_304", val); -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 else if (strcmp(name, "fetch_no_thread") == 0) return varnish_submit_derive(conf->instance, "fetch", "http_requests", "no_thread", val); @@ -371,7 +371,7 @@ static int varnish_monitor(void *priv, else if (strcmp(name, "n_objoverflow") == 0) return varnish_submit_derive(conf->instance, "objects", "total_objects", "workspace_overflow", val); -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 else if (strcmp(name, "exp_mailed") == 0) return varnish_submit_gauge(conf->instance, "struct", "objects", "exp_mailed", val); @@ -403,7 +403,7 @@ static int varnish_monitor(void *priv, "duplicate", val); } #endif -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 if (conf->collect_ban) { if (strcmp(name, "bans") == 0) return varnish_submit_derive(conf->instance, "ban", "total_operations", @@ -490,7 +490,7 @@ static int varnish_monitor(void *priv, else if (strcmp(name, "sess_herd") == 0) return varnish_submit_derive(conf->instance, "session", "total_operations", "herd", val); -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 else if (strcmp(name, "sess_closed_err") == 0) return varnish_submit_derive(conf->instance, "session", "total_operations", "closed_err", val); @@ -703,7 +703,7 @@ static int varnish_monitor(void *priv, else if (strcmp(name, "n_wrk_lqueue") == 0) return varnish_submit_derive(conf->instance, "workers", "total_requests", "queue_length", val); -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 else if (strcmp(name, "pools") == 0) return varnish_submit_gauge(conf->instance, "workers", "pools", "pools", val); @@ -713,7 +713,7 @@ static int varnish_monitor(void *priv, #endif } -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 if (conf->collect_vsm) { if (strcmp(name, "vsm_free") == 0) return varnish_submit_gauge(conf->instance, "vsm", "bytes", "free", val); @@ -1326,14 +1326,14 @@ static void varnish_monitor(const user_config_t *conf, /* {{{ */ } /* }}} void varnish_monitor */ #endif -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 static int varnish_read(user_data_t *ud) /* {{{ */ { #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 struct VSM_data *vd; bool ok; const c_varnish_stats_t *stats; -#elif HAVE_VARNISH_V5 +#elif HAVE_VARNISH_V5 || HAVE_VARNISH_V6 struct vsm *vd; struct vsc *vsc; int vsm_status; @@ -1348,7 +1348,7 @@ static int varnish_read(user_data_t *ud) /* {{{ */ vd = VSM_New(); -#if HAVE_VARNISH_V5 +#if HAVE_VARNISH_V5 || HAVE_VARNISH_V6 vsc = VSC_New(); #endif @@ -1361,14 +1361,14 @@ static int varnish_read(user_data_t *ud) /* {{{ */ #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 status = VSM_n_Arg(vd, conf->instance); -#elif HAVE_VARNISH_V5 +#elif HAVE_VARNISH_V5 || HAVE_VARNISH_V6 status = VSM_Arg(vd, 'n', conf->instance); #endif if (status < 0) { #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 VSM_Delete(vd); -#elif HAVE_VARNISH_V5 +#elif HAVE_VARNISH_V5 || HAVE_VARNISH_V6 VSC_Destroy(&vsc, vd); VSM_Destroy(&vd); #endif @@ -1405,7 +1405,7 @@ static int varnish_read(user_data_t *ud) /* {{{ */ } #endif -#if HAVE_VARNISH_V5 +#if HAVE_VARNISH_V5 || HAVE_VARNISH_V6 if (VSM_Attach(vd, STDERR_FILENO)) { ERROR("varnish plugin: Cannot attach to varnish. %s", VSM_Error(vd)); VSC_Destroy(&vsc, vd); @@ -1426,13 +1426,13 @@ static int varnish_read(user_data_t *ud) /* {{{ */ VSC_Iter(vd, varnish_monitor, conf); #elif HAVE_VARNISH_V4 VSC_Iter(vd, NULL, varnish_monitor, conf); -#elif HAVE_VARNISH_V5 +#elif HAVE_VARNISH_V5 || HAVE_VARNISH_V6 VSC_Iter(vsc, vd, varnish_monitor, conf); #endif #if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 VSM_Delete(vd); -#elif HAVE_VARNISH_V5 +#elif HAVE_VARNISH_V5 || HAVE_VARNISH_V6 VSC_Destroy(&vsc, vd); VSM_Destroy(&vd); #endif @@ -1500,18 +1500,18 @@ static int varnish_config_apply_default(user_config_t *conf) /* {{{ */ #if HAVE_VARNISH_V2 conf->collect_sm = false; #endif -#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 conf->collect_sma = false; #endif conf->collect_sms = false; conf->collect_struct = false; conf->collect_totals = false; -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 conf->collect_uptime = false; #endif conf->collect_vcl = false; conf->collect_workers = false; -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 conf->collect_vsm = false; conf->collect_lck = false; conf->collect_mempool = false; @@ -1631,7 +1631,7 @@ static int varnish_config_instance(const oconfig_item_t *ci) /* {{{ */ else if (strcasecmp("CollectSMS", child->key) == 0) cf_util_get_boolean(child, &conf->collect_sms); else if (strcasecmp("CollectSMA", child->key) == 0) -#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_sma); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", @@ -1649,7 +1649,7 @@ static int varnish_config_instance(const oconfig_item_t *ci) /* {{{ */ else if (strcasecmp("CollectTotals", child->key) == 0) cf_util_get_boolean(child, &conf->collect_totals); else if (strcasecmp("CollectUptime", child->key) == 0) -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_uptime); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", @@ -1660,56 +1660,56 @@ static int varnish_config_instance(const oconfig_item_t *ci) /* {{{ */ else if (strcasecmp("CollectWorkers", child->key) == 0) cf_util_get_boolean(child, &conf->collect_workers); else if (strcasecmp("CollectVSM", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_vsm); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectLock", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_lck); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectMempool", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_mempool); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectManagement", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_mgt); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectSMF", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_smf); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectSMF", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_smf); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectVBE", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_vbe); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", child->key, "v4"); #endif else if (strcasecmp("CollectMSE", child->key) == 0) -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 cf_util_get_boolean(child, &conf->collect_mse); #else WARNING("Varnish plugin: \"%s\" is available for Varnish %s only.", @@ -1739,15 +1739,15 @@ static int varnish_config_instance(const oconfig_item_t *ci) /* {{{ */ #if HAVE_VARNISH_V2 && !conf->collect_sm #endif -#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V2 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 && !conf->collect_sma #endif && !conf->collect_struct && !conf->collect_totals -#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 && !conf->collect_uptime #endif && !conf->collect_vcl && !conf->collect_workers -#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 +#if HAVE_VARNISH_V4 || HAVE_VARNISH_V5 || HAVE_VARNISH_V6 && !conf->collect_vsm && !conf->collect_vbe && !conf->collect_smf && !conf->collect_mgt && !conf->collect_lck && !conf->collect_mempool && !conf->collect_mse