- Update to 5.5.1

- Mark MONGODB option as BROKEN

PR:		206660
Submitted by:	ports at bsdserwis.com (maintainer)
This commit is contained in:
Guido Falsi 2016-02-02 23:08:46 +00:00
parent 817ca149ff
commit 812ce75b52
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=407901
17 changed files with 1175 additions and 1207 deletions

View file

@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= collectd
PORTVERSION= 5.5.0
PORTREVISION= 4
PORTVERSION= 5.5.1
CATEGORIES= net-mgmt
MASTER_SITES= https://collectd.org/files/ \
http://collectd.org/files/
@ -24,9 +23,9 @@ GNU_CONFIGURE= yes
OPTIONS_DEFINE= CGI DEBUG GCRYPT LOGSTASH VIRT
OPTIONS_GROUP= INPUT OUTPUT
OPTIONS_GROUP_OUTPUT= KAFKA NOTIFYDESKTOP NOTIFYEMAIL RIEMANN RRDTOOL
OPTIONS_GROUP_OUTPUT= KAFKA MONGODB NOTIFYDESKTOP NOTIFYEMAIL RIEMANN RRDTOOL
OPTIONS_GROUP_INPUT= CURL CURL_JSON CURL_XML DBI IPMI JSON MEMCACHEC \
MODBUS MONGODB MYSQL NUTUPS OLSRD ONEWIRE OPENLDAP \
MODBUS MYSQL NUTUPS OLSRD ONEWIRE OPENLDAP \
PERL PGSQL PINBA PING PYTHON RABBITMQ REDIS ROUTEROS \
SIGROK SNMP STATGRAB STATSD TOKYOTYRANT VARNISH XML \
XMMS ZOOKEEPER
@ -44,7 +43,7 @@ KAFKA_DESC= Enable write_kafka plugin
LOGSTASH_DESC= Enable log_logstash plugin (requires json)
MEMCACHEC_DESC= Enable memcachec plugin
MODBUS_DESC= Enable modbus plugin
MONGODB_DESC= Enable MongoDB-based plugins
MONGODB_DESC= Enable write_mongodb plugin (BROKEN)
MYSQL_DESC= Enable mysql-based plugins
NOTIFYDESKTOP_DESC= Enable desktop notifications
NOTIFYEMAIL_DESC= Enable notifications via email
@ -79,8 +78,6 @@ USE_RC_SUBR= collectd collectdmon
USE_LDCONFIG= yes
CONFLICTS= collectd-4.[0-9]*
CPPFLAGS+= -I${LOCALBASE}/include
LIBS+= -L${LOCALBASE}/lib
@ -89,6 +86,9 @@ CONFIGURE_ARGS= --localstatedir=/var \
--disable-all-plugins \
--disable-static \
--without-amqp \
--disable-ceph \
--disable-cgroups \
--disable-fhcount \
--without-java \
--without-libaquaero5 \
--without-libganglia \
@ -98,7 +98,6 @@ CONFIGURE_ARGS= --localstatedir=/var \
--without-libkstat \
--without-libldap \
--without-libmnl \
--without-libmodbus \
--without-libnetlink \
--without-libnetapp \
--without-libowcapi \
@ -154,11 +153,13 @@ MEMCACHEC_CONFIGURE_WITH= libmemcached=${LOCALBASE}
MODBUS_LIB_DEPENDS= libmodbus.so:${PORTSDIR}/comms/libmodbus
MODBUS_CONFIGURE_ENABLE= modbus
MODBUS_CONFIGURE_WITH= libmodbus=${LOCALBASE}
MODBUS_CONFIGURE_WITH= libmodbus=use_pkgconfig
MONGODB_LIB_DEPENDS= libmongoc-1.0.so:${PORTSDIR}/devel/mongo-c-driver
MONGODB_LIB_DEPENDS+= libbson-1.0.so:${PORTSDIR}/devel/libbson
MONGODB_CONFIGURE_ENABLE= write_mongodb
MONGODB_CONFIGURE_WITH= libmongoc=${LOCALBASE}
MONGODB_BROKEN= fails to configure with write_mongodb option
MYSQL_USE= mysql=yes
MYSQL_CONFIGURE_ENABLE= mysql
@ -277,7 +278,6 @@ CONFIGURE_ARGS+=--enable-aggregation \
--enable-dns \
--enable-email \
--enable-exec \
--enable-fhcount \
--enable-filecount \
--enable-load \
--enable-logfile \

View file

@ -1,2 +1,2 @@
SHA256 (collectd-5.5.0.tar.bz2) = 847684cf5c10de1dc34145078af3fcf6e0d168ba98c14f1343b1062a4b569e88
SIZE (collectd-5.5.0.tar.bz2) = 1824495
SHA256 (collectd-5.5.1.tar.bz2) = f9c5d526e1f0429a7db1ccd90bdf9e23923a2fd43b7285cfda8f0341e5c0bc3f
SIZE (collectd-5.5.1.tar.bz2) = 1797852

View file

@ -1,6 +1,6 @@
--- Makefile.am.orig 2015-03-09 09:38:22 UTC
--- Makefile.am.orig 2016-01-22 08:33:25 UTC
+++ Makefile.am
@@ -8,7 +8,6 @@ EXTRA_DIST = contrib version-gen.sh
@@ -14,7 +14,6 @@ EXTRA_DIST = contrib version-gen.sh
install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(localstatedir)/run

View file

