diff options
author | crees <crees@FreeBSD.org> | 2012-12-01 20:14:37 +0800 |
---|---|---|
committer | crees <crees@FreeBSD.org> | 2012-12-01 20:14:37 +0800 |
commit | 997e19d44bd22d65815391e5e8189b59a1da18f0 (patch) | |
tree | a156a555bd849d91072894419895025ce0b59db6 /net-mgmt/collectd5 | |
parent | ddfa623ea288ee01dd8a191801dc1f89e5891f79 (diff) | |
download | freebsd-ports-gnome-997e19d44bd22d65815391e5e8189b59a1da18f0.tar.gz freebsd-ports-gnome-997e19d44bd22d65815391e5e8189b59a1da18f0.tar.zst freebsd-ports-gnome-997e19d44bd22d65815391e5e8189b59a1da18f0.zip |
Enable users plugin, which works as is
Enable zfs_arc plugin, which has been ported to FreeBSD
(patch has also been submitted upstream)
Make write_graphite optional, allowing it as the single output plugin
(otherwise at least another output plugin is required)
PR: ports/173894
Submitted by: Paul Guyot <pguyot@kallisys.net>
Approved by: Krzysztof Stryjek <ports@bsdserwis.com> (maintainer)
Feature safe: yes
Diffstat (limited to 'net-mgmt/collectd5')
-rw-r--r-- | net-mgmt/collectd5/Makefile | 15 | ||||
-rw-r--r-- | net-mgmt/collectd5/files/patch-configure.in | 52 | ||||
-rw-r--r-- | net-mgmt/collectd5/files/patch-src__Makefile.am | 87 | ||||
-rw-r--r-- | net-mgmt/collectd5/files/patch-src__zfs_arc.c | 232 | ||||
-rw-r--r-- | net-mgmt/collectd5/pkg-plist | 8 |
5 files changed, 379 insertions, 15 deletions
diff --git a/net-mgmt/collectd5/Makefile b/net-mgmt/collectd5/Makefile index f4dfe01b17b7..25edd8c951df 100644 --- a/net-mgmt/collectd5/Makefile +++ b/net-mgmt/collectd5/Makefile @@ -7,7 +7,7 @@ PORTNAME= collectd PORTVERSION= 5.1.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= net-mgmt MASTER_SITES= http://collectd.org/files/ @@ -23,7 +23,7 @@ LATEST_LINK= collectd5 OPTIONS_DEFINE= CGI BIND DEBUG GCRYPT VIRT OPTIONS_MULTI= INPUT OUTPUT -OPTIONS_MULTI_OUTPUT= RRDTOOL RRDCACHED WRITE_HTTP +OPTIONS_MULTI_OUTPUT= RRDTOOL RRDCACHED WRITE_GRAPHITE WRITE_HTTP OPTIONS_MULTI_INPUT= APACHE APCUPS CURL CURL_JSON CURL_XML DBI DISK \ GCRYPT NUTUPS INTERFACE MBMON MEMCACHED MYSQL NGINX OPENVPN \ PDNS PGSQL PING PYTHON ROUTEROS SNMP TOKYOTYRANT XMMS @@ -60,6 +60,7 @@ XMMS_DESC= XMMS # OUTPUT RRDTOOL_DESC= RRDTool RRDCACHED_DESC= RRDTool Cached (requires RRDTOOL) +WRITE_GRAPHITE_DESC= write_graphite WRITE_HTTP_DESC= write_http MAN1= collectd.1 collectd-nagios.1 collectdmon.1 collectdctl.1 @@ -133,11 +134,9 @@ CONFIGURE_ARGS= --localstatedir=/var \ --disable-teamspeak2 \ --disable-ted \ --disable-thermal \ - --disable-users \ --disable-vmem \ --disable-vserver \ --disable-wireless \ - --disable-zfs_arc \ --without-perl-bindings \ --without-librabbitmq \ --disable-varnish \ @@ -405,6 +404,14 @@ CONFIGURE_ARGS+=--disable-libvirt PLIST_SUB+= VIRT="@comment " .endif +.if ${PORT_OPTIONS:MWRITE_GRAPHITE} +CONFIGURE_ARGS+=--enable-write_graphite +PLIST_SUB+= WRITE_GRAPHITE="" +.else +CONFIGURE_ARGS+=--disable-write_graphite +PLIST_SUB+= WRITE_GRAPHITE="@comment " +.endif + .if ${PORT_OPTIONS:MWRITE_HTTP} CONFIGURE_ARGS+=--enable-write_http PLIST_SUB+= WRITE_HTTP="" diff --git a/net-mgmt/collectd5/files/patch-configure.in b/net-mgmt/collectd5/files/patch-configure.in index 7f158b4b239a..f34d0762fed9 100644 --- a/net-mgmt/collectd5/files/patch-configure.in +++ b/net-mgmt/collectd5/files/patch-configure.in @@ -1,6 +1,16 @@ ---- configure.in.orig 2011-10-14 12:49:49.000000000 -0800 -+++ configure.in 2012-03-20 08:09:25.000000000 -0800 -@@ -98,7 +98,7 @@ +--- configure.in.orig 2012-04-02 08:04:58.000000000 +0000 ++++ configure.in 2012-11-23 22:00:22.424129087 +0000 +@@ -67,6 +67,9 @@ + *openbsd*) + ac_system="OpenBSD" + ;; ++ *freebsd*) ++ ac_system="FreeBSD" ++ ;; + *aix*) + AC_DEFINE([KERNEL_AIX], 1, [True if program is to be compiled for a AIX kernel]) + ac_system="AIX" +@@ -98,7 +101,7 @@ fi # Where to install .pc files. @@ -9,7 +19,24 @@ AC_SUBST(pkgconfigdir) # Check for standards compliance mode -@@ -1745,9 +1745,6 @@ +@@ -1378,6 +1381,7 @@ + then + AC_CHECK_LIB(kstat, kstat_open, [with_kstat="yes"], [with_kstat="no (libkstat not found)"], []) + fi ++ + if test "x$with_kstat" = "xyes" + then + AC_CHECK_LIB(devinfo, di_init, [with_devinfo="yes"], [with_devinfo="no (not found)"], []) +@@ -1387,6 +1391,8 @@ + then + AC_DEFINE(HAVE_LIBKSTAT, 1, + [Define to 1 if you have the 'kstat' library (-lkstat)]) ++ BUILD_WITH_LIBKSTAT_LIBS="-lkstat" ++ AC_SUBST(BUILD_WITH_LIBKSTAT_LIBS) + fi + AM_CONDITIONAL(BUILD_WITH_LIBKSTAT, test "x$with_kstat" = "xyes") + AM_CONDITIONAL(BUILD_WITH_LIBDEVINFO, test "x$with_devinfo" = "xyes") +@@ -1807,9 +1813,6 @@ [with_libgcrypt="yes"], [with_libgcrypt="no (symbol gcry_md_hash_buffer not found)"]) @@ -19,7 +46,7 @@ fi CPPFLAGS="$SAVE_CPPFLAGS" -@@ -3165,7 +3162,7 @@ +@@ -3297,7 +3300,7 @@ if test "x$with_python" = "xyes" then AC_MSG_CHECKING([for Python LIBS]) @@ -28,7 +55,7 @@ python_config_status=$? if test "$python_config_status" -ne 0 || test "x$python_library_flags" = "x" -@@ -3180,7 +3177,7 @@ +@@ -3312,7 +3315,7 @@ if test "x$with_python" = "xyes" then LDFLAGS="-L$python_library_path $LDFLAGS" @@ -37,3 +64,16 @@ AC_CHECK_FUNC(PyObject_CallFunction, [with_python="yes"], +@@ -4580,6 +4583,12 @@ + plugin_zfs_arc="yes" + fi + ++# FreeBSD ++if test "x$ac_system" = "xFreeBSD" ++then ++ plugin_zfs_arc="yes" ++fi ++ + if test "x$with_devinfo$with_kstat" = "xyesyes" + then + plugin_cpu="yes" diff --git a/net-mgmt/collectd5/files/patch-src__Makefile.am b/net-mgmt/collectd5/files/patch-src__Makefile.am index 22dab2457e6a..db1f43092fdd 100644 --- a/net-mgmt/collectd5/files/patch-src__Makefile.am +++ b/net-mgmt/collectd5/files/patch-src__Makefile.am @@ -1,6 +1,87 @@ ---- src/Makefile.am.orig 2012-01-08 16:05:12.000000000 +0100 -+++ src/Makefile.am 2012-01-08 16:05:53.000000000 +0100 -@@ -1337,12 +1337,7 @@ +--- src/Makefile.am.orig 2012-04-02 08:04:58.000000000 +0000 ++++ src/Makefile.am 2012-11-23 22:01:15.169498221 +0000 +@@ -63,7 +63,7 @@ + collectd_LDADD += -lpthread + endif + if BUILD_WITH_LIBKSTAT +-collectd_LDADD += -lkstat ++collectd_LDADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + collectd_LDADD += -ldevinfo +@@ -224,7 +224,7 @@ + cpu_la_LDFLAGS = -module -avoid-version + cpu_la_LIBADD = + if BUILD_WITH_LIBKSTAT +-cpu_la_LIBADD += -lkstat ++cpu_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + cpu_la_LIBADD += -ldevinfo +@@ -322,7 +322,7 @@ + disk_la_LDFLAGS = -module -avoid-version + disk_la_LIBADD = + if BUILD_WITH_LIBKSTAT +-disk_la_LIBADD += -lkstat ++disk_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + disk_la_LIBADD += -ldevinfo +@@ -429,7 +429,7 @@ + interface_la_LIBADD += $(BUILD_WITH_LIBSTATGRAB_LDFLAGS) + else + if BUILD_WITH_LIBKSTAT +-interface_la_LIBADD += -lkstat ++interface_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + interface_la_LIBADD += -ldevinfo +@@ -634,7 +634,7 @@ + collectd_LDADD += "-dlopen" memory.la + collectd_DEPENDENCIES += memory.la + if BUILD_WITH_LIBKSTAT +-memory_la_LIBADD += -lkstat ++memory_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + memory_la_LIBADD += -ldevinfo +@@ -1021,7 +1021,7 @@ + collectd_LDADD += "-dlopen" swap.la + collectd_DEPENDENCIES += swap.la + if BUILD_WITH_LIBKSTAT +-swap_la_LIBADD += -lkstat ++swap_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + if BUILD_WITH_LIBDEVINFO + swap_la_LIBADD += -ldevinfo +@@ -1067,7 +1067,7 @@ + pkglib_LTLIBRARIES += tape.la + tape_la_SOURCES = tape.c + tape_la_LDFLAGS = -module -avoid-version +-tape_la_LIBADD = -lkstat -ldevinfo ++tape_la_LIBADD = $(BUILD_WITH_LIBKSTAT_LIBS) -ldevinfo + collectd_LDADD += "-dlopen" tape.la + collectd_DEPENDENCIES += tape.la + endif +@@ -1190,7 +1190,7 @@ + uptime_la_LDFLAGS = -module -avoid-version + uptime_la_LIBADD = + if BUILD_WITH_LIBKSTAT +-uptime_la_LIBADD += -lkstat ++uptime_la_LIBADD += $(BUILD_WITH_LIBKSTAT_LIBS) + endif + collectd_LDADD += "-dlopen" uptime.la + collectd_DEPENDENCIES += uptime.la +@@ -1313,7 +1313,7 @@ + zfs_arc_la_SOURCES = zfs_arc.c + zfs_arc_la_CFLAGS = $(AM_CFLAGS) + zfs_arc_la_LDFLAGS = -module -avoid-version +-zfs_arc_la_LIBADD = -lkstat ++zfs_arc_la_LIBADD = $(BUILD_WITH_LIBKSTAT_LIBS) + collectd_LDADD += "-dlopen" zfs_arc.la + collectd_DEPENDENCIES += zfs_arc.la + endif +@@ -1374,12 +1374,7 @@ install-exec-hook: $(mkinstalldirs) $(DESTDIR)$(sysconfdir) diff --git a/net-mgmt/collectd5/files/patch-src__zfs_arc.c b/net-mgmt/collectd5/files/patch-src__zfs_arc.c new file mode 100644 index 000000000000..0de69f716df5 --- /dev/null +++ b/net-mgmt/collectd5/files/patch-src__zfs_arc.c @@ -0,0 +1,232 @@ +--- src/zfs_arc.c.orig 2012-04-02 08:04:58.000000000 +0000 ++++ src/zfs_arc.c 2012-11-24 17:54:21.715129054 +0000 +@@ -25,11 +25,57 @@ + #include "common.h" + #include "plugin.h" + ++#if !defined(HAVE_LIBKSTAT) && defined(HAVE_SYSCTLBYNAME) ++#include <sys/sysctl.h> ++#endif ++ + /* + * Global variables + */ +-static kstat_t *ksp; ++#if defined(HAVE_LIBKSTAT) + extern kstat_ctl_t *kc; ++#endif ++ ++/* ++ * Context ++ */ ++struct za_context { ++#if defined(HAVE_LIBKSTAT) ++ kstat_t *ksp; ++#endif ++}; ++ ++static int za_init_context(struct za_context *ctx) ++{ ++#if defined(HAVE_LIBKSTAT) ++ get_kstat (&ctx->ksp, "zfs", 0, "arcstats"); ++ if (ctx->ksp == NULL) ++ { ++ ERROR ("zfs_arc plugin: Cannot find zfs:0:arcstats kstat."); ++ return (-1); ++ } ++#endif ++ return 0; ++} ++ ++static long long za_get_value(struct za_context *ctx, const char* name) ++{ ++#if defined(HAVE_LIBKSTAT) ++ return get_kstat_value(ctx->ksp, name); ++#elif defined(HAVE_SYSCTLBYNAME) ++ // kstat values are available on FreeBSD through sysctl ++ char fullname[512]; ++ long long result = 0; ++ size_t size = sizeof(result); ++ ssnprintf(fullname, sizeof(fullname), "kstat.zfs.misc.arcstats.%s", name); ++ if (sysctlbyname(fullname, &result, &size, NULL, 0) != 0 || size != sizeof(result)) ++ { ++ ERROR ("zfs_arc plugin: Cannot find stats using sysctl"); ++ result = 0; ++ } ++ return result; ++#endif ++} + + static void za_submit (const char* type, const char* type_instance, value_t* values, int values_len) + { +@@ -54,13 +100,13 @@ + za_submit (type, type_instance, &vv, 1); + } + +-static int za_read_derive (kstat_t *ksp, const char *kstat_value, ++static int za_read_derive (struct za_context *ctx, const char *kstat_value, + const char *type, const char *type_instance) + { + long long tmp; + value_t v; + +- tmp = get_kstat_value (ksp, kstat_value); ++ tmp = za_get_value (ctx, (char *)kstat_value); + if (tmp == -1LL) + { + ERROR ("zfs_arc plugin: Reading kstat value \"%s\" failed.", kstat_value); +@@ -69,15 +115,16 @@ + + v.derive = (derive_t) tmp; + za_submit (type, type_instance, /* values = */ &v, /* values_num = */ 1); ++ return (0); + } + +-static int za_read_gauge (kstat_t *ksp, const char *kstat_value, ++static int za_read_gauge (struct za_context *ctx, const char *kstat_value, + const char *type, const char *type_instance) + { + long long tmp; + value_t v; + +- tmp = get_kstat_value (ksp, kstat_value); ++ tmp = za_get_value (ctx, (char *)kstat_value); + if (tmp == -1LL) + { + ERROR ("zfs_arc plugin: Reading kstat value \"%s\" failed.", kstat_value); +@@ -86,18 +133,14 @@ + + v.gauge = (gauge_t) tmp; + za_submit (type, type_instance, /* values = */ &v, /* values_num = */ 1); ++ return (0); + } + +-static void za_submit_ratio (const char* type_instance, gauge_t hits, gauge_t misses) ++static void za_submit_ratio (const char* type_instance, long long hits, long long misses) + { + gauge_t ratio = NAN; + +- if (!isfinite (hits) || (hits < 0.0)) +- hits = 0.0; +- if (!isfinite (misses) || (misses < 0.0)) +- misses = 0.0; +- +- if ((hits != 0.0) || (misses != 0.0)) ++ if ((hits > 0) || (misses > 0)) + ratio = hits / (hits + misses); + + za_submit_gauge ("cache_ratio", type_instance, ratio); +@@ -105,56 +148,55 @@ + + static int za_read (void) + { +- gauge_t arc_hits, arc_misses, l2_hits, l2_misses; ++ long long arc_hits, arc_misses, l2_hits, l2_misses; + value_t l2_io[2]; ++ struct za_context ctx; + +- get_kstat (&ksp, "zfs", 0, "arcstats"); +- if (ksp == NULL) ++ if (za_init_context (&ctx) < 0) + { +- ERROR ("zfs_arc plugin: Cannot find zfs:0:arcstats kstat."); + return (-1); + } + + /* Sizes */ +- za_read_gauge (ksp, "size", "cache_size", "arc"); +- za_read_gauge (ksp, "l2_size", "cache_size", "L2"); ++ za_read_gauge (&ctx, "size", "cache_size", "arc"); ++ za_read_gauge (&ctx, "l2_size", "cache_size", "L2"); + +- /* Operations */ +- za_read_derive (ksp, "allocated","cache_operation", "allocated"); +- za_read_derive (ksp, "deleted", "cache_operation", "deleted"); +- za_read_derive (ksp, "stolen", "cache_operation", "stolen"); +- +- /* Issue indicators */ +- za_read_derive (ksp, "mutex_miss", "mutex_operation", "miss"); +- za_read_derive (ksp, "hash_collisions", "hash_collisions", ""); ++ /* Operations */ ++ za_read_derive (&ctx, "allocated","cache_operation", "allocated"); ++ za_read_derive (&ctx, "deleted", "cache_operation", "deleted"); ++ za_read_derive (&ctx, "stolen", "cache_operation", "stolen"); ++ ++ /* Issue indicators */ ++ za_read_derive (&ctx, "mutex_miss", "mutex_operation", "miss"); ++ za_read_derive (&ctx, "hash_collisions", "hash_collisions", ""); + +- /* Evictions */ +- za_read_derive (ksp, "evict_l2_cached", "cache_eviction", "cached"); +- za_read_derive (ksp, "evict_l2_eligible", "cache_eviction", "eligible"); +- za_read_derive (ksp, "evict_l2_ineligible", "cache_eviction", "ineligible"); ++ /* Evictions */ ++ za_read_derive (&ctx, "evict_l2_cached", "cache_eviction", "cached"); ++ za_read_derive (&ctx, "evict_l2_eligible", "cache_eviction", "eligible"); ++ za_read_derive (&ctx, "evict_l2_ineligible", "cache_eviction", "ineligible"); + + /* Hits / misses */ +- za_read_derive (ksp, "demand_data_hits", "cache_result", "demand_data-hit"); +- za_read_derive (ksp, "demand_metadata_hits", "cache_result", "demand_metadata-hit"); +- za_read_derive (ksp, "prefetch_data_hits", "cache_result", "prefetch_data-hit"); +- za_read_derive (ksp, "prefetch_metadata_hits", "cache_result", "prefetch_metadata-hit"); +- za_read_derive (ksp, "demand_data_misses", "cache_result", "demand_data-miss"); +- za_read_derive (ksp, "demand_metadata_misses", "cache_result", "demand_metadata-miss"); +- za_read_derive (ksp, "prefetch_data_misses", "cache_result", "prefetch_data-miss"); +- za_read_derive (ksp, "prefetch_metadata_misses", "cache_result", "prefetch_metadata-miss"); ++ za_read_derive (&ctx, "demand_data_hits", "cache_result", "demand_data-hit"); ++ za_read_derive (&ctx, "demand_metadata_hits", "cache_result", "demand_metadata-hit"); ++ za_read_derive (&ctx, "prefetch_data_hits", "cache_result", "prefetch_data-hit"); ++ za_read_derive (&ctx, "prefetch_metadata_hits", "cache_result", "prefetch_metadata-hit"); ++ za_read_derive (&ctx, "demand_data_misses", "cache_result", "demand_data-miss"); ++ za_read_derive (&ctx, "demand_metadata_misses", "cache_result", "demand_metadata-miss"); ++ za_read_derive (&ctx, "prefetch_data_misses", "cache_result", "prefetch_data-miss"); ++ za_read_derive (&ctx, "prefetch_metadata_misses", "cache_result", "prefetch_metadata-miss"); + + /* Ratios */ +- arc_hits = (gauge_t) get_kstat_value(ksp, "hits"); +- arc_misses = (gauge_t) get_kstat_value(ksp, "misses"); +- l2_hits = (gauge_t) get_kstat_value(ksp, "l2_hits"); +- l2_misses = (gauge_t) get_kstat_value(ksp, "l2_misses"); ++ arc_hits = za_get_value (&ctx, "hits"); ++ arc_misses = za_get_value (&ctx, "misses"); ++ l2_hits = za_get_value (&ctx, "l2_hits"); ++ l2_misses = za_get_value (&ctx, "l2_misses"); + + za_submit_ratio ("arc", arc_hits, arc_misses); + za_submit_ratio ("L2", l2_hits, l2_misses); + + /* I/O */ +- l2_io[0].derive = get_kstat_value(ksp, "l2_read_bytes"); +- l2_io[1].derive = get_kstat_value(ksp, "l2_write_bytes"); ++ l2_io[0].derive = za_get_value (&ctx, "l2_read_bytes"); ++ l2_io[1].derive = za_get_value (&ctx, "l2_write_bytes"); + + za_submit ("io_octets", "L2", l2_io, /* num values = */ 2); + +@@ -163,14 +205,23 @@ + + static int za_init (void) /* {{{ */ + { +- ksp = NULL; +- ++#if defined(HAVE_LIBKSTAT) + /* kstats chain already opened by update_kstat (using *kc), verify everything went fine. */ + if (kc == NULL) + { + ERROR ("zfs_arc plugin: kstat chain control structure not available."); + return (-1); + } ++#elif defined(HAVE_SYSCTLBYNAME) ++ /* make sure ARC is available (arc_size is not null) */ ++ unsigned long long arc_size; ++ size_t size = sizeof(arc_size); ++ if (sysctlbyname("kstat.zfs.misc.arcstats.size", &arc_size, &size, NULL, 0) != 0 || arc_size == 0) ++ { ++ ERROR ("zfs_arc plugin: could not get ARC size using sysctl, is ARC enabled?"); ++ return (-1); ++ } ++#endif + + return (0); + } /* }}} int za_init */ diff --git a/net-mgmt/collectd5/pkg-plist b/net-mgmt/collectd5/pkg-plist index 82a075c94f40..70d3b8c495bf 100644 --- a/net-mgmt/collectd5/pkg-plist +++ b/net-mgmt/collectd5/pkg-plist @@ -103,12 +103,16 @@ lib/collectd/unixsock.la lib/collectd/unixsock.so lib/collectd/uptime.la lib/collectd/uptime.so +lib/collectd/users.la +lib/collectd/users.so lib/collectd/uuid.la lib/collectd/uuid.so %%VIRT%%lib/collectd/libvirt.la %%VIRT%%lib/collectd/libvirt.so -lib/collectd/write_graphite.so -lib/collectd/write_graphite.la +%%WRITE_GRAPHITE%%lib/collectd/write_graphite.so +%%WRITE_GRAPHITE%%lib/collectd/write_graphite.la +lib/collectd/zfs_arc.la +lib/collectd/zfs_arc.so lib/libcollectdclient.la lib/libcollectdclient.so lib/libcollectdclient.so.0 |