Port some of the plugins to support NetBSD:
* entropy * memory * swap * disk by shamelessly copying code from vmstat/iostat/rndctl etc. Add comments to one patch missing one. Bump PKGREVISION.
This commit is contained in:
parent
6aac947743
commit
37301e4e46
13 changed files with 846 additions and 10 deletions
|
@ -1,6 +1,6 @@
|
|||
# $NetBSD: Makefile,v 1.6 2015/06/12 10:51:12 wiz Exp $
|
||||
# $NetBSD: Makefile,v 1.7 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
PKGREVISION= 1
|
||||
PKGREVISION= 2
|
||||
.include "../../sysutils/collectd/Makefile.common"
|
||||
|
||||
COMMENT= Statistics collection daemon base
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@comment $NetBSD: PLIST,v 1.3 2015/04/14 11:27:30 fhajny Exp $
|
||||
@comment $NetBSD: PLIST,v 1.4 2015/08/11 13:19:21 he Exp $
|
||||
bin/collectd-nagios
|
||||
bin/collectd-tg
|
||||
bin/collectdctl
|
||||
|
@ -13,6 +13,7 @@ ${PLIST.battery}lib/collectd/battery.la
|
|||
${PLIST.contextswitch}lib/collectd/contextswitch.la
|
||||
${PLIST.cpu}lib/collectd/cpu.la
|
||||
lib/collectd/csv.la
|
||||
${PLIST.entropy}lib/collectd/entropy.la
|
||||
${PLIST.df}lib/collectd/df.la
|
||||
${PLIST.disk}lib/collectd/disk.la
|
||||
lib/collectd/email.la
|
||||
|
|
|
@ -1,13 +1,21 @@
|
|||
$NetBSD: distinfo,v 1.8 2015/06/10 20:05:26 fhajny Exp $
|
||||
$NetBSD: distinfo,v 1.9 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
SHA1 (collectd-5.5.0.tar.gz) = d24e284c1eae20c5e75b846c8b2612ab65bd5565
|
||||
RMD160 (collectd-5.5.0.tar.gz) = 2197758942a5fe56e4eabda3786f09d4138e943a
|
||||
Size (collectd-5.5.0.tar.gz) = 2244454 bytes
|
||||
SHA1 (patch-Makefile.in) = 197307399312fa26c71ca168b92bbe41d31d556d
|
||||
SHA1 (patch-configure) = d39d93002cd7b453122364824784c6b8c177724a
|
||||
SHA1 (patch-configure.ac) = 5a9224941ccf0091108346d01714641da79f3f49
|
||||
SHA1 (patch-src_Makefile.in) = f94d046ee323fdb9251ad49cf383b3a61df5dcaa
|
||||
SHA1 (patch-src_collectd-tg.c) = f9f41dfb0b1b55a62202128a165d5c9943faf5bc
|
||||
SHA1 (patch-src_collectd.conf.in) = f0b35085cf0ddfd766e140b145177ab1f1326f5f
|
||||
SHA1 (patch-src_config.h.in) = 08765b041f4764873b4055140d85c4478faeba49
|
||||
SHA1 (patch-src_df.c) = 19cca888b183a90759b359702e4d65c8afa6e58d
|
||||
SHA1 (patch-src_disk.c) = 159862e8ca1e841e3c4013c03ba03f059fdbbab5
|
||||
SHA1 (patch-src_entropy.c) = 51551cb758115e5fd7f099e787cfa7758a5f1ea9
|
||||
SHA1 (patch-src_libcollectclient_network__buffer.c) = e07d403d299613fa0885a0e7285849eb85510253
|
||||
SHA1 (patch-src_tcpconns.c) = fdc160087231a4aee2c405b8ed07791e90b20fd0
|
||||
SHA1 (patch-src_memory.c) = 7bbf24481e2ad6bb8b11a5e6bddd8145e1b2a6ef
|
||||
SHA1 (patch-src_swap.c) = d7d214184db790bebfe70dfc5084a164c50f6892
|
||||
SHA1 (patch-src_tcpconns.c) = 712af1b821d62217283df884dd283d5b1218ab7c
|
||||
SHA1 (patch-src_utils__dns.c) = c3782dc9127f42da30e3142b853aa2cb2259af94
|
||||
SHA1 (patch-version-gen.sh) = 07d830019e22ac651514b75acf299b1f50c4632d
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# $NetBSD: options.mk,v 1.2 2015/04/14 11:27:30 fhajny Exp $
|
||||
# $NetBSD: options.mk,v 1.3 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
PKG_OPTIONS_VAR= PKG_OPTIONS.collectd
|
||||
PKG_SUPPORTED_OPTIONS= cpu df interface load memory syslog uptime
|
||||
PKG_SUGGESTED_OPTIONS+= cpu df interface load memory syslog uptime
|
||||
|
||||
.if ${OPSYS} == "NetBSD"
|
||||
PKG_SUPPORTED_OPTIONS+= contextswitch pf tcpconns users
|
||||
PKG_SUGGESTED_OPTIONS+= contextswitch pf tcpconns users
|
||||
PKG_SUPPORTED_OPTIONS+= contextswitch disk entropy pf swap tcpconns users
|
||||
PKG_SUGGESTED_OPTIONS+= contextswitch disk entropy pf swap tcpconns users
|
||||
.endif
|
||||
|
||||
.if ${OPSYS} == "FreeBSD"
|
||||
|
@ -28,7 +28,8 @@ PKG_SUGGESTED_OPTIONS+= disk nfs swap users zfs-arc
|
|||
|
||||
.include "../../mk/bsd.options.mk"
|
||||
|
||||
PLIST_VARS+= apple-sensors battery contextswitch cpu df disk \
|
||||
PLIST_VARS+= apple-sensors battery contextswitch cpu entropy \
|
||||
df disk \
|
||||
interface load memory nfs pf processes swap \
|
||||
syslog tcpconns uptime users zfs-arc
|
||||
|
||||
|
|
144
sysutils/collectd/patches/patch-configure
Normal file
144
sysutils/collectd/patches/patch-configure
Normal file
|
@ -0,0 +1,144 @@
|
|||
$NetBSD: patch-configure,v 1.3 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Regen from configure.ac.
|
||||
|
||||
--- configure.orig 2015-05-27 07:51:50.000000000 +0000
|
||||
+++ configure
|
||||
@@ -13908,7 +13908,7 @@ else
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
@@ -13954,7 +13954,7 @@ else
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
@@ -13978,7 +13978,7 @@ rm -f core conftest.err conftest.$ac_obj
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
@@ -14023,7 +14023,7 @@ else
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
@@ -14047,7 +14047,7 @@ rm -f core conftest.err conftest.$ac_obj
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
@@ -15319,6 +15319,12 @@ $as_echo "#define KERNEL_OPENBSD 1" >>co
|
||||
|
||||
ac_system="OpenBSD"
|
||||
;;
|
||||
+ *netbsd*)
|
||||
+
|
||||
+$as_echo "#define KERNEL_NETBSD 1" >>confdefs.h
|
||||
+
|
||||
+ ac_system="NetBSD"
|
||||
+ ;;
|
||||
*aix*)
|
||||
|
||||
$as_echo "#define KERNEL_AIX 1" >>confdefs.h
|
||||
@@ -19171,6 +19177,54 @@ else
|
||||
fi
|
||||
|
||||
|
||||
+ac_fn_c_check_member "$LINENO" "struct kinfo_proc2" "p_pid" "ac_cv_member_struct_kinfo_proc2_p_pid" "
|
||||
+#include <sys/param.h>
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <kvm.h>
|
||||
+
|
||||
+"
|
||||
+if test "x$ac_cv_member_struct_kinfo_proc2_p_pid" = xyes; then :
|
||||
+
|
||||
+cat >>confdefs.h <<_ACEOF
|
||||
+#define HAVE_STRUCT_KINFO_PROC2_P_PID 1
|
||||
+_ACEOF
|
||||
+
|
||||
+
|
||||
+
|
||||
+$as_echo "#define HAVE_STRUCT_KINFO_PROC_NETBSD 1" >>confdefs.h
|
||||
+
|
||||
+ have_struct_kinfo_proc_netbsd="yes"
|
||||
+
|
||||
+else
|
||||
+
|
||||
+ have_struct_kinfo_proc_netbsd="no"
|
||||
+
|
||||
+fi
|
||||
+ac_fn_c_check_member "$LINENO" "struct kinfo_proc2" "p_uru_maxrss" "ac_cv_member_struct_kinfo_proc2_p_uru_maxrss" "
|
||||
+#include <sys/param.h>
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <kvm.h>
|
||||
+
|
||||
+"
|
||||
+if test "x$ac_cv_member_struct_kinfo_proc2_p_uru_maxrss" = xyes; then :
|
||||
+
|
||||
+cat >>confdefs.h <<_ACEOF
|
||||
+#define HAVE_STRUCT_KINFO_PROC2_P_URU_MAXRSS 1
|
||||
+_ACEOF
|
||||
+
|
||||
+
|
||||
+
|
||||
+$as_echo "#define HAVE_STRUCT_KINFO_PROC_NETBSD 1" >>confdefs.h
|
||||
+
|
||||
+ have_struct_kinfo_proc_netbsd="yes"
|
||||
+
|
||||
+else
|
||||
+
|
||||
+ have_struct_kinfo_proc_netbsd="no"
|
||||
+
|
||||
+fi
|
||||
+
|
||||
+
|
||||
ac_fn_c_check_member "$LINENO" "struct udphdr" "uh_dport" "ac_cv_member_struct_udphdr_uh_dport" "#define _BSD_SOURCE
|
||||
#define _DEFAULT_SOURCE
|
||||
#if HAVE_STDINT_H
|
||||
@@ -27648,6 +27702,12 @@ then
|
||||
plugin_tcpconns="yes"
|
||||
fi
|
||||
|
||||
+if test "x$ac_system" = "xNetBSD"
|
||||
+then
|
||||
+ plugin_entropy="yes"
|
||||
+ plugin_disk="yes"
|
||||
+fi
|
||||
+
|
||||
# Mac OS X devices
|
||||
if test "x$with_libiokit" = "xyes"
|
||||
then
|
||||
@@ -27890,6 +27950,11 @@ then
|
||||
plugin_swap="yes"
|
||||
fi
|
||||
|
||||
+if test "x$have_swapctl" = "xyes" && test "x$c_cv_have_swapctl_three_args" = "xyes"
|
||||
+then
|
||||
+ plugin_swap="yes"
|
||||
+fi
|
||||
+
|
||||
if test "x$with_kvm_openfiles$with_kvm_nlist" = "xyesyes"
|
||||
then
|
||||
plugin_tcpconns="yes"
|
66
sysutils/collectd/patches/patch-configure.ac
Normal file
66
sysutils/collectd/patches/patch-configure.ac
Normal file
|
@ -0,0 +1,66 @@
|
|||
$NetBSD: patch-configure.ac,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Add KERNEL_NETBSD, add entry and disk plugins for NetBSD,
|
||||
and also do swap for "have_swapctl_three_args" (as for NetBSD).
|
||||
Also, the start of process support, but that's not yet finished.
|
||||
|
||||
--- configure.ac.orig 2015-05-27 07:51:35.000000000 +0000
|
||||
+++ configure.ac
|
||||
@@ -77,6 +77,10 @@ case $host_os in
|
||||
AC_DEFINE([KERNEL_OPENBSD], 1, [True if program is to be compiled for an OpenBSD kernel])
|
||||
ac_system="OpenBSD"
|
||||
;;
|
||||
+ *netbsd*)
|
||||
+ AC_DEFINE([KERNEL_NETBSD], 1, [True if program is to be compiled for a NetBSD kernel])
|
||||
+ ac_system="NetBSD"
|
||||
+ ;;
|
||||
*aix*)
|
||||
AC_DEFINE([KERNEL_AIX], 1, [True if program is to be compiled for a AIX kernel])
|
||||
ac_system="AIX"
|
||||
@@ -1363,6 +1367,21 @@ AC_CHECK_MEMBERS([struct kinfo_proc.p_pi
|
||||
#include <kvm.h>
|
||||
])
|
||||
|
||||
+AC_CHECK_MEMBERS([struct kinfo_proc2.p_pid, struct kinfo_proc2.p_uru_maxrss],
|
||||
+ [
|
||||
+ AC_DEFINE(HAVE_STRUCT_KINFO_PROC_NETBSD, 1,
|
||||
+ [Define if struct kinfo_proc2 exists in the NetBSD variant.])
|
||||
+ have_struct_kinfo_proc_netbsd="yes"
|
||||
+ ],
|
||||
+ [
|
||||
+ have_struct_kinfo_proc_netbsd="no"
|
||||
+ ],
|
||||
+ [
|
||||
+#include <sys/param.h>
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <kvm.h>
|
||||
+ ])
|
||||
+
|
||||
AC_CHECK_MEMBERS([struct udphdr.uh_dport, struct udphdr.uh_sport], [], [],
|
||||
[#define _BSD_SOURCE
|
||||
#define _DEFAULT_SOURCE
|
||||
@@ -5244,6 +5263,12 @@ then
|
||||
plugin_tcpconns="yes"
|
||||
fi
|
||||
|
||||
+if test "x$ac_system" = "xNetBSD"
|
||||
+then
|
||||
+ plugin_entropy="yes"
|
||||
+ plugin_disk="yes"
|
||||
+fi
|
||||
+
|
||||
# Mac OS X devices
|
||||
if test "x$with_libiokit" = "xyes"
|
||||
then
|
||||
@@ -5482,6 +5507,11 @@ then
|
||||
plugin_swap="yes"
|
||||
fi
|
||||
|
||||
+if test "x$have_swapctl" = "xyes" && test "x$c_cv_have_swapctl_three_args" = "xyes"
|
||||
+then
|
||||
+ plugin_swap="yes"
|
||||
+fi
|
||||
+
|
||||
if test "x$with_kvm_openfiles$with_kvm_nlist" = "xyesyes"
|
||||
then
|
||||
plugin_tcpconns="yes"
|
39
sysutils/collectd/patches/patch-src_config.h.in
Normal file
39
sysutils/collectd/patches/patch-src_config.h.in
Normal file
|
@ -0,0 +1,39 @@
|
|||
$NetBSD: patch-src_config.h.in,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Optionally define a few vars for NetBSD.
|
||||
|
||||
--- src/config.h.in.orig 2015-05-27 07:53:03.000000000 +0000
|
||||
+++ src/config.h.in
|
||||
@@ -1246,6 +1246,12 @@
|
||||
/* Define to 1 if `imr_ifindex' is a member of `struct ip_mreqn'. */
|
||||
#undef HAVE_STRUCT_IP_MREQN_IMR_IFINDEX
|
||||
|
||||
+/* Define to 1 if `p_pid' is a member of `struct kinfo_proc2'. */
|
||||
+#undef HAVE_STRUCT_KINFO_PROC2_P_PID
|
||||
+
|
||||
+/* Define to 1 if `p_uru_maxrss' is a member of `struct kinfo_proc2'. */
|
||||
+#undef HAVE_STRUCT_KINFO_PROC2_P_URU_MAXRSS
|
||||
+
|
||||
/* Define if struct kinfo_proc exists in the FreeBSD variant. */
|
||||
#undef HAVE_STRUCT_KINFO_PROC_FREEBSD
|
||||
|
||||
@@ -1258,6 +1264,9 @@
|
||||
/* Define to 1 if `ki_rusage' is a member of `struct kinfo_proc'. */
|
||||
#undef HAVE_STRUCT_KINFO_PROC_KI_RUSAGE
|
||||
|
||||
+/* Define if struct kinfo_proc2 exists in the NetBSD variant. */
|
||||
+#undef HAVE_STRUCT_KINFO_PROC_NETBSD
|
||||
+
|
||||
/* Define if struct kinfo_proc exists in the OpenBSD variant. */
|
||||
#undef HAVE_STRUCT_KINFO_PROC_OPENBSD
|
||||
|
||||
@@ -1507,6 +1516,9 @@
|
||||
/* True if program is to be compiled for a Linux kernel */
|
||||
#undef KERNEL_LINUX
|
||||
|
||||
+/* True if program is to be compiled for a NetBSD kernel */
|
||||
+#undef KERNEL_NETBSD
|
||||
+
|
||||
/* True if program is to be compiled for an OpenBSD kernel */
|
||||
#undef KERNEL_OPENBSD
|
||||
|
209
sysutils/collectd/patches/patch-src_disk.c
Normal file
209
sysutils/collectd/patches/patch-src_disk.c
Normal file
|
@ -0,0 +1,209 @@
|
|||
$NetBSD: patch-src_disk.c,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Provide a port to NetBSD.
|
||||
|
||||
--- src/disk.c.orig 2015-03-10 14:14:45.000000000 +0000
|
||||
+++ src/disk.c
|
||||
@@ -124,6 +124,35 @@ static int numdisk;
|
||||
static int pnumdisk;
|
||||
/* #endif HAVE_PERFSTAT */
|
||||
|
||||
+#elif HAVE_SYSCTL && KERNEL_NETBSD
|
||||
+
|
||||
+#include <sys/sysctl.h>
|
||||
+#include <sys/iostat.h>
|
||||
+
|
||||
+typedef struct diskstats {
|
||||
+ char *name;
|
||||
+
|
||||
+ u_int poll_count;
|
||||
+
|
||||
+ derive_t read_ops;
|
||||
+ derive_t write_ops;
|
||||
+
|
||||
+ derive_t read_bytes;
|
||||
+ derive_t write_bytes;
|
||||
+
|
||||
+ derive_t avg_io_time;
|
||||
+
|
||||
+ struct io_sysctl stats;
|
||||
+
|
||||
+ struct diskstats *next;
|
||||
+} diskstats_t;
|
||||
+
|
||||
+static diskstats_t *disklist;
|
||||
+static struct io_sysctl *drives = NULL;
|
||||
+static size_t ndrive = 0;
|
||||
+
|
||||
+/* #endif HAVE_SYSCTL && KERNEL_NETBSD */
|
||||
+
|
||||
#else
|
||||
# error "No applicable input method."
|
||||
#endif
|
||||
@@ -241,7 +270,34 @@ static int disk_init (void)
|
||||
continue;
|
||||
ksp[numdisk++] = ksp_chain;
|
||||
}
|
||||
-#endif /* HAVE_LIBKSTAT */
|
||||
+/* #endif HAVE_LIBKSTAT */
|
||||
+
|
||||
+#elif HAVE_SYSCTL && KERNEL_NETBSD
|
||||
+ int mib[3];
|
||||
+ size_t size;
|
||||
+
|
||||
+ /* figure out number of drives */
|
||||
+ mib[0] = CTL_HW;
|
||||
+ mib[1] = HW_IOSTATS;
|
||||
+ mib[2] = sizeof(struct io_sysctl);
|
||||
+ if (sysctl(mib, 3, NULL, &size, NULL, 0) == -1) {
|
||||
+ ERROR ("disk plugin: sysctl for ndrives failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ ndrive = size / sizeof(struct io_sysctl);
|
||||
+
|
||||
+ if (size == 0 ) {
|
||||
+ ERROR ("disk plugin: no drives found");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ drives = (struct io_sysctl *)malloc(size);
|
||||
+ if (drives == NULL) {
|
||||
+ ERROR ("disk plugin: memory allocation failure");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+#endif /* HAVE_SYSCTL && KERNEL_NETBSD */
|
||||
+
|
||||
|
||||
return (0);
|
||||
} /* int disk_init */
|
||||
@@ -929,7 +985,129 @@ static int disk_read (void)
|
||||
write_time *= ((double)(_system_configuration.Xint)/(double)(_system_configuration.Xfrac)) / 1000000.0;
|
||||
disk_submit (stat_disk[i].name, "disk_time", read_time, write_time);
|
||||
}
|
||||
-#endif /* defined(HAVE_PERFSTAT) */
|
||||
+/* #endif defined(HAVE_PERFSTAT) */
|
||||
+
|
||||
+#elif HAVE_SYSCTL && KERNEL_NETBSD
|
||||
+ int mib[3];
|
||||
+ size_t size, i, nndrive;
|
||||
+ diskstats_t *ds, *pre_ds;
|
||||
+ char *output_name;
|
||||
+
|
||||
+ u_int64_t ops;
|
||||
+ u_int64_t delta_t;
|
||||
+
|
||||
+ /* figure out number of drives */
|
||||
+ mib[0] = CTL_HW;
|
||||
+ mib[1] = HW_IOSTATS;
|
||||
+ mib[2] = sizeof(struct io_sysctl);
|
||||
+ if (sysctl(mib, 3, NULL, &size, NULL, 0) == -1) {
|
||||
+ ERROR ("disk plugin: sysctl for ndrives failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ nndrive = size / sizeof(struct io_sysctl);
|
||||
+
|
||||
+ if (size == 0 ) {
|
||||
+ ERROR ("disk plugin: no drives found");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ /* number of drives changed, reallocate buffer */
|
||||
+ if (nndrive != ndrive) {
|
||||
+ drives = (struct io_sysctl *)realloc(drives, size);
|
||||
+ if (drives == NULL) {
|
||||
+ ERROR ("disk plugin: memory allocation failure");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ ndrive = nndrive;
|
||||
+ }
|
||||
+
|
||||
+ /* get stats for all drives */
|
||||
+ mib[0] = CTL_HW;
|
||||
+ mib[1] = HW_IOSTATS;
|
||||
+ mib[2] = sizeof(struct io_sysctl);
|
||||
+ if (sysctl(mib, 3, drives, &size, NULL, 0) == -1) {
|
||||
+ ERROR ("disk plugin: sysctl for drive stats failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < ndrive; i++) {
|
||||
+
|
||||
+ if (drives[i].type != IOSTAT_DISK)
|
||||
+ continue;
|
||||
+
|
||||
+ /* find drive stats, if present */
|
||||
+ for (ds = disklist, pre_ds = disklist;
|
||||
+ ds != NULL;
|
||||
+ pre_ds = ds, ds = ds->next) {
|
||||
+ if (strcmp (drives[i].name, ds->name) == 0)
|
||||
+ break;
|
||||
+ }
|
||||
+ if (ds == NULL) { /* not found; allocate & link in */
|
||||
+ if ((ds = calloc(1, sizeof(diskstats_t))) == NULL)
|
||||
+ continue;
|
||||
+ if ((ds->name = strdup(drives[i].name)) == NULL) {
|
||||
+ free(ds);
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (pre_ds == NULL)
|
||||
+ disklist = ds;
|
||||
+ else
|
||||
+ pre_ds->next = ds;
|
||||
+ }
|
||||
+
|
||||
+ ds->poll_count++;
|
||||
+ if (ds->poll_count <= 2)
|
||||
+ {
|
||||
+ DEBUG ("disk plugin: (ds->poll_count = %i) <= "
|
||||
+ "(min_poll_count = 2); => Not writing.",
|
||||
+ ds->poll_count);
|
||||
+ ds->stats = drives[i]; /* but save base values */
|
||||
+ continue;
|
||||
+ }
|
||||
+ ds->read_ops = drives[i].rxfer - ds->stats.rxfer;
|
||||
+ ds->write_ops = drives[i].wxfer - ds->stats.wxfer;
|
||||
+ ds->read_bytes = drives[i].rbytes - ds->stats.rbytes;
|
||||
+ ds->write_bytes = drives[i].wbytes - ds->stats.wbytes;
|
||||
+
|
||||
+ /* Need this dance because of unsigned values... */
|
||||
+ if (drives[i].time_usec < ds->stats.time_usec) {
|
||||
+ delta_t = ((drives[i].time_sec - 1 -
|
||||
+ ds->stats.time_sec) * 1000) +
|
||||
+ ((drives[i].time_usec + 1000000 -
|
||||
+ ds->stats.time_usec) / 1000);
|
||||
+ } else {
|
||||
+ delta_t = ((drives[i].time_sec -
|
||||
+ ds->stats.time_sec) * 1000) +
|
||||
+ ((drives[i].time_usec -
|
||||
+ ds->stats.time_usec) / 1000);
|
||||
+ }
|
||||
+
|
||||
+ ops = ds->read_ops + ds->write_ops;
|
||||
+ if (ops == 0) {
|
||||
+ DEBUG ("disk plugin: read + write ops == 0, "
|
||||
+ "not writing");
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ ds->avg_io_time = delta_t / ops;
|
||||
+
|
||||
+ output_name = drives[i].name;
|
||||
+
|
||||
+ if ((ds->read_bytes != 0) || (ds->write_bytes != 0))
|
||||
+ disk_submit (output_name, "disk_octets",
|
||||
+ ds->read_bytes, ds->write_bytes);
|
||||
+
|
||||
+ if ((ds->read_ops != 0) || (ds->write_ops != 0))
|
||||
+ disk_submit (output_name, "disk_ops",
|
||||
+ ds->read_ops, ds->write_ops);
|
||||
+
|
||||
+ if (ds->avg_io_time != 0)
|
||||
+ disk_submit (output_name, "disk_time",
|
||||
+ ds->avg_io_time, ds->avg_io_time);
|
||||
+
|
||||
+ ds->stats = drives[i];
|
||||
+ }
|
||||
+
|
||||
+#endif /* HAVE_SYSCTL && KERNEL_NETBSD */
|
||||
|
||||
return (0);
|
||||
} /* int disk_read */
|
87
sysutils/collectd/patches/patch-src_entropy.c
Normal file
87
sysutils/collectd/patches/patch-src_entropy.c
Normal file
|
@ -0,0 +1,87 @@
|
|||
$NetBSD: patch-src_entropy.c,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Provide a NetBSD implementation for graphing available entropy.
|
||||
|
||||
--- src/entropy.c.orig 2015-03-10 14:14:45.000000000 +0000
|
||||
+++ src/entropy.c
|
||||
@@ -29,27 +29,43 @@
|
||||
#include "plugin.h"
|
||||
|
||||
#if !KERNEL_LINUX
|
||||
-# error "No applicable input method."
|
||||
-#endif
|
||||
+# if defined(__NetBSD__)
|
||||
+/* Provide a NetBSD implementation, partial from rndctl.c */
|
||||
|
||||
-#define ENTROPY_FILE "/proc/sys/kernel/random/entropy_avail"
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <sys/param.h>
|
||||
+#include <sys/rnd.h>
|
||||
|
||||
-static void entropy_submit (double entropy)
|
||||
+static void entropy_submit (double);
|
||||
+static int entropy_read (void);
|
||||
+
|
||||
+static int
|
||||
+entropy_read (void)
|
||||
{
|
||||
- value_t values[1];
|
||||
- value_list_t vl = VALUE_LIST_INIT;
|
||||
+ rndpoolstat_t rs;
|
||||
+ int fd;
|
||||
|
||||
- values[0].gauge = entropy;
|
||||
+ fd = open("/dev/urandom", O_RDONLY, 0644);
|
||||
+ if (fd < 0)
|
||||
+ return -1;
|
||||
|
||||
- vl.values = values;
|
||||
- vl.values_len = 1;
|
||||
- sstrncpy (vl.host, hostname_g, sizeof (vl.host));
|
||||
- sstrncpy (vl.plugin, "entropy", sizeof (vl.plugin));
|
||||
- sstrncpy (vl.type, "entropy", sizeof (vl.type));
|
||||
+ if (ioctl(fd, RNDGETPOOLSTAT, &rs) < 0)
|
||||
+ return -1;
|
||||
|
||||
- plugin_dispatch_values (&vl);
|
||||
+ entropy_submit (rs.curentropy);
|
||||
+
|
||||
+ close(fd);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
+# else /* not NetBSD */
|
||||
+# error "No applicable input method."
|
||||
+# endif
|
||||
+#else /* Linux */
|
||||
+
|
||||
+#define ENTROPY_FILE "/proc/sys/kernel/random/entropy_avail"
|
||||
+
|
||||
static int entropy_read (void)
|
||||
{
|
||||
double entropy;
|
||||
@@ -74,6 +90,23 @@ static int entropy_read (void)
|
||||
|
||||
return (0);
|
||||
}
|
||||
+#endif /* not Linux */
|
||||
+
|
||||
+static void entropy_submit (double entropy)
|
||||
+{
|
||||
+ value_t values[1];
|
||||
+ value_list_t vl = VALUE_LIST_INIT;
|
||||
+
|
||||
+ values[0].gauge = entropy;
|
||||
+
|
||||
+ vl.values = values;
|
||||
+ vl.values_len = 1;
|
||||
+ sstrncpy (vl.host, hostname_g, sizeof (vl.host));
|
||||
+ sstrncpy (vl.plugin, "entropy", sizeof (vl.plugin));
|
||||
+ sstrncpy (vl.type, "entropy", sizeof (vl.type));
|
||||
+
|
||||
+ plugin_dispatch_values (&vl);
|
||||
+}
|
||||
|
||||
void module_register (void)
|
||||
{
|
117
sysutils/collectd/patches/patch-src_memory.c
Normal file
117
sysutils/collectd/patches/patch-src_memory.c
Normal file
|
@ -0,0 +1,117 @@
|
|||
$NetBSD: patch-src_memory.c,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Add a port for NetBSD using VM_UVMEXP2, and preferring
|
||||
sysctl over sysctlbyname.
|
||||
|
||||
--- src/memory.c.orig 2015-03-10 14:14:45.000000000 +0000
|
||||
+++ src/memory.c
|
||||
@@ -65,6 +65,10 @@ static mach_port_t port_host;
|
||||
static vm_size_t pagesize;
|
||||
/* #endif HAVE_HOST_STATISTICS */
|
||||
|
||||
+#elif HAVE_SYSCTL
|
||||
+static int pagesize;
|
||||
+/* #endif HAVE_SYSCTL */
|
||||
+
|
||||
#elif HAVE_SYSCTLBYNAME
|
||||
/* no global variables */
|
||||
/* #endif HAVE_SYSCTLBYNAME */
|
||||
@@ -78,10 +82,6 @@ static int pagesize;
|
||||
static kstat_t *ksp;
|
||||
/* #endif HAVE_LIBKSTAT */
|
||||
|
||||
-#elif HAVE_SYSCTL
|
||||
-static int pagesize;
|
||||
-/* #endif HAVE_SYSCTL */
|
||||
-
|
||||
#elif HAVE_LIBSTATGRAB
|
||||
/* no global variables */
|
||||
/* endif HAVE_LIBSTATGRAB */
|
||||
@@ -121,6 +121,15 @@ static int memory_init (void)
|
||||
host_page_size (port_host, &pagesize);
|
||||
/* #endif HAVE_HOST_STATISTICS */
|
||||
|
||||
+#elif HAVE_SYSCTL
|
||||
+ pagesize = getpagesize ();
|
||||
+ if (pagesize <= 0)
|
||||
+ {
|
||||
+ ERROR ("memory plugin: Invalid pagesize: %i", pagesize);
|
||||
+ return (-1);
|
||||
+ }
|
||||
+/* #endif HAVE_SYSCTL */
|
||||
+
|
||||
#elif HAVE_SYSCTLBYNAME
|
||||
/* no init stuff */
|
||||
/* #endif HAVE_SYSCTLBYNAME */
|
||||
@@ -139,15 +148,6 @@ static int memory_init (void)
|
||||
}
|
||||
/* #endif HAVE_LIBKSTAT */
|
||||
|
||||
-#elif HAVE_SYSCTL
|
||||
- pagesize = getpagesize ();
|
||||
- if (pagesize <= 0)
|
||||
- {
|
||||
- ERROR ("memory plugin: Invalid pagesize: %i", pagesize);
|
||||
- return (-1);
|
||||
- }
|
||||
-/* #endif HAVE_SYSCTL */
|
||||
-
|
||||
#elif HAVE_LIBSTATGRAB
|
||||
/* no init stuff */
|
||||
/* #endif HAVE_LIBSTATGRAB */
|
||||
@@ -221,6 +221,46 @@ static int memory_read_internal (value_l
|
||||
/* #endif HAVE_HOST_STATISTICS */
|
||||
|
||||
#elif HAVE_SYSCTLBYNAME
|
||||
+
|
||||
+#if HAVE_SYSCTL && defined(KERNEL_NETBSD)
|
||||
+ int mib[] = {CTL_VM, VM_UVMEXP2};
|
||||
+ struct uvmexp_sysctl uvmexp;
|
||||
+ gauge_t mem_active;
|
||||
+ gauge_t mem_inactive;
|
||||
+ gauge_t mem_free;
|
||||
+ gauge_t mem_wired;
|
||||
+ gauge_t mem_kernel;
|
||||
+ size_t size;
|
||||
+
|
||||
+ memset (&uvmexp, 0, sizeof (uvmexp));
|
||||
+ size = sizeof (uvmexp);
|
||||
+
|
||||
+ if (sysctl (mib, 2, &uvmexp, &size, NULL, 0) < 0) {
|
||||
+ char errbuf[1024];
|
||||
+ WARNING ("memory plugin: sysctl failed: %s",
|
||||
+ sstrerror (errno, errbuf, sizeof (errbuf)));
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+ assert (pagesize > 0);
|
||||
+ mem_active = (gauge_t) (uvmexp.active * pagesize);
|
||||
+ mem_inactive = (gauge_t) (uvmexp.inactive * pagesize);
|
||||
+ mem_free = (gauge_t) (uvmexp.free * pagesize);
|
||||
+ mem_wired = (gauge_t) (uvmexp.wired * pagesize);
|
||||
+ mem_kernel = (gauge_t) ((uvmexp.npages - (
|
||||
+ uvmexp.active + uvmexp.inactive +
|
||||
+ uvmexp.free + uvmexp.wired
|
||||
+ )) * pagesize);
|
||||
+
|
||||
+ MEMORY_SUBMIT ("active", mem_active,
|
||||
+ "inactive", mem_inactive,
|
||||
+ "free", mem_free,
|
||||
+ "wired", mem_wired,
|
||||
+ "kernel", mem_kernel);
|
||||
+/* #endif HAVE_SYSCTL && defined(KERNEL_NETBSD) */
|
||||
+
|
||||
+#else /* Other HAVE_SYSCTLBYNAME providers */
|
||||
+
|
||||
/*
|
||||
* vm.stats.vm.v_page_size: 4096
|
||||
* vm.stats.vm.v_page_count: 246178
|
||||
@@ -272,6 +312,8 @@ static int memory_read_internal (value_l
|
||||
"active", (gauge_t) sysctl_vals[4],
|
||||
"inactive", (gauge_t) sysctl_vals[5],
|
||||
"cache", (gauge_t) sysctl_vals[6]);
|
||||
+
|
||||
+#endif /* HAVE_SYSCTL && KERNEL_NETBSD */
|
||||
/* #endif HAVE_SYSCTLBYNAME */
|
||||
|
||||
#elif KERNEL_LINUX
|
148
sysutils/collectd/patches/patch-src_swap.c
Normal file
148
sysutils/collectd/patches/patch-src_swap.c
Normal file
|
@ -0,0 +1,148 @@
|
|||
$NetBSD: patch-src_swap.c,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Extend support for NetBSD, and add per-swap-device
|
||||
reporting for HAVE_SWAPCTL_THREE_ARGS.
|
||||
|
||||
--- src/swap.c.orig 2015-05-20 12:04:47.000000000 +0000
|
||||
+++ src/swap.c
|
||||
@@ -76,9 +76,10 @@ static _Bool report_bytes = 0;
|
||||
static _Bool report_by_device = 0;
|
||||
/* #endif KERNEL_LINUX */
|
||||
|
||||
-#elif HAVE_SWAPCTL && HAVE_SWAPCTL_TWO_ARGS
|
||||
+#elif HAVE_SWAPCTL && (HAVE_SWAPCTL_TWO_ARGS || HAVE_SWAPCTL_THREE_ARGS)
|
||||
# define SWAP_HAVE_REPORT_BY_DEVICE 1
|
||||
static derive_t pagesize;
|
||||
+static _Bool report_bytes = 0;
|
||||
static _Bool report_by_device = 0;
|
||||
/* #endif HAVE_SWAPCTL && HAVE_SWAPCTL_TWO_ARGS */
|
||||
|
||||
@@ -114,7 +115,7 @@ static int swap_config (oconfig_item_t *
|
||||
{
|
||||
oconfig_item_t *child = ci->children + i;
|
||||
if (strcasecmp ("ReportBytes", child->key) == 0)
|
||||
-#if KERNEL_LINUX
|
||||
+#if KERNEL_LINUX || KERNEL_NETBSD
|
||||
cf_util_get_boolean (child, &report_bytes);
|
||||
#else
|
||||
WARNING ("swap plugin: The \"ReportBytes\" option "
|
||||
@@ -147,7 +148,7 @@ static int swap_init (void) /* {{{ */
|
||||
pagesize = (derive_t) sysconf (_SC_PAGESIZE);
|
||||
/* #endif KERNEL_LINUX */
|
||||
|
||||
-#elif HAVE_SWAPCTL && HAVE_SWAPCTL_TWO_ARGS
|
||||
+#elif HAVE_SWAPCTL && (HAVE_SWAPCTL_TWO_ARGS || HAVE_SWAPCTL_THREE_ARGS)
|
||||
/* getpagesize(3C) tells me this does not fail.. */
|
||||
pagesize = (derive_t) getpagesize ();
|
||||
/* #endif HAVE_SWAPCTL */
|
||||
@@ -213,7 +214,7 @@ static void swap_submit_usage (char cons
|
||||
other_name, other_value, NULL);
|
||||
} /* }}} void swap_submit_usage */
|
||||
|
||||
-#if KERNEL_LINUX || HAVE_PERFSTAT
|
||||
+#if KERNEL_LINUX || HAVE_PERFSTAT || KERNEL_NETBSD
|
||||
__attribute__((nonnull(1)))
|
||||
static void swap_submit_derive (char const *type_instance, /* {{{ */
|
||||
derive_t value)
|
||||
@@ -614,6 +615,43 @@ static int swap_read (void) /* {{{ */
|
||||
/* #endif HAVE_SWAPCTL && HAVE_SWAPCTL_TWO_ARGS */
|
||||
|
||||
#elif HAVE_SWAPCTL && HAVE_SWAPCTL_THREE_ARGS
|
||||
+#if KERNEL_NETBSD
|
||||
+#include <uvm/uvm_extern.h>
|
||||
+
|
||||
+static int
|
||||
+swap_read_io (void) /* {{{ */
|
||||
+{
|
||||
+ static int uvmexp_mib[] = { CTL_VM, VM_UVMEXP2 };
|
||||
+ struct uvmexp_sysctl uvmexp;
|
||||
+ size_t ssize;
|
||||
+ derive_t swap_in, swap_out;
|
||||
+
|
||||
+ ssize = sizeof(uvmexp);
|
||||
+ memset(&uvmexp, 0, ssize);
|
||||
+ if (sysctl(uvmexp_mib, __arraycount(uvmexp_mib), &uvmexp,
|
||||
+ &ssize, NULL, 0) == -1) {
|
||||
+ char errbuf[1024];
|
||||
+ WARNING ("swap: sysctl for uvmexp failed: %s",
|
||||
+ sstrerror (errno, errbuf, sizeof (errbuf)));
|
||||
+ return (-1);
|
||||
+ }
|
||||
+
|
||||
+ swap_in = uvmexp.pgswapin;
|
||||
+ swap_out = uvmexp.pgswapout;
|
||||
+
|
||||
+ if (report_bytes)
|
||||
+ {
|
||||
+ swap_in = swap_in * pagesize;
|
||||
+ swap_out = swap_out * pagesize;
|
||||
+ }
|
||||
+
|
||||
+ swap_submit_derive ("in", swap_in);
|
||||
+ swap_submit_derive ("out", swap_out);
|
||||
+
|
||||
+ return (0);
|
||||
+} /* }}} */
|
||||
+#endif
|
||||
+
|
||||
static int swap_read (void) /* {{{ */
|
||||
{
|
||||
struct swapent *swap_entries;
|
||||
@@ -660,23 +698,53 @@ static int swap_read (void) /* {{{ */
|
||||
* swap_entries[i].se_path */
|
||||
for (i = 0; i < swap_num; i++)
|
||||
{
|
||||
+ char path[PATH_MAX];
|
||||
+ gauge_t this_used;
|
||||
+ gauge_t this_total;
|
||||
+
|
||||
if ((swap_entries[i].se_flags & SWF_ENABLE) == 0)
|
||||
continue;
|
||||
|
||||
- used += ((gauge_t) swap_entries[i].se_inuse) * C_SWAP_BLOCK_SIZE;
|
||||
- total += ((gauge_t) swap_entries[i].se_nblks) * C_SWAP_BLOCK_SIZE;
|
||||
- }
|
||||
+ this_used = ((gauge_t) swap_entries[i].se_inuse)
|
||||
+ * C_SWAP_BLOCK_SIZE;
|
||||
+ this_total = ((gauge_t) swap_entries[i].se_nblks)
|
||||
+ * C_SWAP_BLOCK_SIZE;
|
||||
+
|
||||
+
|
||||
+ /* Shortcut for the "combined" setting (default) */
|
||||
+ if (!report_by_device)
|
||||
+ {
|
||||
+ used += this_used;
|
||||
+ total += this_total;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ sstrncpy (path, swap_entries[i].se_path, sizeof (path));
|
||||
+ escape_slashes (path, sizeof (path));
|
||||
+
|
||||
+ swap_submit_usage (path, this_used, this_total - this_used,
|
||||
+ NULL, NAN);
|
||||
+ } /* for (swap_num) */
|
||||
+
|
||||
|
||||
if (total < used)
|
||||
{
|
||||
ERROR ("swap plugin: Total swap space (%g) is less than used swap space (%g).",
|
||||
total, used);
|
||||
+ sfree (swap_entries);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
- swap_submit_usage (NULL, used, total - used, NULL, NAN);
|
||||
+ /* If the "separate" option was specified (report_by_device == 1), all
|
||||
+ * values have already been dispatched from within the loop. */
|
||||
+ if (!report_by_device)
|
||||
+ swap_submit_usage (NULL, used, total - used, NULL, NAN);
|
||||
|
||||
sfree (swap_entries);
|
||||
+
|
||||
+#if KERNEL_NETBSD
|
||||
+ swap_read_io ();
|
||||
+#endif
|
||||
return (0);
|
||||
} /* }}} int swap_read */
|
||||
/* #endif HAVE_SWAPCTL && HAVE_SWAPCTL_THREE_ARGS */
|
|
@ -1,4 +1,6 @@
|
|||
$NetBSD: patch-src_tcpconns.c,v 1.4 2015/06/10 20:05:26 fhajny Exp $
|
||||
$NetBSD: patch-src_tcpconns.c,v 1.5 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
Include <sys/param.h>
|
||||
|
||||
--- src/tcpconns.c.orig 2015-05-20 12:04:47.191035542 +0000
|
||||
+++ src/tcpconns.c
|
||||
|
|
14
sysutils/collectd/patches/patch-version-gen.sh
Normal file
14
sysutils/collectd/patches/patch-version-gen.sh
Normal file
|
@ -0,0 +1,14 @@
|
|||
$NetBSD: patch-version-gen.sh,v 1.1 2015/08/11 13:19:21 he Exp $
|
||||
|
||||
For work in pkgsrc, also strip '.git' suffix.
|
||||
|
||||
--- version-gen.sh.orig 2015-05-26 20:23:28.000000000 +0000
|
||||
+++ version-gen.sh
|
||||
@@ -8,6 +8,6 @@ if test -z "$VERSION"; then
|
||||
VERSION="$DEFAULT_VERSION"
|
||||
fi
|
||||
|
||||
-VERSION="`echo \"$VERSION\" | sed -e 's/-/./g'`"
|
||||
+VERSION="`echo \"$VERSION\" | sed -e 's/-/./g' | sed -e 's/.git//'`"
|
||||
|
||||
printf "%s" "$VERSION"
|
Loading…
Reference in a new issue