@ -1,6 +1,6 @@
--- configure.ac.orig 2015-05-27 07:51:35 UTC
--- configure.ac.orig 2016-01-22 09:51:17 UTC
+++ configure.ac
@@ -120,7 +120,7 @@ then
@@ -155,7 +155,7 @@ then
fi
# Where to install .pc files.
@ -9,7 +9,7 @@
AC_SUBST(pkgconfigdir)
# Check for standards compliance mode
@@ -641,7 +641,7 @@ SAVE_CFLAGS="$CFLAGS"
@@ -715,7 +715,7 @@ SAVE_CFLAGS="$CFLAGS"
# Emulate behavior of src/Makefile.am
if test "x$GCC" = "xyes"
then
@ -18,7 +18,7 @@
fi
AC_CACHE_CHECK([for strtok_r],
@@ -770,7 +770,7 @@ AC_CHECK_FUNCS(getutxent, [have_getutxen
@@ -844,7 +844,7 @@ AC_CHECK_FUNCS(getutxent, [have_getutxen
if test "x$GCC" = "xyes"
then
SAVE_CFLAGS="$CFLAGS"
@ -27,7 +27,7 @@
fi
AC_CHECK_FUNCS(strptime, [have_strptime="yes"], [have_strptime="no"])
@@ -1495,6 +1495,7 @@ if test "x$with_kstat" = "xyes"
@@ -1571,6 +1571,7 @@ if test "x$with_kstat" = "xyes"
then
AC_CHECK_LIB(kstat, kstat_open, [with_kstat="yes"], [with_kstat="no (libkstat not found)"], [])
fi
@ -35,7 +35,7 @@
if test "x$with_kstat" = "xyes"
then
AC_CHECK_LIB(devinfo, di_init, [with_devinfo="yes"], [with_devinfo="no (not found)"], [])
@@ -1504,6 +1505,8 @@ if test "x$with_kstat" = "xyes"
@@ -1580,6 +1581,8 @@ if test "x$with_kstat" = "xyes"
then
AC_DEFINE(HAVE_LIBKSTAT, 1,
[Define to 1 if you have the 'kstat' library (-lkstat)])
@ -44,7 +44,36 @@
fi
AM_CONDITIONAL(BUILD_WITH_LIBKSTAT, test "x$with_kstat" = "xyes")
AM_CONDITIONAL(BUILD_WITH_LIBDEVINFO, test "x$with_devinfo" = "xyes")
@@ -3346,7 +3349,7 @@ then
@@ -2624,8 +2627,8 @@ AC_ARG_WITH(libmongoc, [AS_HELP_STRING([
with_libmongoc="no"
else
with_libmongoc="yes"
- LIBMONGOC_CPPFLAGS="$LIBMONGOC_CPPFLAGS -I$withval/include"
- LIBMONGOC_LDFLAGS="$LIBMONGOC_LDFLAGS -L$withval/lib"
+ LIBMONGOC_CPPFLAGS="$LIBMONGOC_CPPFLAGS -I$withval/include/libmongoc-1.0 -I$withval/include/libbson-1.0"
+ LIBMONGOC_LDFLAGS="$LIBMONGOC_LDFLAGS -L$withval/lib -lsasl2 -lssl -lcrypto -lmongoc-1.0 -lbson-1.0"
fi; fi
],
[with_libmongoc="yes"])
@@ -2642,7 +2645,7 @@ then
then
AC_MSG_NOTICE([libmongoc CPPFLAGS: $LIBMONGOC_CPPFLAGS])
fi
- AC_CHECK_HEADERS(mongo.h,
+ AC_CHECK_HEADERS(mongoc.h,
[with_libmongoc="yes"],
[with_libmongoc="no ('mongo.h' not found)"],
[#if HAVE_STDINT_H
@@ -2658,7 +2661,7 @@ then
then
AC_MSG_NOTICE([libmongoc LDFLAGS: $LIBMONGOC_LDFLAGS])
fi
- AC_CHECK_LIB(mongoc, mongo_run_command,
+ AC_CHECK_LIB(mongoc-1.0, mongoc_client_command,
[with_libmongoc="yes"],
[with_libmongoc="no (symbol 'mongo_run_command' not found)"])
fi
@@ -3415,7 +3418,7 @@ then
SAVE_LIBS="$LIBS"
# trigger an error if Perl_load_module*() uses __attribute__nonnull__(3)
# (see issues #41 and #42)
@ -53,7 +82,7 @@
LIBS="$LIBS $PERL_LIBS"
AC_CACHE_CHECK([for broken Perl_load_module()],
@@ -3576,7 +3579,7 @@ fi
@@ -3645,7 +3648,7 @@ fi
if test "x$with_python" = "xyes"
then
AC_MSG_CHECKING([for Python CPPFLAGS])
@ -62,7 +91,7 @@
python_config_status=$?
if test "$python_config_status" -ne 0 || test "x$python_include_path" = "x"
@@ -3599,7 +3602,7 @@ fi
@@ -3668,7 +3671,7 @@ fi
if test "x$with_python" = "xyes"
then
AC_MSG_CHECKING([for Python LDFLAGS])
@ -71,7 +100,7 @@
python_config_status=$?
if test "$python_config_status" -ne 0 || test "x$python_library_path" = "x"
@@ -3614,7 +3617,7 @@ fi
@@ -3683,7 +3686,7 @@ fi
if test "x$with_python" = "xyes"
then
AC_MSG_CHECKING([for Python LIBS])
@ -80,7 +109,7 @@
python_config_status=$?
if test "$python_config_status" -ne 0 || test "x$python_library_flags" = "x"
@@ -3629,7 +3632,7 @@ fi
@@ -3698,7 +3701,7 @@ fi
if test "x$with_python" = "xyes"
then
LDFLAGS="-L$python_library_path $LDFLAGS"
@ -89,7 +118,7 @@
AC_CHECK_FUNC(PyObject_CallFunction,
[with_python="yes"],
@@ -4692,8 +4695,8 @@ AC_ARG_WITH(libvarnish, [AS_HELP_STRING(
@@ -4761,8 +4764,8 @@ AC_ARG_WITH(libvarnish, [AS_HELP_STRING(
else if test -d "$with_libvarnish/lib"
then
AC_MSG_NOTICE([Not checking for libvarnish: Manually configured])
@ -100,11 +129,11 @@
with_libvarnish="yes"
fi; fi; fi
],
@@ -5263,6 +5266,7 @@ fi
@@ -5334,6 +5337,7 @@ fi
if test "x$ac_system" = "xFreeBSD"
then
+ plugin_disk="yes"
plugin_zfs_arc="yes"
plugin_zfs_arc="yes"
fi

View file

@ -1,4 +1,4 @@
--- src/Makefile.am.orig 2015-05-26 19:38:14 UTC
--- src/Makefile.am.orig 2016-01-22 09:51:17 UTC
+++ src/Makefile.am
@@ -7,14 +7,14 @@ SUBDIRS += daemon
PLUGIN_LDFLAGS = -module -avoid-version -export-symbols-regex '\<module_register\>'
@ -26,7 +26,7 @@
endif
if BUILD_WITH_LIBDEVINFO
cpu_la_LIBADD += -ldevinfo
@@ -303,7 +303,7 @@ disk_la_CFLAGS = $(AM_CFLAGS)
@@ -301,7 +301,7 @@ disk_la_CFLAGS = $(AM_CFLAGS)
disk_la_LDFLAGS = $(PLUGIN_LDFLAGS)
disk_la_LIBADD =
if BUILD_WITH_LIBKSTAT
@ -35,7 +35,7 @@
endif
if BUILD_WITH_LIBDEVINFO
disk_la_LIBADD += -ldevinfo
@@ -321,6 +321,9 @@ endif
@@ -319,6 +319,9 @@ endif
if BUILD_WITH_PERFSTAT
disk_la_LIBADD += -lperfstat
endif
@ -45,7 +45,7 @@
endif
if BUILD_PLUGIN_DNS
@@ -408,7 +411,7 @@ interface_la_CFLAGS += $(BUILD_WITH_LIBS
@@ -405,7 +408,7 @@ interface_la_CFLAGS += $(BUILD_WITH_LIBS
interface_la_LIBADD += $(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
else
if BUILD_WITH_LIBKSTAT
@ -54,7 +54,7 @@
endif
if BUILD_WITH_LIBDEVINFO
interface_la_LIBADD += -ldevinfo
@@ -591,7 +594,7 @@ memory_la_CFLAGS = $(AM_CFLAGS)
@@ -584,7 +587,7 @@ memory_la_CFLAGS = $(AM_CFLAGS)
memory_la_LDFLAGS = $(PLUGIN_LDFLAGS)
memory_la_LIBADD =
if BUILD_WITH_LIBKSTAT
@ -63,7 +63,7 @@
endif
if BUILD_WITH_LIBDEVINFO
memory_la_LIBADD += -ldevinfo
@@ -964,7 +967,7 @@ swap_la_CFLAGS = $(AM_CFLAGS)
@@ -951,7 +954,7 @@ swap_la_CFLAGS = $(AM_CFLAGS)
swap_la_LDFLAGS = $(PLUGIN_LDFLAGS)
swap_la_LIBADD =
if BUILD_WITH_LIBKSTAT
@ -72,7 +72,7 @@
endif
if BUILD_WITH_LIBDEVINFO
swap_la_LIBADD += -ldevinfo
@@ -1010,7 +1013,7 @@ if BUILD_PLUGIN_TAPE
@@ -997,7 +1000,7 @@ if BUILD_PLUGIN_TAPE
pkglib_LTLIBRARIES += tape.la
tape_la_SOURCES = tape.c
tape_la_LDFLAGS = $(PLUGIN_LDFLAGS)
@ -81,7 +81,7 @@
endif
if BUILD_PLUGIN_TARGET_NOTIFICATION
@@ -1116,7 +1119,7 @@ uptime_la_CFLAGS = $(AM_CFLAGS)
@@ -1102,7 +1105,7 @@ uptime_la_CFLAGS = $(AM_CFLAGS)
uptime_la_LDFLAGS = $(PLUGIN_LDFLAGS)
uptime_la_LIBADD =
if BUILD_WITH_LIBKSTAT
@ -90,7 +90,7 @@
endif
if BUILD_WITH_PERFSTAT
uptime_la_LIBADD += -lperfstat
@@ -1275,7 +1278,7 @@ if BUILD_LINUX
@@ -1260,7 +1263,7 @@ if BUILD_LINUX
# zfs_arc requires no library on linux
else
# solaris
@ -99,7 +99,7 @@
endif
endif
endif
@@ -1364,12 +1367,7 @@ endif
@@ -1354,12 +1357,7 @@ endif
install-exec-hook:
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
--- src/daemon/Makefile.am.orig 2015-05-26 19:38:31 UTC
--- src/daemon/Makefile.am.orig 2016-01-22 09:51:17 UTC
+++ src/daemon/Makefile.am
@@ -6,7 +6,7 @@
@@ -6,7 +6,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/src
AM_CPPFLAGS += -DPREFIX='"${prefix}"'
AM_CPPFLAGS += -DCONFIGFILE='"${sysconfdir}/${PACKAGE_NAME}.conf"'
AM_CPPFLAGS += -DLOCALSTATEDIR='"${localstatedir}"'
@ -9,12 +9,3 @@
if BUILD_FEATURE_DAEMON
AM_CPPFLAGS += -DPIDFILE='"${localstatedir}/run/${PACKAGE_NAME}.pid"'
endif
@@ -49,7 +49,7 @@ collectd_CPPFLAGS = $(AM_CPPFLAGS) $(LT
collectd_CFLAGS = $(AM_CFLAGS)
collectd_LDFLAGS = -export-dynamic
collectd_LDADD = libavltree.la libcommon.la libheap.la -lm
-collectd_DEPENDENCIES =
+collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la
# Link to these libraries..
if BUILD_WITH_LIBRT

View file

@ -1,4 +1,4 @@
--- src/daemon/collectd.h.orig 2015-05-22 10:04:36 UTC
--- src/daemon/collectd.h.orig 2016-01-22 09:51:17 UTC
+++ src/daemon/collectd.h
@@ -240,15 +240,15 @@ typedef int _Bool;
#endif

View file

@ -1,6 +1,6 @@
--- src/dns.c.orig 2015-03-10 14:14:45 UTC
--- src/dns.c.orig 2016-01-22 09:51:17 UTC
+++ src/dns.c
@@ -224,6 +224,15 @@ static int dns_run_pcap_loop (void)
@@ -223,6 +223,15 @@ static int dns_run_pcap_loop (void)
pthread_sigmask (SIG_SETMASK, &sigmask, NULL);
}

View file

@ -1,4 +1,4 @@
--- src/modbus.c.orig 2015-05-20 12:04:47 UTC
--- src/modbus.c.orig 2016-01-22 09:51:17 UTC
+++ src/modbus.c
@@ -25,6 +25,9 @@
#include "plugin.h"
@ -9,4 +9,4 @@
+
#include <netdb.h>
#include <modbus/modbus.h>
#include <modbus.h>

View file

@ -1,806 +0,0 @@
commit 0eebd2655842fbb634f67afd44fa4fdcf4e6f189
Author: Ruben Kerkhof <ruben@rubenkerkhof.com>
Date: Sat Jul 4 22:49:49 2015 +0200
varnish: fix leak on read
Since VSM_Close doesn't free the object we leak a few bytes
every interval
commit b208ddc7d08978f4cf52364c1935e94a0479ee42
Author: Marc Fournier <marc.fournier@camptocamp.com>
Date: Wed Nov 4 21:12:36 2015 +0100
varnish: isolate varnish v2 code
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.
commit d010d9eff882765201359959a583033dae4b373c
Author: Marc Fournier <marc.fournier@camptocamp.com>
Date: Wed Nov 4 22:57:00 2015 +0100
varnish: rework v3 and v4 support
By using VSC_Iter() to loop over the list of metrics exposed by varnish,
we can pick those we're interested *if they are found*.
Not explicitly referring to metrics in the VSC_C_main struct makes the
plugin more resilient to small differences between minor varnish
versions.
It also opens the possibility to monitor non-MAIN metrics, such as
per-backend or per-storage engine stats.
This patch should be compatible with the previous way of doing, from the
user point of view.
Fix #1302
commit 08bd4dd86e0fcb6828819cdf6bb3ae2115b1b8f4
Author: Marc Fournier <marc.fournier@camptocamp.com>
Date: Thu Nov 5 10:23:19 2015 +0100
varnish: remove unused variable
This was used in a DEBUG statement I didn't check in.
--- src/varnish.c.orig 2015-03-10 14:14:45 UTC
+++ src/varnish.c
@@ -135,6 +135,397 @@ static int varnish_submit_derive (const
return (varnish_submit (plugin_instance, category, type, type_instance, value));
} /* }}} int varnish_submit_derive */
+#if HAVE_VARNISH_V3 || HAVE_VARNISH_V4
+static int varnish_monitor (void *priv, const struct VSC_point * const pt) /* {{{ */
+{
+ uint64_t val;
+ const user_config_t *conf;
+ const char *class;
+ const char *name;
+
+ if (pt == NULL)
+ return (0);
+
+ conf = priv;
+
+#if HAVE_VARNISH_V4
+ class = pt->section->fantom->type;
+ name = pt->desc->name;
+
+ if (strcmp(class, "MAIN") != 0)
+ return (0);
+
+#elif HAVE_VARNISH_V3
+ class = pt->class;
+ name = pt->name;
+
+ if (strcmp(class, "") != 0)
+ return (0);
+#endif
+
+ val = *(const volatile uint64_t*) pt->ptr;
+
+ if (conf->collect_cache)
+ {
+ if (strcmp(name, "cache_hit") == 0)
+ return varnish_submit_derive (conf->instance, "cache", "cache_result", "hit", val);
+ else if (strcmp(name, "cache_miss") == 0)
+ return varnish_submit_derive (conf->instance, "cache", "cache_result", "miss", val);
+ else if (strcmp(name, "cache_hitpass") == 0)
+ return varnish_submit_derive (conf->instance, "cache", "cache_result", "hitpass", val);
+ }
+
+ if (conf->collect_connections)
+ {
+ if (strcmp(name, "client_conn") == 0)
+ return varnish_submit_derive (conf->instance, "connections", "connections", "accepted", val);
+ else if (strcmp(name, "client_drop") == 0)
+ return varnish_submit_derive (conf->instance, "connections", "connections", "dropped" , val);
+ else if (strcmp(name, "client_req") == 0)
+ return varnish_submit_derive (conf->instance, "connections", "connections", "received", val);
+ }
+
+#ifdef HAVE_VARNISH_V3
+ if (conf->collect_dirdns)
+ {
+ if (strcmp(name, "dir_dns_lookups") == 0)
+ return varnish_submit_derive (conf->instance, "dirdns", "cache_operation", "lookups", val);
+ else if (strcmp(name, "dir_dns_failed") == 0)
+ return varnish_submit_derive (conf->instance, "dirdns", "cache_result", "failed", val);
+ else if (strcmp(name, "dir_dns_hit") == 0)
+ return varnish_submit_derive (conf->instance, "dirdns", "cache_result", "hits", val);
+ else if (strcmp(name, "dir_dns_cache_full") == 0)
+ return varnish_submit_derive (conf->instance, "dirdns", "cache_result", "cache_full", val);
+ }
+#endif
+
+ if (conf->collect_esi)
+ {
+ if (strcmp(name, "esi_errors") == 0)
+ return varnish_submit_derive (conf->instance, "esi", "total_operations", "error", val);
+ else if (strcmp(name, "esi_parse") == 0)
+ return varnish_submit_derive (conf->instance, "esi", "total_operations", "parsed", val);
+ else if (strcmp(name, "esi_warnings") == 0)
+ return varnish_submit_derive (conf->instance, "esi", "total_operations", "warning", val);
+ }
+
+ if (conf->collect_backend)
+ {
+ if (strcmp(name, "backend_conn") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "success", val);
+ else if (strcmp(name, "backend_unhealthy") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "not-attempted", val);
+ else if (strcmp(name, "backend_busy") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "too-many", val);
+ else if (strcmp(name, "backend_fail") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "failures", val);
+ else if (strcmp(name, "backend_reuse") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "reuses", val);
+ else if (strcmp(name, "backend_toolate") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "was-closed", val);
+ else if (strcmp(name, "backend_recycle") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "recycled", val);
+ else if (strcmp(name, "backend_unused") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "unused", val);
+ else if (strcmp(name, "backend_retry") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "connections", "retries", val);
+ else if (strcmp(name, "backend_req") == 0)
+ return varnish_submit_derive (conf->instance, "backend", "http_requests", "requests", val);
+ else if (strcmp(name, "n_backend") == 0)
+ return varnish_submit_gauge (conf->instance, "backend", "backends", "n_backends", val);
+ }
+
+ if (conf->collect_fetch)
+ {
+ if (strcmp(name, "fetch_head") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "head", val);
+ else if (strcmp(name, "fetch_length") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "length", val);
+ else if (strcmp(name, "fetch_chunked") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "chunked", val);
+ else if (strcmp(name, "fetch_eof") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "eof", val);
+ else if (strcmp(name, "fetch_bad") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "bad_headers", val);
+ else if (strcmp(name, "fetch_close") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "close", val);
+ else if (strcmp(name, "fetch_oldhttp") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "oldhttp", val);
+ else if (strcmp(name, "fetch_zero") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "zero", val);
+ else if (strcmp(name, "fetch_failed") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "failed", val);
+ else if (strcmp(name, "fetch_1xx") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_1xx", val);
+ else if (strcmp(name, "fetch_204") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_204", val);
+ else if (strcmp(name, "fetch_304") == 0)
+ return varnish_submit_derive (conf->instance, "fetch", "http_requests", "no_body_304", val);
+ }
+
+ if (conf->collect_hcb)
+ {
+ if (strcmp(name, "hcb_nolock") == 0)
+ return varnish_submit_derive (conf->instance, "hcb", "cache_operation", "lookup_nolock", val);
+ else if (strcmp(name, "hcb_lock") == 0)
+ return varnish_submit_derive (conf->instance, "hcb", "cache_operation", "lookup_lock", val);
+ else if (strcmp(name, "hcb_insert") == 0)
+ return varnish_submit_derive (conf->instance, "hcb", "cache_operation", "insert", val);
+ }
+
+ if (conf->collect_objects)
+ {
+ if (strcmp(name, "n_expired") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "expired", val);
+ else if (strcmp(name, "n_lru_nuked") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_nuked", val);
+ else if (strcmp(name, "n_lru_saved") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_saved", val);
+ else if (strcmp(name, "n_lru_moved") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "lru_moved", val);
+ else if (strcmp(name, "n_deathrow") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "deathrow", val);
+ else if (strcmp(name, "losthdr") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "header_overflow", val);
+ else if (strcmp(name, "n_obj_purged") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "purged", val);
+ else if (strcmp(name, "n_objsendfile") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "sent_sendfile", val);
+ else if (strcmp(name, "n_objwrite") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "sent_write", val);
+ else if (strcmp(name, "n_objoverflow") == 0)
+ return varnish_submit_derive (conf->instance, "objects", "total_objects", "workspace_overflow", val);
+ }
+
+#if HAVE_VARNISH_V3
+ if (conf->collect_ban)
+ {
+ if (strcmp(name, "n_ban") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "total", val);
+ else if (strcmp(name, "n_ban_add") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "added", val);
+ else if (strcmp(name, "n_ban_retire") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "deleted", val);
+ else if (strcmp(name, "n_ban_obj_test") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "objects_tested", val);
+ else if (strcmp(name, "n_ban_re_test") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "regexps_tested", val);
+ else if (strcmp(name, "n_ban_dups") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "duplicate", val);
+ }
+#endif
+#if HAVE_VARNISH_V4
+ if (conf->collect_ban)
+ {
+ if (strcmp(name, "bans") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "total", val);
+ else if (strcmp(name, "bans_added") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "added", val);
+ else if (strcmp(name, "bans_obj") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "obj", val);
+ else if (strcmp(name, "bans_req") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "req", val);
+ else if (strcmp(name, "bans_completed") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "completed", val);
+ else if (strcmp(name, "bans_deleted") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "deleted", val);
+ else if (strcmp(name, "bans_tested") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "tested", val);
+ else if (strcmp(name, "bans_dups") == 0)
+ return varnish_submit_derive (conf->instance, "ban", "total_operations", "duplicate", val);
+ }
+#endif
+
+ if (conf->collect_session)
+ {
+ if (strcmp(name, "sess_closed") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "closed", val);
+ else if (strcmp(name, "sess_pipeline") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "pipeline", val);
+ else if (strcmp(name, "sess_readahead") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "readahead", val);
+ else if (strcmp(name, "sess_conn") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "accepted", val);
+ else if (strcmp(name, "sess_drop") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "dropped", val);
+ else if (strcmp(name, "sess_fail") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "failed", val);
+ else if (strcmp(name, "sess_pipe_overflow") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "overflow", val);
+ else if (strcmp(name, "sess_queued") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "queued", val);
+ else if (strcmp(name, "sess_linger") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "linger", val);
+ else if (strcmp(name, "sess_herd") == 0)
+ return varnish_submit_derive (conf->instance, "session", "total_operations", "herd", val);
+ }
+
+ if (conf->collect_shm)
+ {
+ if (strcmp(name, "shm_records") == 0)
+ return varnish_submit_derive (conf->instance, "shm", "total_operations", "records", val);
+ else if (strcmp(name, "shm_writes") == 0)
+ return varnish_submit_derive (conf->instance, "shm", "total_operations", "writes", val);
+ else if (strcmp(name, "shm_flushes") == 0)
+ return varnish_submit_derive (conf->instance, "shm", "total_operations", "flushes", val);
+ else if (strcmp(name, "shm_cont") == 0)
+ return varnish_submit_derive (conf->instance, "shm", "total_operations", "contention", val);
+ else if (strcmp(name, "shm_cycles") == 0)
+ return varnish_submit_derive (conf->instance, "shm", "total_operations", "cycles", val);
+ }
+
+ if (conf->collect_sms)
+ {
+ if (strcmp(name, "sms_nreq") == 0)
+ return varnish_submit_derive (conf->instance, "sms", "total_requests", "allocator", val);
+ else if (strcmp(name, "sms_nobj") == 0)
+ return varnish_submit_gauge (conf->instance, "sms", "requests", "outstanding", val);
+ else if (strcmp(name, "sms_nbytes") == 0)
+ return varnish_submit_gauge (conf->instance, "sms", "bytes", "outstanding", val);
+ else if (strcmp(name, "sms_balloc") == 0)
+ return varnish_submit_derive (conf->instance, "sms", "total_bytes", "allocated", val);
+ else if (strcmp(name, "sms_bfree") == 0)
+ return varnish_submit_derive (conf->instance, "sms", "total_bytes", "free", val);
+ }
+
+ if (conf->collect_struct)
+ {
+ if (strcmp(name, "n_sess_mem") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "current_sessions", "sess_mem", val);
+ else if (strcmp(name, "n_sess") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "current_sessions", "sess", val);
+ else if (strcmp(name, "n_object") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "object", val);
+ else if (strcmp(name, "n_vampireobject") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "vampireobject", val);
+ else if (strcmp(name, "n_objectcore") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "objectcore", val);
+ else if (strcmp(name, "n_waitinglist") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "waitinglist", val);
+ else if (strcmp(name, "n_objecthead") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "objecthead", val);
+ else if (strcmp(name, "n_smf") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "smf", val);
+ else if (strcmp(name, "n_smf_frag") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "smf_frag", val);
+ else if (strcmp(name, "n_smf_large") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "smf_large", val);
+ else if (strcmp(name, "n_vbe_conn") == 0)
+ return varnish_submit_gauge (conf->instance, "struct", "objects", "vbe_conn", val);
+ }
+
+ if (conf->collect_totals)
+ {
+ if (strcmp(name, "s_sess") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_sessions", "sessions", val);
+ else if (strcmp(name, "s_req") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_requests", "requests", val);
+ else if (strcmp(name, "s_pipe") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "pipe", val);
+ else if (strcmp(name, "s_pass") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "pass", val);
+ else if (strcmp(name, "s_fetch") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "fetches", val);
+ else if (strcmp(name, "s_synth") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "synth", val);
+ else if (strcmp(name, "s_req_hdrbytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "req_header", val);
+ else if (strcmp(name, "s_req_bodybytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "req_body", val);
+ else if (strcmp(name, "s_resp_hdrbytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "resp_header", val);
+ else if (strcmp(name, "s_resp_bodybytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "resp_body", val);
+ else if (strcmp(name, "s_pipe_hdrbytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_header", val);
+ else if (strcmp(name, "s_pipe_in") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_in", val);
+ else if (strcmp(name, "s_pipe_out") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "pipe_out", val);
+ else if (strcmp(name, "n_purges") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "purges", val);
+ else if (strcmp(name, "s_hdrbytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "header-bytes", val);
+ else if (strcmp(name, "s_bodybytes") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_bytes", "body-bytes", val);
+ else if (strcmp(name, "n_gzip") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "gzip", val);
+ else if (strcmp(name, "n_gunzip") == 0)
+ return varnish_submit_derive (conf->instance, "totals", "total_operations", "gunzip", val);
+ }
+
+ if (conf->collect_uptime)
+ {
+ if (strcmp(name, "uptime") == 0)
+ return varnish_submit_gauge (conf->instance, "uptime", "uptime", "client_uptime", val);
+ }
+
+ if (conf->collect_vcl)
+ {
+ if (strcmp(name, "n_vcl") == 0)
+ return varnish_submit_gauge (conf->instance, "vcl", "vcl", "total_vcl", val);
+ else if (strcmp(name, "n_vcl_avail") == 0)
+ return varnish_submit_gauge (conf->instance, "vcl", "vcl", "avail_vcl", val);
+ else if (strcmp(name, "n_vcl_discard") == 0)
+ return varnish_submit_gauge (conf->instance, "vcl", "vcl", "discarded_vcl", val);
+ else if (strcmp(name, "vmods") == 0)
+ return varnish_submit_gauge (conf->instance, "vcl", "objects", "vmod", val);
+ }
+
+ if (conf->collect_workers)
+ {
+ if (strcmp(name, "threads") == 0)
+ return varnish_submit_gauge (conf->instance, "workers", "threads", "worker", val);
+ else if (strcmp(name, "threads_created") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "created", val);
+ else if (strcmp(name, "threads_failed") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "failed", val);
+ else if (strcmp(name, "threads_limited") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "limited", val);
+ else if (strcmp(name, "threads_destroyed") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "dropped", val);
+ else if (strcmp(name, "thread_queue_len") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "queue_length", "threads", val);
+ else if (strcmp(name, "n_wrk") == 0)
+ return varnish_submit_gauge (conf->instance, "workers", "threads", "worker", val);
+ else if (strcmp(name, "n_wrk_create") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "created", val);
+ else if (strcmp(name, "n_wrk_failed") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "failed", val);
+ else if (strcmp(name, "n_wrk_max") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "limited", val);
+ else if (strcmp(name, "n_wrk_drop") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_threads", "dropped", val);
+ else if (strcmp(name, "n_wrk_queue") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_requests", "queued", val);
+ else if (strcmp(name, "n_wrk_overflow") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_requests", "overflowed", val);
+ else if (strcmp(name, "n_wrk_queued") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_requests", "queued", val);
+ else if (strcmp(name, "n_wrk_lqueue") == 0)
+ return varnish_submit_derive (conf->instance, "workers", "total_requests", "queue_length", val);
+ }
+
+#if HAVE_VARNISH_V4
+ if (conf->collect_vsm)
+ {
+ if (strcmp(name, "vsm_free") == 0)
+ return varnish_submit_gauge (conf->instance, "vsm", "bytes", "free", val);
+ else if (strcmp(name, "vsm_used") == 0)
+ return varnish_submit_gauge (conf->instance, "vsm", "bytes", "used", val);
+ else if (strcmp(name, "vsm_cooling") == 0)
+ return varnish_submit_gauge (conf->instance, "vsm", "bytes", "cooling", val);
+ else if (strcmp(name, "vsm_overflow") == 0)
+ return varnish_submit_gauge (conf->instance, "vsm", "bytes", "overflow", val);
+ else if (strcmp(name, "vsm_overflowed") == 0)
+ return varnish_submit_derive (conf->instance, "vsm", "total_bytes", "overflowed", val);
+ }
+#endif
+
+ return (0);
+
+} /* }}} static int varnish_monitor */
+#else /* if HAVE_VARNISH_V2 */
static void varnish_monitor (const user_config_t *conf, /* {{{ */
const c_varnish_stats_t *stats)
{
@@ -150,41 +541,20 @@ static void varnish_monitor (const user_
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)
@@ -203,13 +573,8 @@ static void varnish_monitor (const user_
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 */
@@ -236,14 +601,6 @@ static void varnish_monitor (const user_
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)
@@ -262,32 +619,22 @@ static void varnish_monitor (const user_
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 */
@@ -303,45 +650,6 @@ static void varnish_monitor (const user_
/* 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)
{
@@ -351,21 +659,8 @@ static void varnish_monitor (const user_
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);
}
@@ -384,7 +679,6 @@ static void varnish_monitor (const user_
varnish_submit_derive (conf->instance, "shm", "total_operations", "cycles" , stats->shm_cycles);
}
-#if HAVE_VARNISH_V2
if (conf->collect_sm)
{
/* allocator requests */
@@ -410,7 +704,6 @@ static void varnish_monitor (const user_
/* SMA bytes free */
varnish_submit_derive (conf->instance, "sma", "total_bytes", "free" , stats->sma_bfree);
}
-#endif
if (conf->collect_sms)
{
@@ -428,25 +721,14 @@ static void varnish_monitor (const user_
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 */
@@ -455,7 +737,6 @@ static void varnish_monitor (const user_
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)
@@ -470,47 +751,12 @@ static void varnish_monitor (const user_
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 */
@@ -519,28 +765,10 @@ static void varnish_monitor (const user_
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 */
@@ -551,37 +779,14 @@ static void varnish_monitor (const user_
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) /* {{{ */
@@ -632,8 +837,12 @@ static int varnish_read (user_data_t *ud
stats = VSC_Main(vd, NULL);
#endif
- varnish_monitor (conf, stats);
- VSM_Close (vd);
+#if HAVE_VARNISH_V3
+ VSC_Iter (vd, varnish_monitor, conf);
+#else /* if HAVE_VARNISH_V4 */
+ VSC_Iter (vd, NULL, varnish_monitor, conf);
+#endif
+ VSM_Delete (vd);
return (0);
} /* }}} */

View file

@ -0,0 +1,40 @@
--- src/config.h.in.orig 2016-01-22 09:56:33 UTC
+++ src/config.h.in
@@ -562,8 +562,8 @@
/* Define to 1 if you have the <modbus.h> header file. */
#undef HAVE_MODBUS_H
-/* Define to 1 if you have the <mongo.h> header file. */
-#undef HAVE_MONGO_H
+/* Define to 1 if you have the <mongoc.h> header file. */
+#undef HAVE_MONGOC_H
/* Define to 1 if you have the <mysql.h> header file. */
#undef HAVE_MYSQL_H
@@ -1541,13 +1541,15 @@
module search path. */
#undef LT_MODULE_PATH_VAR
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Define to the shared library suffix, say, ".dylib". */
#undef LT_SHARED_EXT
+/* Define to the shared archive member specification, say "(shr.o)". */
+#undef LT_SHARED_LIB_MEMBER
+
/* Define if NAN is defined by default and can initialize static variables. */
#undef NAN_STATIC_DEFAULT
@@ -1644,7 +1646,7 @@
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
-/* Define to a type to use for `error_t' if it is not otherwise available. */
+/* Define to a type to use for 'error_t' if it is not otherwise available. */
#undef error_t
/* Define to `int' if <sys/types.h> doesn't define. */

View file

@ -1,4 +1,4 @@
--- src/disk.c.orig 2015-03-10 14:14:45 UTC
--- src/disk.c.orig 2016-01-22 09:51:17 UTC
+++ src/disk.c
@@ -53,6 +53,10 @@
#if HAVE_IOKIT_IOBSD_H
@ -43,343 +43,3 @@
#elif HAVE_LIBKSTAT
kstat_t *ksp_chain;
@@ -395,173 +417,223 @@ static int disk_read (void)
io_registry_entry_t disk;
io_registry_entry_t disk_child;
io_iterator_t disk_list;
- CFDictionaryRef props_dict;
+ CFMutableDictionaryRef props_dict, child_dict;
CFDictionaryRef stats_dict;
- CFDictionaryRef child_dict;
CFStringRef tmp_cf_string_ref;
kern_return_t status;
- signed long long read_ops;
- signed long long read_byt;
- signed long long read_tme;
- signed long long write_ops;
- signed long long write_byt;
- signed long long write_tme;
+ signed long long read_ops, read_byt, read_tme;
+ signed long long write_ops, write_byt, write_tme;
- int disk_major;
- int disk_minor;
+ int disk_major, disk_minor;
char disk_name[DATA_MAX_NAME_LEN];
- char disk_name_bsd[DATA_MAX_NAME_LEN];
+ char child_disk_name_bsd[DATA_MAX_NAME_LEN], props_disk_name_bsd[DATA_MAX_NAME_LEN];
/* Get the list of all disk objects. */
- if (IOServiceGetMatchingServices (io_master_port,
- IOServiceMatching (kIOBlockStorageDriverClass),
- &disk_list) != kIOReturnSuccess)
- {
+ if (IOServiceGetMatchingServices (io_master_port, IOServiceMatching (kIOBlockStorageDriverClass), &disk_list) != kIOReturnSuccess) {
ERROR ("disk plugin: IOServiceGetMatchingServices failed.");
return (-1);
}
- while ((disk = IOIteratorNext (disk_list)) != 0)
- {
+ while ((disk = IOIteratorNext (disk_list)) != 0) {
props_dict = NULL;
stats_dict = NULL;
child_dict = NULL;
- /* `disk_child' must be released */
- if ((status = IORegistryEntryGetChildEntry (disk, kIOServicePlane, &disk_child))
- != kIOReturnSuccess)
- {
- /* This fails for example for DVD/CD drives.. */
+ /* get child of disk entry and corresponding property dictionary */
+ if ((status = IORegistryEntryGetChildEntry (disk, kIOServicePlane, &disk_child)) != kIOReturnSuccess) {
+ /* This fails for example for DVD/CD drives, which we want to ignore anyway */
DEBUG ("IORegistryEntryGetChildEntry (disk) failed: 0x%08x", status);
IOObjectRelease (disk);
continue;
}
-
- /* We create `props_dict' => we need to release it later */
- if (IORegistryEntryCreateCFProperties (disk,
- (CFMutableDictionaryRef *) &props_dict,
- kCFAllocatorDefault,
- kNilOptions)
- != kIOReturnSuccess)
- {
- ERROR ("disk-plugin: IORegistryEntryCreateCFProperties failed.");
+ if (IORegistryEntryCreateCFProperties (disk_child, (CFMutableDictionaryRef *) &child_dict, kCFAllocatorDefault, kNilOptions) != kIOReturnSuccess || child_dict == NULL) {
+ ERROR ("disk plugin: IORegistryEntryCreateCFProperties (disk_child) failed.");
IOObjectRelease (disk_child);
IOObjectRelease (disk);
continue;
}
- if (props_dict == NULL)
- {
- DEBUG ("IORegistryEntryCreateCFProperties (disk) failed.");
- IOObjectRelease (disk_child);
- IOObjectRelease (disk);
- continue;
+ /* extract name and major/minor numbers */
+ memset (child_disk_name_bsd, 0, sizeof (child_disk_name_bsd));
+ tmp_cf_string_ref = (CFStringRef) CFDictionaryGetValue (child_dict, CFSTR(kIOBSDNameKey));
+ if (tmp_cf_string_ref) {
+ assert (CFGetTypeID (tmp_cf_string_ref) == CFStringGetTypeID ());
+ CFStringGetCString (tmp_cf_string_ref, child_disk_name_bsd, sizeof (child_disk_name_bsd), kCFStringEncodingUTF8);
}
+ disk_major = (int) dict_get_value (child_dict, kIOBSDMajorKey);
+ disk_minor = (int) dict_get_value (child_dict, kIOBSDMinorKey);
+ DEBUG ("disk plugin: child_disk_name_bsd=\"%s\" major=%d minor=%d", child_disk_name_bsd, disk_major, disk_minor);
+ CFRelease (child_dict);
+ IOObjectRelease (disk_child);
- /* tmp_cf_string_ref doesn't need to be released. */
- tmp_cf_string_ref = (CFStringRef) CFDictionaryGetValue (props_dict,
- CFSTR(kIOBSDNameKey));
- if (!tmp_cf_string_ref)
- {
- DEBUG ("disk plugin: CFDictionaryGetValue("
- "kIOBSDNameKey) failed.");
- CFRelease (props_dict);
- IOObjectRelease (disk_child);
+ /* get property dictionary of the disk entry itself */
+ if (IORegistryEntryCreateCFProperties (disk, (CFMutableDictionaryRef *) &props_dict, kCFAllocatorDefault, kNilOptions) != kIOReturnSuccess || props_dict == NULL) {
+ ERROR ("disk-plugin: IORegistryEntryCreateCFProperties failed.");
IOObjectRelease (disk);
continue;
}
- assert (CFGetTypeID (tmp_cf_string_ref) == CFStringGetTypeID ());
- memset (disk_name_bsd, 0, sizeof (disk_name_bsd));
- CFStringGetCString (tmp_cf_string_ref,
- disk_name_bsd, sizeof (disk_name_bsd),
- kCFStringEncodingUTF8);
- if (disk_name_bsd[0] == 0)
- {
- ERROR ("disk plugin: CFStringGetCString() failed.");
- CFRelease (props_dict);
- IOObjectRelease (disk_child);
- IOObjectRelease (disk);
- continue;
+ /* extract name and stats dictionary */
+ memset (props_disk_name_bsd, 0, sizeof (props_disk_name_bsd));
+ tmp_cf_string_ref = (CFStringRef) CFDictionaryGetValue (props_dict, CFSTR(kIOBSDNameKey));
+ if (tmp_cf_string_ref) {
+ assert (CFGetTypeID (tmp_cf_string_ref) == CFStringGetTypeID ());
+ CFStringGetCString (tmp_cf_string_ref, props_disk_name_bsd, sizeof (props_disk_name_bsd), kCFStringEncodingUTF8);
}
- DEBUG ("disk plugin: disk_name_bsd = \"%s\"", disk_name_bsd);
-
- stats_dict = (CFDictionaryRef) CFDictionaryGetValue (props_dict,
- CFSTR (kIOBlockStorageDriverStatisticsKey));
-
- if (stats_dict == NULL)
- {
- DEBUG ("disk plugin: CFDictionaryGetValue ("
- "%s) failed.",
- kIOBlockStorageDriverStatisticsKey);
+ stats_dict = (CFDictionaryRef) CFDictionaryGetValue (props_dict, CFSTR (kIOBlockStorageDriverStatisticsKey));
+ if (stats_dict == NULL) {
+ ERROR ("disk plugin: CFDictionaryGetValue (%s) failed.", kIOBlockStorageDriverStatisticsKey);
CFRelease (props_dict);
- IOObjectRelease (disk_child);
IOObjectRelease (disk);
continue;
}
+ DEBUG ("disk plugin: props_disk_name_bsd=\"%s\"", props_disk_name_bsd);
- if (IORegistryEntryCreateCFProperties (disk_child,
- (CFMutableDictionaryRef *) &child_dict,
- kCFAllocatorDefault,
- kNilOptions)
- != kIOReturnSuccess)
- {
- DEBUG ("disk plugin: IORegistryEntryCreateCFProperties ("
- "disk_child) failed.");
- IOObjectRelease (disk_child);
- CFRelease (props_dict);
- IOObjectRelease (disk);
- continue;
+ /* choose name */
+ if (use_bsd_name) {
+ if (child_disk_name_bsd[0] != 0)
+ sstrncpy (disk_name, child_disk_name_bsd, sizeof (disk_name));
+ else if (props_disk_name_bsd[0] != 0)
+ sstrncpy (disk_name, props_disk_name_bsd, sizeof (disk_name));
+ else {
+ ERROR ("disk plugin: can't find bsd disk name.");
+ ssnprintf (disk_name, sizeof (disk_name), "%i-%i", disk_major, disk_minor);
+ }
}
+ else
+ ssnprintf (disk_name, sizeof (disk_name), "%i-%i", disk_major, disk_minor);
- /* kIOBSDNameKey */
- disk_major = (int) dict_get_value (child_dict,
- kIOBSDMajorKey);
- disk_minor = (int) dict_get_value (child_dict,
- kIOBSDMinorKey);
- read_ops = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsReadsKey);
- read_byt = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsBytesReadKey);
- read_tme = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsTotalReadTimeKey);
- write_ops = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsWritesKey);
- write_byt = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsBytesWrittenKey);
- /* This property describes the number of nanoseconds spent
- * performing writes since the block storage driver was
- * instantiated. It is one of the statistic entries listed
- * under the top-level kIOBlockStorageDriverStatisticsKey
- * property table. It has an OSNumber value. */
- write_tme = dict_get_value (stats_dict,
- kIOBlockStorageDriverStatisticsTotalWriteTimeKey);
+ /* extract the stats */
+ read_ops = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsReadsKey);
+ read_byt = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsBytesReadKey);
+ read_tme = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsTotalReadTimeKey);
+ write_ops = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsWritesKey);
+ write_byt = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsBytesWrittenKey);
+ write_tme = dict_get_value (stats_dict, kIOBlockStorageDriverStatisticsTotalWriteTimeKey);
+ CFRelease (props_dict);
+ IOObjectRelease (disk);
- if (use_bsd_name)
- sstrncpy (disk_name, disk_name_bsd, sizeof (disk_name));
- else
- ssnprintf (disk_name, sizeof (disk_name), "%i-%i",
- disk_major, disk_minor);
+ /* and submit */
DEBUG ("disk plugin: disk_name = \"%s\"", disk_name);
-
if ((read_byt != -1LL) || (write_byt != -1LL))
disk_submit (disk_name, "disk_octets", read_byt, write_byt);
if ((read_ops != -1LL) || (write_ops != -1LL))
disk_submit (disk_name, "disk_ops", read_ops, write_ops);
if ((read_tme != -1LL) || (write_tme != -1LL))
- disk_submit (disk_name, "disk_time",
- read_tme / 1000,
- write_tme / 1000);
+ disk_submit (disk_name, "disk_time", read_tme / 1000, write_tme / 1000);
- CFRelease (child_dict);
- IOObjectRelease (disk_child);
- CFRelease (props_dict);
- IOObjectRelease (disk);
}
IOObjectRelease (disk_list);
/* #endif HAVE_IOKIT_IOKITLIB_H */
+#elif KERNEL_FREEBSD
+ int retry, dirty;
+
+ void *snap = NULL;
+ struct devstat *snap_iter;
+
+ struct gident *geom_id;
+
+ const char *disk_name;
+ long double read_time, write_time;
+
+ for (retry = 0, dirty = 1; retry < 5 && dirty == 1; retry++) {
+ if (snap != NULL)
+ geom_stats_snapshot_free(snap);
+
+ /* Get a fresh copy of stats snapshot */
+ snap = geom_stats_snapshot_get();
+ if (snap == NULL) {
+ ERROR("disk plugin: geom_stats_snapshot_get() failed.");
+ return (-1);
+ }
+
+ /* Check if we have dirty read from this snapshot */
+ dirty = 0;
+ geom_stats_snapshot_reset(snap);
+ while ((snap_iter = geom_stats_snapshot_next(snap)) != NULL) {
+ if (snap_iter->id == NULL)
+ continue;
+ geom_id = geom_lookupid(&geom_tree, snap_iter->id);
+
+ /* New device? refresh GEOM tree */
+ if (geom_id == NULL) {
+ geom_deletetree(&geom_tree);
+ if (geom_gettree(&geom_tree) != 0) {
+ ERROR("disk plugin: geom_gettree() failed");
+ geom_stats_snapshot_free(snap);
+ return (-1);
+ }
+ geom_id = geom_lookupid(&geom_tree, snap_iter->id);
+ }
+ /*
+ * This should be rare: the device come right before we take the
+ * snapshot and went away right after it. We will handle this
+ * case later, so don't mark dirty but silently ignore it.
+ */
+ if (geom_id == NULL)
+ continue;
+
+ /* Only collect PROVIDER data */
+ if (geom_id->lg_what != ISPROVIDER)
+ continue;
+
+ /* Only collect data when rank is 1 (physical devices) */
+ if (((struct gprovider *)(geom_id->lg_ptr))->lg_geom->lg_rank != 1)
+ continue;
+
+ /* Check if this is a dirty read quit for another try */
+ if (snap_iter->sequence0 != snap_iter->sequence1) {
+ dirty = 1;
+ break;
+ }
+ }
+ }
+
+ /* Reset iterator */
+ geom_stats_snapshot_reset(snap);
+ for (;;) {
+ snap_iter = geom_stats_snapshot_next(snap);
+ if (snap_iter == NULL)
+ break;
+
+ if (snap_iter->id == NULL)
+ continue;
+ geom_id = geom_lookupid(&geom_tree, snap_iter->id);
+ if (geom_id == NULL)
+ continue;
+ if (geom_id->lg_what != ISPROVIDER)
+ continue;
+ if (((struct gprovider *)(geom_id->lg_ptr))->lg_geom->lg_rank != 1)
+ continue;
+ /* Skip dirty reads, if present */
+ if (dirty && (snap_iter->sequence0 != snap_iter->sequence1))
+ continue;
+
+ disk_name = ((struct gprovider *)geom_id->lg_ptr)->lg_name;
+
+ if ((snap_iter->bytes[1] != 0) || (snap_iter->bytes[2] != 0)) {
+ disk_submit(disk_name, "disk_octets",
+ (derive_t)snap_iter->bytes[1],
+ (derive_t)snap_iter->bytes[2]);
+ }
+
+ if ((snap_iter->operations[1] != 0) || (snap_iter->operations[2] != 0)) {
+ disk_submit(disk_name, "disk_ops",
+ (derive_t)snap_iter->operations[1],
+ (derive_t)snap_iter->operations[2]);
+ }
+
+ read_time = devstat_compute_etime(&snap_iter->duration[DEVSTAT_READ], NULL);
+ write_time = devstat_compute_etime(&snap_iter->duration[DEVSTAT_WRITE], NULL);
+ if ((read_time != 0) || (write_time != 0)) {
+ disk_submit (disk_name, "disk_time",
+ (derive_t)(read_time*1000), (derive_t)(write_time*1000));
+ }
+ }
+ geom_stats_snapshot_free(snap);
+
#elif KERNEL_LINUX
FILE *fh;
char buffer[1024];

View file

@ -0,0 +1,11 @@
--- src/write_mongodb.c.orig 2015-12-01 15:28:11 UTC
+++ src/write_mongodb.c
@@ -41,7 +41,7 @@
#else
# define MONGO_USE_LONG_LONG_INT 1
#endif
-#include <mongo.h>
+#include <mongoc.h>
#if (MONGO_MAJOR == 0) && (MONGO_MINOR < 8)
# define bson_alloc() bson_create()

View file

@ -0,0 +1,14 @@
--- src/zfs_arc.c.orig 2016-01-22 09:51:17 UTC
+++ src/zfs_arc.c
@@ -270,8 +270,11 @@ static int za_read (void)
za_read_derive (ksp, "deleted", "cache_operation", "deleted");
#if __FreeBSD__
za_read_derive (ksp, "allocated","cache_operation", "allocated");
+#if defined(__FreeBSD_version) && (__FreeBSD_version < 1002501)
+ /* stolen removed from sysctl kstat.zfs.misc.arcstats on FreeBSD 10.2+ */
za_read_derive (ksp, "stolen", "cache_operation", "stolen");
#endif
+#endif
/* Issue indicators */
za_read_derive (ksp, "mutex_miss", "mutex_operations", "miss");

View file

@ -1,9 +1,9 @@
--- version-gen.sh.orig 2015-05-26 20:23:28 UTC
--- version-gen.sh.orig 2016-01-22 09:51:17 UTC
+++ version-gen.sh
@@ -1,13 +1,3 @@
#!/bin/sh
-DEFAULT_VERSION="5.5.0.git"
-DEFAULT_VERSION="5.5.1.git"
-
-VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
-
@ -14,4 +14,4 @@
-VERSION="`echo \"$VERSION\" | sed -e 's/-/./g'`"
-
-printf "%s" "$VERSION"
+echo -n "5.5.0.git"
+echo -n "5.5.1.git"

View file

@ -30,7 +30,6 @@ lib/collectd/disk.so
lib/collectd/dns.so
lib/collectd/email.so
lib/collectd/exec.so
lib/collectd/fhcount.so
lib/collectd/filecount.so
%%STATGRAB%%lib/collectd/interface.so
%%IPMI%%lib/collectd/ipmi.so