From: Marc Fournier Date: Sun, 28 Feb 2016 00:12:42 +0000 (+0100) Subject: Merge branch 'collectd-5.4' into collectd-5.5 X-Git-Tag: collectd-5.5.2~60 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=6258e772d808f4e76ea8e23d9e2750cfc7e6c60d;hp=-c Merge branch 'collectd-5.4' into collectd-5.5 --- 6258e772d808f4e76ea8e23d9e2750cfc7e6c60d diff --combined configure.ac index ee6300a0,5c6720c3..9112a91f --- a/configure.ac +++ b/configure.ac @@@ -1,6 -1,6 +1,6 @@@ dnl Process this file with autoconf to produce a configure script. AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)]) -AC_CONFIG_SRCDIR(src/collectd.c) +AC_CONFIG_SRCDIR(src/) AC_CONFIG_HEADERS(src/config.h) AC_CONFIG_AUX_DIR([libltdl/config]) @@@ -68,9 -68,9 +68,9 @@@ AC_CACHE_CHECK([if bison is the parser )] ) - if test "x$collectd_cv_prog_bison" = "xno" && test ! -f "${srcdir}/liboconfig/parser.c" + if test "x$collectd_cv_prog_bison" = "xno" && test ! -f "${srcdir}/src/liboconfig/parser.c" then - AC_MSG_ERROR([bison is missing and you do not have ${srcdir}/liboconfig/parser.c. Please install bison]) + AC_MSG_ERROR([bison is missing and you do not have ${srcdir}/src/liboconfig/parser.c. Please install bison]) fi AC_CHECK_PROG([have_protoc_c], [protoc-c], [yes], [no]) @@@ -105,11 -105,9 +105,11 @@@ case $host_os i ac_system="Solaris" ;; *darwin*) + AC_DEFINE([KERNEL_DARWIN], 1, [True if program is to be compiled for a Darwin kernel]) ac_system="Darwin" ;; *openbsd*) + AC_DEFINE([KERNEL_OPENBSD], 1, [True if program is to be compiled for an OpenBSD kernel]) ac_system="OpenBSD" ;; *aix*) @@@ -125,13 -123,6 +125,13 @@@ esac AC_MSG_RESULT([$ac_system]) +AM_CONDITIONAL([BUILD_LINUX],[test "x$ac_system" = "xLinux"]) +AM_CONDITIONAL([BUILD_SOLARIS],[test "x$ac_system" = "xSolaris"]) +AM_CONDITIONAL([BUILD_DARWIN],[test "x$ac_system" = "xDarwin"]) +AM_CONDITIONAL([BUILD_OPENBSD],[test "x$ac_system" = "xOpenBSD"]) +AM_CONDITIONAL([BUILD_AIX],[test "x$ac_system" = "xAIX"]) +AM_CONDITIONAL([BUILD_FREEBSD],[test "x$ac_system" = "xFreeBSD"]) + if test "x$ac_system" = "xLinux" then AC_ARG_VAR([KERNEL_DIR], [path to Linux kernel sources]) @@@ -148,20 -139,7 +148,20 @@@ if test "x$ac_system" = "xSolaris then AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Define to enforce POSIX thread semantics under Solaris.]) AC_DEFINE(_REENTRANT, 1, [Define to enable reentrancy interfaces.]) + + AC_MSG_CHECKING([whether compiler builds 64bit binaries]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ + #ifndef _LP64 + # error "Compiler not in 64bit mode." + #endif + ])], + [AC_MSG_RESULT([yes])], + [ + AC_MSG_RESULT([no]) + AC_MSG_NOTICE([Solaris detected. Please consider building a 64-bit binary.]) + ]) fi + if test "x$ac_system" = "xAIX" then AC_DEFINE(_THREAD_SAFE_ERRNO, 1, [Define to use the thread-safe version of errno under AIX.]) @@@ -472,6 -450,18 +472,6 @@@ AC_CHECK_HEADERS(sys/swap.h vm/anon.h, #endif ]) -if test "x$have_sys_swap_h$ac_system" = "xnoSolaris" -then - hint_64="" - if test "x$GCC" = "xyes" - then - hint_64="CFLAGS='-m64'" - else - hint_64="CFLAGS='-xarch=v9'" - fi - AC_MSG_NOTICE([Solaris detected and sys/swap.h not usable. Try building a 64-bit binary ($hint_64 ./configure).]) -fi - # For load module # For the processes plugin # For users module @@@ -611,7 -601,7 +611,7 @@@ AC_CHECK_HEADERS(linux/un.h, [], [] #endif ]) -AC_CHECK_HEADERS(pwd.h grp.h sys/un.h ctype.h limits.h xfs/xqm.h fs_info.h fshelp.h paths.h mntent.h mnttab.h sys/fstyp.h sys/fs_types.h sys/mntent.h sys/mnttab.h sys/statfs.h sys/statvfs.h sys/vfs.h sys/vfstab.h kvm.h wordexp.h) +AC_CHECK_HEADERS(pwd.h grp.h sys/un.h ctype.h limits.h xfs/xqm.h fs_info.h fshelp.h paths.h mntent.h mnttab.h sys/fstyp.h sys/fs_types.h sys/mntent.h sys/mnttab.h sys/statfs.h sys/statvfs.h sys/vfs.h sys/vfstab.h sys/vmmeter.h kvm.h wordexp.h locale.h) # For the dns plugin AC_CHECK_HEADERS(arpa/nameser.h) @@@ -676,51 -666,20 +676,51 @@@ AC_CHECK_HEADERS(net/pfvar.h have_termios_h="no" AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"]) +# For the turbostat plugin +have_asm_msrindex_h="no" +AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"]) + +if test "x$have_asm_msrindex_h" = "xyes" +then + AC_CACHE_CHECK([whether asm/msr-index.h has MSR_PKG_C10_RESIDENCY], + [c_cv_have_usable_asm_msrindex_h], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[[[ +#include +]]], +[[[ +int y = MSR_PKG_C10_RESIDENCY; +return(y); +]]] + )], + [c_cv_have_usable_asm_msrindex_h="yes"], + [c_cv_have_usable_asm_msrindex_h="no"], + ) + ) +fi + +have_cpuid_h="no" +AC_CHECK_HEADERS(cpuid.h, [have_cpuid_h="yes"]) + +AC_CHECK_HEADERS(sys/capability.h) # # Checks for typedefs, structures, and compiler characteristics. # AC_C_CONST +AC_C_INLINE +AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T AC_TYPE_UID_T +AC_TYPE_UINT32_T AC_HEADER_TIME # # Checks for library functions. # AC_PROG_GCC_TRADITIONAL -AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf setenv if_indextoname) +AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf setenv if_indextoname setlocale) AC_FUNC_STRERROR_R @@@ -927,9 -886,7 +927,9 @@@ if test "x$have_swapctl" = "xyes"; the # undef _LARGEFILE64_SOURCE #endif #include +#include #include +#include ]]], [[[ int num = swapctl(0, NULL); @@@ -949,9 -906,7 +949,9 @@@ # undef _LARGEFILE64_SOURCE #endif #include +#include #include +#include ]]], [[[ int num = swapctl(0, NULL, 0); @@@ -1124,7 -1079,7 +1124,7 @@@ if test "x$fp_layout_type" = "xunknown" uint8_t c[8]; double d; - d = 8.642135e130; + d = 8.642135e130; memcpy ((void *) &i0, (void *) &d, 8); i1 = i0; @@@ -1179,7 -1134,7 +1179,7 @@@ if test "x$fp_layout_type" = "xunknown" uint8_t c[8]; double d; - d = 8.642135e130; + d = 8.642135e130; memcpy ((void *) &i0, (void *) &d, 8); i1 = endianflip (i0); @@@ -1228,7 -1183,7 +1228,7 @@@ if test "x$fp_layout_type" = "xunknown" uint8_t c[8]; double d; - d = 8.642135e130; + d = 8.642135e130; memcpy ((void *) &i0, (void *) &d, 8); i1 = intswap (i0); @@@ -1265,17 -1220,6 +1265,17 @@@ els AC_MSG_ERROR([Didn't find out how doubles are stored in memory. Sorry.]) fi; fi; fi +# --with-useragent {{{ +AC_ARG_WITH(useragent, [AS_HELP_STRING([--with-useragent@<:@=AGENT@:>@], [User agent to use on http requests])], +[ + if test "x$withval" != "xno" && test "x$withval" != "xyes" + then + AC_DEFINE_UNQUOTED(COLLECTD_USERAGENT, ["$withval"], [User agent for http requests]) + fi +]) + +# }}} + have_getfsstat="no" AC_CHECK_FUNCS(getfsstat, [have_getfsstat="yes"]) have_getvfsstat="no" @@@ -1381,7 -1325,7 +1381,7 @@@ AC_CACHE_CHECK([if have htonll defined] )], [c_cv_have_htonll="yes"], [c_cv_have_htonll="no"] - ) + ) ) if test "x$c_cv_have_htonll" = "xyes" then @@@ -1437,7 -1381,7 +1437,7 @@@ AC_CHECK_MEMBERS([struct kinfo_proc.ki_ #include ]) -AC_CHECK_MEMBERS([struct kinfo_proc.kp_proc, struct kinfo_proc.kp_eproc], +AC_CHECK_MEMBERS([struct kinfo_proc.p_pid, struct kinfo_proc.p_vm_rssize], [ AC_DEFINE(HAVE_STRUCT_KINFO_PROC_OPENBSD, 1, [Define if struct kinfo_proc exists in the OpenBSD variant.]) @@@ -1454,7 -1398,6 +1454,7 @@@ AC_CHECK_MEMBERS([struct udphdr.uh_dport, struct udphdr.uh_sport], [], [], [#define _BSD_SOURCE +#define _DEFAULT_SOURCE #if HAVE_STDINT_H # include #endif @@@ -1476,7 -1419,6 +1476,7 @@@ ]) AC_CHECK_MEMBERS([struct udphdr.dest, struct udphdr.source], [], [], [#define _BSD_SOURCE +#define _DEFAULT_SOURCE #if HAVE_STDINT_H # include #endif @@@ -1535,6 -1477,10 +1535,6 @@@ f m4_divert_once([HELP_WITH], [ collectd additional packages:]) -AM_CONDITIONAL([BUILD_FREEBSD],[test "x$x$ac_system" = "xFreeBSD"]) - -AM_CONDITIONAL([BUILD_AIX],[test "x$x$ac_system" = "xAIX"]) - if test "x$ac_system" = "xAIX" then with_perfstat="yes" @@@ -1701,63 -1647,62 +1701,63 @@@ f AM_CONDITIONAL(BUILD_WITH_LIBAQUAERO5, test "x$with_libaquaero5" = "xyes") # }}} -# --with-libcredis {{{ -AC_ARG_WITH(libcredis, [AS_HELP_STRING([--with-libcredis@<:@=PREFIX@:>@], [Path to libcredis.])], +# --with-libhiredis {{{ +AC_ARG_WITH(libhiredis, [AS_HELP_STRING([--with-libhiredis@<:@=PREFIX@:>@], + [Path to libhiredis.])], [ if test "x$withval" = "xyes" then - with_libcredis="yes" + with_libhiredis="yes" else if test "x$withval" = "xno" then - with_libcredis="no" + with_libhiredis="no" else - with_libcredis="yes" - LIBCREDIS_CPPFLAGS="$LIBCREDIS_CPPFLAGS -I$withval/include" - LIBCREDIS_LDFLAGS="$LIBCREDIS_LDFLAGS -L$withval/lib" + with_libhiredis="yes" + LIBHIREDIS_CPPFLAGS="$LIBHIREDIS_CPPFLAGS -I$withval/include" + LIBHIREDIS_LDFLAGS="$LIBHIREDIS_LDFLAGS -L$withval/lib" fi; fi ], -[with_libcredis="yes"]) +[with_libhiredis="yes"]) SAVE_CPPFLAGS="$CPPFLAGS" SAVE_LDFLAGS="$LDFLAGS" -CPPFLAGS="$CPPFLAGS $LIBCREDIS_CPPFLAGS" -LDFLAGS="$LDFLAGS $LIBCREDIS_LDFLAGS" +CPPFLAGS="$CPPFLAGS $LIBHIREDIS_CPPFLAGS" +LDFLAGS="$LDFLAGS $LIBHIREDIS_LDFLAGS" -if test "x$with_libcredis" = "xyes" +if test "x$with_libhiredis" = "xyes" then - if test "x$LIBCREDIS_CPPFLAGS" != "x" + if test "x$LIBHIREDIS_CPPFLAGS" != "x" then - AC_MSG_NOTICE([libcredis CPPFLAGS: $LIBCREDIS_CPPFLAGS]) + AC_MSG_NOTICE([libhiredis CPPFLAGS: $LIBHIREDIS_CPPFLAGS]) fi - AC_CHECK_HEADERS(credis.h, - [with_libcredis="yes"], - [with_libcredis="no (credis.h not found)"]) + AC_CHECK_HEADERS(hiredis/hiredis.h, + [with_libhiredis="yes"], + [with_libhiredis="no (hiredis.h not found)"]) fi -if test "x$with_libcredis" = "xyes" +if test "x$with_libhiredis" = "xyes" then - if test "x$LIBCREDIS_LDFLAGS" != "x" + if test "x$LIBHIREDIS_LDFLAGS" != "x" then - AC_MSG_NOTICE([libcredis LDFLAGS: $LIBCREDIS_LDFLAGS]) + AC_MSG_NOTICE([libhiredis LDFLAGS: $LIBHIREDIS_LDFLAGS]) fi - AC_CHECK_LIB(credis, credis_info, - [with_libcredis="yes"], - [with_libcredis="no (symbol 'credis_info' not found)"]) + AC_CHECK_LIB(hiredis, redisCommand, + [with_libhiredis="yes"], + [with_libhiredis="no (symbol 'redisCommand' not found)"]) fi CPPFLAGS="$SAVE_CPPFLAGS" LDFLAGS="$SAVE_LDFLAGS" -if test "x$with_libcredis" = "xyes" +if test "x$with_libhiredis" = "xyes" then - BUILD_WITH_LIBCREDIS_CPPFLAGS="$LIBCREDIS_CPPFLAGS" - BUILD_WITH_LIBCREDIS_LDFLAGS="$LIBCREDIS_LDFLAGS" - AC_SUBST(BUILD_WITH_LIBCREDIS_CPPFLAGS) - AC_SUBST(BUILD_WITH_LIBCREDIS_LDFLAGS) + BUILD_WITH_LIBHIREDIS_CPPFLAGS="$LIBHIREDIS_CPPFLAGS" + BUILD_WITH_LIBHIREDIS_LDFLAGS="$LIBHIREDIS_LDFLAGS" + AC_SUBST(BUILD_WITH_LIBHIREDIS_CPPFLAGS) + AC_SUBST(BUILD_WITH_LIBHIREDIS_LDFLAGS) fi -AM_CONDITIONAL(BUILD_WITH_LIBCREDIS, test "x$with_libcredis" = "xyes") +AM_CONDITIONAL(BUILD_WITH_LIBHIREDIS, test "x$with_libhiredis" = "xyes") # }}} # --with-libcurl {{{ @@@ -1818,14 -1763,6 +1818,14 @@@ the [with_libcurl="yes"], [with_libcurl="no (symbol 'curl_easy_init' not found)"], [$with_curl_libs]) + AC_CHECK_DECL(CURLOPT_USERNAME, + [have_curlopt_username="yes"], + [have_curlopt_username="no"], + [[#include ]]) + AC_CHECK_DECL(CURLOPT_TIMEOUT_MS, + [have_curlopt_timeout="yes"], + [have_curlopt_timeout="no"], + [[#include ]]) fi fi if test "x$with_libcurl" = "xyes" @@@ -1834,16 -1771,6 +1834,16 @@@ the BUILD_WITH_LIBCURL_LIBS="$with_curl_libs" AC_SUBST(BUILD_WITH_LIBCURL_CFLAGS) AC_SUBST(BUILD_WITH_LIBCURL_LIBS) + + if test "x$have_curlopt_username" = "xyes" + then + AC_DEFINE(HAVE_CURLOPT_USERNAME, 1, [Define if libcurl supports CURLOPT_USERNAME option.]) + fi + + if test "x$have_curlopt_timeout" = "xyes" + then + AC_DEFINE(HAVE_CURLOPT_TIMEOUT_MS, 1, [Define if libcurl supports CURLOPT_TIMEOUT_MS option.]) + fi fi AM_CONDITIONAL(BUILD_WITH_LIBCURL, test "x$with_libcurl" = "xyes") # }}} @@@ -2108,7 -2035,10 +2108,7 @@@ AM_CONDITIONAL(BUILD_WITH_LIBGCRYPT, te # --with-libiptc {{{ AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])], [ - if test "x$withval" = "xshipped" - then - with_libiptc="own" - else if test "x$withval" = "xyes" + if test "x$withval" = "xyes" then with_libiptc="pkgconfig" else if test "x$withval" = "xno" @@@ -2118,7 -2048,7 +2118,7 @@@ with_libiptc="yes" with_libiptc_cflags="-I$withval/include" with_libiptc_libs="-L$withval/lib" - fi; fi; fi + fi; fi ], [ if test "x$ac_system" = "xLinux" @@@ -2190,6 -2120,28 +2190,6 @@@ f CPPFLAGS="$SAVE_CPPFLAGS" -if test "x$with_libiptc" = "xown" -then - with_libiptc_cflags="" - with_libiptc_libs="" -fi -if test "x$with_libiptc" = "xown" -then - AC_CHECK_HEADERS(linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h linux/netfilter/x_tables.h, [], - [ - with_libiptc="no (Linux iptables headers not found)" - ], - [ -#include "$srcdir/src/owniptc/ipt_kernel_headers.h" - ]) -fi -AM_CONDITIONAL(BUILD_WITH_OWN_LIBIPTC, test "x$with_libiptc" = "xown") -if test "x$with_libiptc" = "xown" -then - AC_DEFINE(OWN_LIBIPTC, 1, [Define to 1 if we use the shipped iptc library.]) - with_libiptc="yes" -fi - AM_CONDITIONAL(BUILD_WITH_LIBIPTC, test "x$with_libiptc" = "xyes") if test "x$with_libiptc" = "xyes" then @@@ -2373,64 -2325,6 +2373,64 @@@ AC_SUBST(JAVA_LIBS AM_CONDITIONAL(BUILD_WITH_JAVA, test "x$with_java" = "xyes") # }}} +# --with-libldap {{{ +AC_ARG_WITH(libldap, [AS_HELP_STRING([--with-libldap@<:@=PREFIX@:>@], [Path to libldap.])], +[ + if test "x$withval" = "xyes" + then + with_libldap="yes" + else if test "x$withval" = "xno" + then + with_libldap="no" + else + with_libldap="yes" + LIBLDAP_CPPFLAGS="$LIBLDAP_CPPFLAGS -I$withval/include" + LIBLDAP_LDFLAGS="$LIBLDAP_LDFLAGS -L$withval/lib" + fi; fi +], +[with_libldap="yes"]) + +SAVE_CPPFLAGS="$CPPFLAGS" +SAVE_LDFLAGS="$LDFLAGS" + +CPPFLAGS="$CPPFLAGS $LIBLDAP_CPPFLAGS" +LDFLAGS="$LDFLAGS $LIBLDAP_LDFLAGS" + +if test "x$with_libldap" = "xyes" +then + if test "x$LIBLDAP_CPPFLAGS" != "x" + then + AC_MSG_NOTICE([libldap CPPFLAGS: $LIBLDAP_CPPFLAGS]) + fi + AC_CHECK_HEADERS(ldap.h, + [with_libldap="yes"], + [with_libldap="no ('ldap.h' not found)"]) +fi +if test "x$with_libldap" = "xyes" +then + if test "x$LIBLDAP_LDFLAGS" != "x" + then + AC_MSG_NOTICE([libldap LDFLAGS: $LIBLDAP_LDFLAGS]) + fi + AC_CHECK_LIB(ldap, ldap_initialize, + [with_libldap="yes"], + [with_libldap="no (symbol 'ldap_initialize' not found)"]) + +fi + +CPPFLAGS="$SAVE_CPPFLAGS" +LDFLAGS="$SAVE_LDFLAGS" + +if test "x$with_libldap" = "xyes" +then + BUILD_WITH_LIBLDAP_CPPFLAGS="$LIBLDAP_CPPFLAGS" + BUILD_WITH_LIBLDAP_LDFLAGS="$LIBLDAP_LDFLAGS" + AC_SUBST(BUILD_WITH_LIBLDAP_CPPFLAGS) + AC_SUBST(BUILD_WITH_LIBLDAP_LDFLAGS) +fi +AM_CONDITIONAL(BUILD_WITH_LIBLDAP, test "x$with_libldap" = "xyes") +# }}} + # --with-liblvm2app {{{ with_liblvm2app_cppflags="" with_liblvm2app_ldflags="" @@@ -2465,7 -2359,7 +2465,7 @@@ the CPPFLAGS="$CPPFLAGS $with_liblvm2app_cppflags" LDFLAGS="$LDFLAGS $with_liblvm2app_ldflags" - AC_CHECK_LIB(lvm2app, lvm_init, [with_liblvm2app="yes"], [with_liblvm2app="no (Symbol 'lvm_init' not found)"]) + AC_CHECK_LIB(lvm2app, lvm_lv_get_property, [with_liblvm2app="yes"], [with_liblvm2app="no (Symbol 'lvm_lv_get_property' not found)"]) CPPFLAGS="$SAVE_CPPFLAGS" LDFLAGS="$SAVE_LDFLAGS" @@@ -2869,15 -2763,6 +2869,15 @@@ return (retval) fi if test "x$with_libmnl" = "xyes" then + AC_CHECK_MEMBERS([struct rtnl_link_stats64.tx_window_errors], + [AC_DEFINE(HAVE_RTNL_LINK_STATS64, 1, [Define if struct rtnl_link_stats64 exists and is usable.])], + [], + [ + #include + ]) +fi +if test "x$with_libmnl" = "xyes" +then AC_CHECK_LIB(mnl, mnl_nlmsg_get_payload, [with_libmnl="yes"], [with_libmnl="no (symbol 'mnl_nlmsg_get_payload' not found)"], @@@ -3001,7 -2886,7 +3001,7 @@@ the else SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $with_snmp_cflags" - + AC_CHECK_HEADERS(net-snmp/net-snmp-config.h, [], [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"]) CPPFLAGS="$SAVE_CPPFLAGS" @@@ -3228,7 -3113,7 +3228,7 @@@ if test "x$with_libowcapi" = "xyes then SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$with_libowcapi_cppflags" - + AC_CHECK_HEADERS(owcapi.h, [with_libowcapi="yes"], [with_libowcapi="no (owcapi.h not found)"]) CPPFLAGS="$SAVE_CPPFLAGS" @@@ -3239,7 -3124,7 +3239,7 @@@ the SAVE_CPPFLAGS="$CPPFLAGS" LDFLAGS="$with_libowcapi_libs" CPPFLAGS="$with_libowcapi_cppflags" - + AC_CHECK_LIB(owcapi, OW_get, [with_libowcapi="yes"], [with_libowcapi="no (libowcapi not found)"]) LDFLAGS="$SAVE_LDFLAGS" @@@ -3835,68 -3720,6 +3835,68 @@@ the fi # }}} +# --with-librdkafka {{{ +AC_ARG_WITH(librdkafka, [AS_HELP_STRING([--with-librdkafka@<:@=PREFIX@:>@], [Path to librdkafka.])], +[ + if test "x$withval" != "xno" && test "x$withval" != "xyes" + then + with_librdkafka_cppflags="-I$withval/include" + with_librdkafka_ldflags="-L$withval/lib" + with_librdkafka_rpath="$withval/lib" + with_librdkafka="yes" + else + with_librdkafka="$withval" + fi +], +[ + with_librdkafka="yes" +]) +SAVE_CPPFLAGS="$CPPFLAGS" +SAVE_LDFLAGS="$LDFLAGS" + +CPPFLAGS="$CPPFLAGS $with_librdkafka_cppflags" +LDFLAGS="$LDFLAGS $with_librdkafka_ldflags" + +if test "x$with_librdkafka" = "xyes" +then + AC_CHECK_HEADERS(librdkafka/rdkafka.h, [with_librdkafka="yes"], [with_librdkafka="no (librdkafka/rdkafka.h not found)"]) +fi + +if test "x$with_librdkafka" = "xyes" +then + AC_CHECK_LIB(rdkafka, rd_kafka_new, [with_librdkafka="yes"], [with_librdkafka="no (Symbol 'rd_kafka_new' not found)"]) + AC_CHECK_LIB(rdkafka, rd_kafka_conf_set_log_cb, [with_librdkafka_log_cb="yes"], [with_librdkafka_log_cb="no"]) + AC_CHECK_LIB(rdkafka, rd_kafka_set_logger, [with_librdkafka_logger="yes"], [with_librdkafka_logger="no"]) +fi +if test "x$with_librdkafka" = "xyes" +then + BUILD_WITH_LIBRDKAFKA_CPPFLAGS="$with_librdkafka_cppflags" + BUILD_WITH_LIBRDKAFKA_LDFLAGS="$with_librdkafka_ldflags" + if test "x$with_librdkafka_rpath" != "x" + then + BUILD_WITH_LIBRDKAFKA_LIBS="-Wl,-rpath,$with_librdkafka_rpath -lrdkafka" + else + BUILD_WITH_LIBRDKAFKA_LIBS="-lrdkafka" + fi + AC_SUBST(BUILD_WITH_LIBRDKAFKA_CPPFLAGS) + AC_SUBST(BUILD_WITH_LIBRDKAFKA_LDFLAGS) + AC_SUBST(BUILD_WITH_LIBRDKAFKA_LIBS) + AC_DEFINE(HAVE_LIBRDKAFKA, 1, [Define if librdkafka is present and usable.]) + if test "x$with_librdkafka_log_cb" = "xyes" + then + AC_DEFINE(HAVE_LIBRDKAFKA_LOG_CB, 1, [Define if librdkafka log facility is present and usable.]) + fi + if test "x$with_librdkafka_logger" = "xyes" + then + AC_DEFINE(HAVE_LIBRDKAFKA_LOGGER, 1, [Define if librdkafka log facility is present and usable.]) + fi +fi +CPPFLAGS="$SAVE_CPPFLAGS" +LDFLAGS="$SAVE_LDFLAGS" +AM_CONDITIONAL(BUILD_WITH_LIBRDKAFKA, test "x$with_librdkafka" = "xyes") + +# }}} + # --with-librouteros {{{ AC_ARG_WITH(librouteros, [AS_HELP_STRING([--with-librouteros@<:@=PREFIX@:>@], [Path to librouteros.])], [ @@@ -4268,36 -4091,6 +4268,36 @@@ the LDFLAGS="$SAVE_LDFLAGS" fi +if test "x$with_libstatgrab" = "xyes" +then + SAVE_CFLAGS="$CFLAGS" + SAVE_LIBS="$LIBS" + + CFLAGS="$CFLAGS $with_libstatgrab_cflags" + LDFLAGS="$LDFLAGS $with_libstatgrab_ldflags" + LIBS="-lstatgrab $LIBS" + + AC_CACHE_CHECK([if libstatgrab >= 0.90], + [c_cv_have_libstatgrab_0_90], + AC_LINK_IFELSE([AC_LANG_PROGRAM( +[[[ +#include +#include +]]], +[[[ + if (sg_init()) return 0; +]]] + )], + [c_cv_have_libstatgrab_0_90="no"], + [c_cv_have_libstatgrab_0_90="yes"] + ) + ) + + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + LIBS="$SAVE_LIBS" +fi + AM_CONDITIONAL(BUILD_WITH_LIBSTATGRAB, test "x$with_libstatgrab" = "xyes") if test "x$with_libstatgrab" = "xyes" then @@@ -4306,10 -4099,6 +4306,10 @@@ BUILD_WITH_LIBSTATGRAB_LDFLAGS="$with_libstatgrab_ldflags" AC_SUBST(BUILD_WITH_LIBSTATGRAB_CFLAGS) AC_SUBST(BUILD_WITH_LIBSTATGRAB_LDFLAGS) + if test "x$c_cv_have_libstatgrab_0_90" = "xyes" + then + AC_DEFINE(HAVE_LIBSTATGRAB_0_90, 1, [Define to 1 if libstatgrab version >= 0.90]) + fi fi # }}} @@@ -4375,7 -4164,7 +4375,7 @@@ CPPFLAGS="$SAVE_CPPFLAGS LDFLAGS="$SAVE_LDFLAGS" if test "x$with_libtokyotyrant" = "xyes" -then +then BUILD_WITH_LIBTOKYOTYRANT_CPPFLAGS="$with_libtokyotyrant_cppflags" BUILD_WITH_LIBTOKYOTYRANT_LDFLAGS="$with_libtokyotyrant_ldflags" BUILD_WITH_LIBTOKYOTYRANT_LIBS="$with_libtokyotyrant_libs" @@@ -4386,67 -4175,6 +4386,67 @@@ f AM_CONDITIONAL(BUILD_WITH_LIBTOKYOTYRANT, test "x$with_libtokyotyrant" = "xyes") # }}} +# --with-libudev {{{ +with_libudev_cflags="" +with_libudev_ldflags="" +AC_ARG_WITH(libudev, [AS_HELP_STRING([--with-libudev@<:@=PREFIX@:>@], [Path to libudev.])], +[ + if test "x$withval" = "xno" + then + with_libudev="no" + else + with_libudev="yes" + if test "x$withval" != "xyes" + then + with_libudev_cflags="-I$withval/include" + with_libudev_ldflags="-L$withval/lib" + with_libudev="yes" + fi + fi +], +[ + if test "x$ac_system" = "xLinux" + then + with_libudev="yes" + else + with_libudev="no (Linux only library)" + fi +]) +if test "x$with_libudev" = "xyes" +then + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_libudev_cflags" + + AC_CHECK_HEADERS(libudev.h, [], [with_libudev="no (libudev.h not found)"]) + + CPPFLAGS="$SAVE_CPPFLAGS" +fi +if test "x$with_libudev" = "xyes" +then + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + CPPFLAGS="$CPPFLAGS $with_libudev_cflags" + LDFLAGS="$LDFLAGS $with_libudev_ldflags" + + AC_CHECK_LIB(udev, udev_new, + [ + AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if you have the udev library (-ludev).]) + ], + [with_libudev="no (libudev not found)"]) + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" +fi +if test "x$with_libudev" = "xyes" +then + BUILD_WITH_LIBUDEV_CFLAGS="$with_libudev_cflags" + BUILD_WITH_LIBUDEV_LDFLAGS="$with_libudev_ldflags" + AC_SUBST(BUILD_WITH_LIBUDEV_CFLAGS) + AC_SUBST(BUILD_WITH_LIBUDEV_LDFLAGS) +fi +AM_CONDITIONAL(BUILD_WITH_LIBUDEV, test "x$with_libudev" = "xyes") +# }}} + # --with-libupsclient {{{ with_libupsclient_config="" with_libupsclient_cflags="" @@@ -4821,18 -4549,25 +4821,18 @@@ f if test "x$with_libvarnish" = "xyes" then SAVE_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags" - AC_CHECK_HEADERS(varnish/varnishapi.h, [], [with_libvarnish="no (varnish/varnishapi.h not found)"]) - - CPPFLAGS="$SAVE_CPPFLAGS" -fi -if test "x$with_libvarnish" = "xyes" -then - SAVE_CPPFLAGS="$CPPFLAGS" - #SAVE_LDFLAGS="$LDFLAGS" CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags" - #LDFLAGS="$LDFLAGS $with_libvarnish_libs" - AC_CHECK_HEADERS(varnish/vsc.h, - [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support])], - [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])]) + AC_CHECK_HEADERS(vapi/vsc.h, + [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])], + [AC_CHECK_HEADERS(vsc.h, + [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support])], + [AC_CHECK_HEADERS(varnishapi.h, + [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])], + [with_libvarnish="no (found none of the varnish header files)"])])]) CPPFLAGS="$SAVE_CPPFLAGS" - #LDFLAGS="$SAVE_LDFLAGS" fi if test "x$with_libvarnish" = "xyes" then @@@ -5041,62 -4776,6 +5041,62 @@@ the fi # }}} +# --with-libatasmart {{{ +with_libatasmart_cppflags="" +with_libatasmart_ldflags="" +AC_ARG_WITH(libatasmart, [AS_HELP_STRING([--with-libatasmart@<:@=PREFIX@:>@], [Path to libatasmart.])], +[ + if test "x$withval" != "xno" && test "x$withval" != "xyes" + then + with_libatasmart_cppflags="-I$withval/include" + with_libatasmart_ldflags="-L$withval/lib" + with_libatasmart="yes" + else + with_libatasmart="$withval" + fi +], +[ + if test "x$ac_system" = "xLinux" + then + with_libatasmart="yes" + else + with_libatasmart="no (Linux only library)" + fi +]) +if test "x$with_libatasmart" = "xyes" +then + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_libatasmart_cppflags" + + AC_CHECK_HEADERS(atasmart.h, [with_libatasmart="yes"], [with_libatasmart="no (atasmart.h not found)"]) + + CPPFLAGS="$SAVE_CPPFLAGS" +fi +if test "x$with_libatasmart" = "xyes" +then + SAVE_CPPFLAGS="$CPPFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + CPPFLAGS="$CPPFLAGS $with_libatasmart_cppflags" + LDFLAGS="$LDFLAGS $with_libatasmart_ldflags" + + AC_CHECK_LIB(atasmart, sk_disk_open, [with_libatasmart="yes"], [with_libatasmart="no (Symbol 'sk_disk_open' not found)"]) + + CPPFLAGS="$SAVE_CPPFLAGS" + LDFLAGS="$SAVE_LDFLAGS" +fi +if test "x$with_libatasmart" = "xyes" +then + BUILD_WITH_LIBATASMART_CPPFLAGS="$with_libatasmart_cppflags" + BUILD_WITH_LIBATASMART_LDFLAGS="$with_libatasmart_ldflags" + BUILD_WITH_LIBATASMART_LIBS="-latasmart" + AC_SUBST(BUILD_WITH_LIBATASMART_CPPFLAGS) + AC_SUBST(BUILD_WITH_LIBATASMART_LDFLAGS) + AC_SUBST(BUILD_WITH_LIBATASMART_LIBS) + AC_DEFINE(HAVE_LIBATASMART, 1, [Define if libatasmart is present and usable.]) +fi +AM_CONDITIONAL(BUILD_WITH_LIBATASMART, test "x$with_libatasmart" = "xyes") +# }}} + PKG_CHECK_MODULES([LIBNOTIFY], [libnotify], [with_libnotify="yes"], [if test "x$LIBNOTIFY_PKG_ERRORS" = "x"; then @@@ -5232,10 -4911,8 +5232,10 @@@ dependency_warning="no dependency_error="no" plugin_ascent="no" +plugin_barometer="no" plugin_battery="no" plugin_bind="no" +plugin_ceph="no" plugin_cgroups="no" plugin_conntrack="no" plugin_contextswitch="no" @@@ -5245,17 -4922,15 +5245,17 @@@ plugin_curl_json="no plugin_curl_xml="no" plugin_df="no" plugin_disk="no" +plugin_drbd="no" plugin_entropy="no" plugin_ethstat="no" +plugin_fhcount="no" plugin_fscache="no" plugin_interface="no" plugin_ipmi="no" plugin_ipvs="no" plugin_irq="no" -plugin_libvirt="no" plugin_load="no" +plugin_log_logstash="no" plugin_memory="no" plugin_multimeter="no" plugin_nfs="no" @@@ -5269,15 -4944,12 +5269,15 @@@ plugin_tape="no plugin_tcpconns="no" plugin_ted="no" plugin_thermal="no" -plugin_users="no" +plugin_turbostat="no" plugin_uptime="no" +plugin_users="no" +plugin_virt="no" plugin_vmem="no" plugin_vserver="no" plugin_wireless="no" plugin_zfs_arc="no" +plugin_zookeeper="no" # Linux if test "x$ac_system" = "xLinux" @@@ -5289,12 -4961,9 +5289,12 @@@ the plugin_cpu="yes" plugin_cpufreq="yes" plugin_disk="yes" + plugin_drbd="yes" plugin_entropy="yes" + plugin_fhcount="yes" plugin_fscache="yes" plugin_interface="yes" + plugin_ipc="yes" plugin_irq="yes" plugin_load="yes" plugin_lvm="yes" @@@ -5311,16 -4980,11 +5311,16 @@@ plugin_vmem="yes" plugin_vserver="yes" plugin_wireless="yes" + plugin_zfs_arc="yes" if test "x$have_linux_ip_vs_h" = "xyes" || test "x$have_net_ip_vs_h" = "xyes" || test "x$have_ip_vs_h" = "xyes" then plugin_ipvs="yes" fi + if test "x$c_cv_have_usable_asm_msrindex_h" = "xyes" && test "x$have_cpuid_h" = "xyes" + then + plugin_turbostat="yes" + fi fi if test "x$ac_system" = "xOpenBSD" @@@ -5339,15 -5003,14 +5339,15 @@@ f if test "x$ac_system" = "xAIX" then - plugin_tcpconns="yes" + plugin_tcpconns="yes" + plugin_ipc="yes" fi # FreeBSD if test "x$ac_system" = "xFreeBSD" then - plugin_zfs_arc="yes" + plugin_zfs_arc="yes" fi @@@ -5386,23 -5049,6 +5386,23 @@@ the plugin_tape="yes" fi +# libi2c-dev +with_libi2c="no" +if test "x$ac_system" = "xLinux" +then +AC_CHECK_DECL(i2c_smbus_read_i2c_block_data, + [with_libi2c="yes"], + [with_libi2c="no (symbol i2c_smbus_read_i2c_block_data not found - have you installed libi2c-dev ?)"], + [[#include + #include ]]) +fi + +if test "x$with_libi2c" = "xyes" +then + plugin_barometer="yes" +fi + + # libstatgrab if test "x$with_libstatgrab" = "xyes" then @@@ -5439,11 -5085,6 +5439,11 @@@ the plugin_curl_xml="yes" fi +if test "x$with_libyajl" = "xyes" +then + plugin_ceph="yes" +fi + if test "x$have_processor_info" = "xyes" then plugin_cpu="yes" @@@ -5516,14 -5157,14 +5516,14 @@@ the plugin_interface="yes" fi -if test "x$with_libxml2" = "xyes" && test "x$with_libvirt" = "xyes" +if test "x$have_getloadavg" = "xyes" then - plugin_libvirt="yes" + plugin_load="yes" fi -if test "x$have_getloadavg" = "xyes" +if test "x$with_libyajl" = "xyes" then - plugin_load="yes" + plugin_log_logstash="yes" fi if test "x$c_cv_have_libperl$c_cv_have_perl_ithreads" = "xyesyes" @@@ -5539,10 -5180,7 +5539,10 @@@ f if test "x$have_termios_h" = "xyes" then - plugin_multimeter="yes" + if test "x$ac_system" != "xAIX" + then + plugin_multimeter="yes" + fi plugin_ted="yes" fi @@@ -5556,11 -5194,6 +5556,11 @@@ the plugin_processes="yes" fi +if test "x$with_kvm_getprocs" = "xyes" && test "x$have_struct_kinfo_proc_openbsd" = "xyes" +then + plugin_processes="yes" +fi + if test "x$with_kvm_getswapinfo" = "xyes" then plugin_swap="yes" @@@ -5585,12 -5218,6 +5585,12 @@@ the plugin_users="yes" fi +if test "x$with_libxml2" = "xyes" && test "x$with_libvirt" = "xyes" +then + plugin_virt="yes" +fi + + m4_divert_once([HELP_ENABLE], [ collectd plugins:]) @@@ -5618,10 -5245,8 +5618,10 @@@ AC_PLUGIN([apcups], [yes] AC_PLUGIN([apple_sensors], [$with_libiokit], [Apple's hardware sensors]) AC_PLUGIN([aquaero], [$with_libaquaero5], [Aquaero's hardware sensors]) AC_PLUGIN([ascent], [$plugin_ascent], [AscentEmu player statistics]) +AC_PLUGIN([barometer], [$plugin_barometer], [Barometer sensor on I2C]) AC_PLUGIN([battery], [$plugin_battery], [Battery statistics]) AC_PLUGIN([bind], [$plugin_bind], [ISC Bind nameserver statistics]) +AC_PLUGIN([ceph], [$plugin_ceph], [Ceph daemon statistics]) AC_PLUGIN([conntrack], [$plugin_conntrack], [nf_conntrack statistics]) AC_PLUGIN([contextswitch], [$plugin_contextswitch], [context switch statistics]) AC_PLUGIN([cpufreq], [$plugin_cpufreq], [CPU frequency statistics]) @@@ -5634,27 -5259,24 +5634,27 @@@ AC_PLUGIN([cgroups], [$plugin_cgrou AC_PLUGIN([dbi], [$with_libdbi], [General database statistics]) AC_PLUGIN([df], [$plugin_df], [Filesystem usage statistics]) AC_PLUGIN([disk], [$plugin_disk], [Disk usage statistics]) +AC_PLUGIN([drbd], [$plugin_drbd], [DRBD statistics]) AC_PLUGIN([dns], [$with_libpcap], [DNS traffic analysis]) AC_PLUGIN([email], [yes], [EMail statistics]) AC_PLUGIN([entropy], [$plugin_entropy], [Entropy statistics]) AC_PLUGIN([ethstat], [$plugin_ethstat], [Stats from NIC driver]) AC_PLUGIN([exec], [yes], [Execution of external programs]) +AC_PLUGIN([fhcount], [$plugin_fhcount], [File handles statistics]) AC_PLUGIN([filecount], [yes], [Count files in directories]) AC_PLUGIN([fscache], [$plugin_fscache], [fscache statistics]) AC_PLUGIN([gmond], [$with_libganglia], [Ganglia plugin]) AC_PLUGIN([hddtemp], [yes], [Query hddtempd]) AC_PLUGIN([interface], [$plugin_interface], [Interface traffic statistics]) +AC_PLUGIN([ipc], [$plugin_ipc], [IPC statistics]) AC_PLUGIN([ipmi], [$plugin_ipmi], [IPMI sensor statistics]) AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters]) AC_PLUGIN([ipvs], [$plugin_ipvs], [IPVS connection statistics]) AC_PLUGIN([irq], [$plugin_irq], [IRQ statistics]) AC_PLUGIN([java], [$with_java], [Embed the Java Virtual Machine]) -AC_PLUGIN([libvirt], [$plugin_libvirt], [Virtual machine statistics]) AC_PLUGIN([load], [$plugin_load], [System load]) AC_PLUGIN([logfile], [yes], [File logging plugin]) +AC_PLUGIN([log_logstash], [$plugin_log_logstash], [Logstash json_event compatible logging]) AC_PLUGIN([lpar], [$with_perfstat], [AIX logical partitions statistics]) AC_PLUGIN([lvm], [$with_liblvm2app], [LVM statistics]) AC_PLUGIN([madwifi], [$have_linux_wireless_h], [Madwifi wireless statistics]) @@@ -5684,7 -5306,6 +5684,7 @@@ AC_PLUGIN([numa], [$plugin_numa] AC_PLUGIN([nut], [$with_libupsclient], [Network UPS tools statistics]) AC_PLUGIN([olsrd], [yes], [olsrd statistics]) AC_PLUGIN([onewire], [$with_libowcapi], [OneWire sensor statistics]) +AC_PLUGIN([openldap], [$with_libldap], [OpenLDAP statistics]) AC_PLUGIN([openvpn], [yes], [OpenVPN client statistics]) AC_PLUGIN([oracle], [$with_oracle], [Oracle plugin]) AC_PLUGIN([perl], [$plugin_perl], [Embed a Perl interpreter]) @@@ -5697,14 -5318,13 +5697,14 @@@ AC_PLUGIN([powerdns], [yes] AC_PLUGIN([processes], [$plugin_processes], [Process statistics]) AC_PLUGIN([protocols], [$plugin_protocols], [Protocol (IP, TCP, ...) statistics]) AC_PLUGIN([python], [$with_python], [Embed a Python interpreter]) -AC_PLUGIN([redis], [$with_libcredis], [Redis plugin]) +AC_PLUGIN([redis], [$with_libhiredis], [Redis plugin]) AC_PLUGIN([routeros], [$with_librouteros], [RouterOS plugin]) AC_PLUGIN([rrdcached], [$librrd_rrdc_update], [RRDTool output plugin]) AC_PLUGIN([rrdtool], [$with_librrd], [RRDTool output plugin]) AC_PLUGIN([sensors], [$with_libsensors], [lm_sensors statistics]) AC_PLUGIN([serial], [$plugin_serial], [serial port traffic]) AC_PLUGIN([sigrok], [$with_libsigrok], [sigrok acquisition sources]) +AC_PLUGIN([smart], [$with_libatasmart], [SMART statistics]) AC_PLUGIN([snmp], [$with_libnetsnmp], [SNMP querying plugin]) AC_PLUGIN([statsd], [yes], [StatsD plugin]) AC_PLUGIN([swap], [$plugin_swap], [Swap usage statistics]) @@@ -5724,34 -5344,26 +5724,34 @@@ AC_PLUGIN([ted], [$plugin_ted] AC_PLUGIN([thermal], [$plugin_thermal], [Linux ACPI thermal zone statistics]) AC_PLUGIN([threshold], [yes], [Threshold checking plugin]) AC_PLUGIN([tokyotyrant], [$with_libtokyotyrant], [TokyoTyrant database statistics]) +AC_PLUGIN([turbostat], [$plugin_turbostat], [Advanced statistic on Intel cpu states]) AC_PLUGIN([unixsock], [yes], [Unixsock communication plugin]) AC_PLUGIN([uptime], [$plugin_uptime], [Uptime statistics]) AC_PLUGIN([users], [$plugin_users], [User statistics]) AC_PLUGIN([uuid], [yes], [UUID as hostname plugin]) AC_PLUGIN([varnish], [$with_libvarnish], [Varnish cache statistics]) +AC_PLUGIN([virt], [$plugin_virt], [Virtual machine statistics]) AC_PLUGIN([vmem], [$plugin_vmem], [Virtual memory statistics]) AC_PLUGIN([vserver], [$plugin_vserver], [Linux VServer statistics]) AC_PLUGIN([wireless], [$plugin_wireless], [Wireless statistics]) AC_PLUGIN([write_graphite], [yes], [Graphite / Carbon output plugin]) AC_PLUGIN([write_http], [$with_libcurl], [HTTP output plugin]) +AC_PLUGIN([write_kafka], [$with_librdkafka], [Kafka output plugin]) +AC_PLUGIN([write_log], [yes], [Log output plugin]) AC_PLUGIN([write_mongodb], [$with_libmongoc], [MongoDB output plugin]) -AC_PLUGIN([write_redis], [$with_libcredis], [Redis output plugin]) +AC_PLUGIN([write_redis], [$with_libhiredis], [Redis output plugin]) AC_PLUGIN([write_riemann], [$have_protoc_c], [Riemann output plugin]) +AC_PLUGIN([write_sensu], [yes], [Sensu output plugin]) +AC_PLUGIN([write_tsdb], [yes], [TSDB output plugin]) AC_PLUGIN([xmms], [$with_libxmms], [XMMS statistics]) AC_PLUGIN([zfs_arc], [$plugin_zfs_arc], [ZFS ARC statistics]) +AC_PLUGIN([zookeeper], [yes], [Zookeeper statistics]) dnl Default configuration file # Load either syslog or logfile LOAD_PLUGIN_SYSLOG="" LOAD_PLUGIN_LOGFILE="" +LOAD_PLUGIN_LOG_LOGSTASH="" AC_MSG_CHECKING([which default log plugin to load]) default_log_plugin="none" @@@ -5773,20 -5385,10 +5773,20 @@@ the else LOAD_PLUGIN_LOGFILE="##" fi + +if test "x$enable_log_logstash" = "xyes" +then + LOAD_PLUGIN_LOG_LOGSTASH="#" +else + LOAD_PLUGIN_LOG_LOGSTASH="##" +fi + + AC_MSG_RESULT([$default_log_plugin]) AC_SUBST(LOAD_PLUGIN_SYSLOG) AC_SUBST(LOAD_PLUGIN_LOGFILE) +AC_SUBST(LOAD_PLUGIN_LOG_LOGSTASH) DEFAULT_LOG_LEVEL="info" if test "x$enable_debug" = "xyes" @@@ -5896,7 -5498,7 +5896,7 @@@ AC_SUBST(LCC_VERSION_STRING AC_CONFIG_FILES(src/libcollectdclient/collectd/lcc_features.h) -AC_CONFIG_FILES([Makefile src/Makefile src/collectd.conf src/libcollectdclient/Makefile src/libcollectdclient/libcollectdclient.pc src/liboconfig/Makefile bindings/Makefile bindings/java/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile src/daemon/Makefile src/collectd.conf src/libcollectdclient/Makefile src/libcollectdclient/libcollectdclient.pc src/liboconfig/Makefile bindings/Makefile bindings/java/Makefile]) AC_OUTPUT if test "x$with_librrd" = "xyes" \ @@@ -5929,21 -5531,18 +5929,21 @@@ Configuration Libraries: intel mic . . . . . . $with_mic libaquaero5 . . . . . $with_libaquaero5 - libcredis . . . . . . $with_libcredis + libatasmart . . . . . $with_libatasmart libcurl . . . . . . . $with_libcurl libdbi . . . . . . . $with_libdbi libesmtp . . . . . . $with_libesmtp libganglia . . . . . $with_libganglia libgcrypt . . . . . . $with_libgcrypt libhal . . . . . . . $with_libhal + libhiredis . . . . . $with_libhiredis + libi2c-dev . . . . . $with_libi2c libiokit . . . . . . $with_libiokit libiptc . . . . . . . $with_libiptc libjvm . . . . . . . $with_java libkstat . . . . . . $with_kstat libkvm . . . . . . . $with_libkvm + libldap . . . . . . . $with_libldap liblvm2app . . . . . $with_liblvm2app libmemcached . . . . $with_libmemcached libmnl . . . . . . . $with_libmnl @@@ -5963,14 -5562,12 +5963,14 @@@ libpq . . . . . . . . $with_libpq libpthread . . . . . $with_libpthread librabbitmq . . . . . $with_librabbitmq + librdkafka . . . . . $with_librdkafka librouteros . . . . . $with_librouteros librrd . . . . . . . $with_librrd libsensors . . . . . $with_libsensors libsigrok . . . . . $with_libsigrok libstatgrab . . . . . $with_libstatgrab libtokyotyrant . . . $with_libtokyotyrant + libudev . . . . . . . $with_libudev libupsclient . . . . $with_libupsclient libvarnish . . . . . $with_libvarnish libvirt . . . . . . . $with_libvirt @@@ -5993,16 -5590,14 +5993,16 @@@ amqp . . . . . . . $enable_amqp apache . . . . . . . $enable_apache apcups . . . . . . . $enable_apcups - aquaero . . . . . . . $enable_aquaero apple_sensors . . . . $enable_apple_sensors + aquaero . . . . . . . $enable_aquaero ascent . . . . . . . $enable_ascent + barometer . . . . . . $enable_barometer battery . . . . . . . $enable_battery bind . . . . . . . . $enable_bind + ceph . . . . . . . . $enable_ceph + cgroups . . . . . . . $enable_cgroups conntrack . . . . . . $enable_conntrack contextswitch . . . . $enable_contextswitch - cgroups . . . . . . . $enable_cgroups cpu . . . . . . . . . $enable_cpu cpufreq . . . . . . . $enable_cpufreq csv . . . . . . . . . $enable_csv @@@ -6013,26 -5608,23 +6013,26 @@@ df . . . . . . . . . $enable_df disk . . . . . . . . $enable_disk dns . . . . . . . . . $enable_dns + drbd . . . . . . . . $enable_drbd email . . . . . . . . $enable_email entropy . . . . . . . $enable_entropy ethstat . . . . . . . $enable_ethstat exec . . . . . . . . $enable_exec + fhcount . . . . . . . $enable_fhcount filecount . . . . . . $enable_filecount fscache . . . . . . . $enable_fscache gmond . . . . . . . . $enable_gmond hddtemp . . . . . . . $enable_hddtemp interface . . . . . . $enable_interface + ipc . . . . . . . . . $enable_ipc ipmi . . . . . . . . $enable_ipmi iptables . . . . . . $enable_iptables ipvs . . . . . . . . $enable_ipvs irq . . . . . . . . . $enable_irq java . . . . . . . . $enable_java - libvirt . . . . . . . $enable_libvirt load . . . . . . . . $enable_load logfile . . . . . . . $enable_logfile + log_logstash . . . . $enable_log_logstash lpar . . . . . . . . $enable_lpar lvm . . . . . . . . . $enable_lvm madwifi . . . . . . . $enable_madwifi @@@ -6062,7 -5654,6 +6062,7 @@@ nut . . . . . . . . . $enable_nut olsrd . . . . . . . . $enable_olsrd onewire . . . . . . . $enable_onewire + openldap . . . . . . $enable_openldap openvpn . . . . . . . $enable_openvpn oracle . . . . . . . $enable_oracle perl . . . . . . . . $enable_perl @@@ -6081,14 -5672,13 +6081,14 @@@ sensors . . . . . . . $enable_sensors serial . . . . . . . $enable_serial sigrok . . . . . . . $enable_sigrok + smart . . . . . . . . $enable_smart snmp . . . . . . . . $enable_snmp statsd . . . . . . . $enable_statsd swap . . . . . . . . $enable_swap syslog . . . . . . . $enable_syslog table . . . . . . . . $enable_table - tail . . . . . . . . $enable_tail tail_csv . . . . . . $enable_tail_csv + tail . . . . . . . . $enable_tail tape . . . . . . . . $enable_tape target_notification . $enable_target_notification target_replace . . . $enable_target_replace @@@ -6101,28 -5691,21 +6101,28 @@@ thermal . . . . . . . $enable_thermal threshold . . . . . . $enable_threshold tokyotyrant . . . . . $enable_tokyotyrant + turbostat . . . . . . $enable_turbostat unixsock . . . . . . $enable_unixsock uptime . . . . . . . $enable_uptime users . . . . . . . . $enable_users uuid . . . . . . . . $enable_uuid varnish . . . . . . . $enable_varnish + virt . . . . . . . . $enable_virt vmem . . . . . . . . $enable_vmem vserver . . . . . . . $enable_vserver wireless . . . . . . $enable_wireless write_graphite . . . $enable_write_graphite write_http . . . . . $enable_write_http + write_kafka . . . . . $enable_write_kafka + write_log . . . . . . $enable_write_log write_mongodb . . . . $enable_write_mongodb write_redis . . . . . $enable_write_redis write_riemann . . . . $enable_write_riemann + write_sensu . . . . . $enable_write_sensu + write_tsdb . . . . . $enable_write_tsdb xmms . . . . . . . . $enable_xmms zfs_arc . . . . . . . $enable_zfs_arc + zookeeper . . . . . . $enable_zookeeper EOF diff --combined contrib/redhat/collectd.spec index 7407dc8d,1e6cd2a7..73da03d0 --- a/contrib/redhat/collectd.spec +++ b/contrib/redhat/collectd.spec @@@ -48,11 -48,7 +48,11 @@@ %{?el6:%global _has_ip_vs_h 1} %{?el6:%global _has_lvm2app_h 1} %{?el6:%global _has_libmodbus 1} +%{?el6:%global _has_libudev 1} %{?el6:%global _has_iproute 1} +%{?el6:%global _has_atasmart 1} +%{?el6:%global _has_hiredis 1} +%{?el6:%global _has_asm_msr_index 1} %{?el7:%global _has_libyajl 1} %{?el7:%global _has_recent_libpcap 1} @@@ -60,13 -56,10 +60,13 @@@ %{?el7:%global _has_working_libiptc 1} %{?el7:%global _has_ip_vs_h 1} %{?el7:%global _has_lvm2app_h 1} +%{?el7:%global _has_libudev 1} %{?el7:%global _has_recent_librrd 1} -%{?el7:%global _has_varnish4 1} %{?el7:%global _has_broken_libmemcached 1} %{?el7:%global _has_iproute 1} +%{?el7:%global _has_atasmart 1} +%{?el7:%global _has_hiredis 1} +%{?el7:%global _has_asm_msr_index 1} # plugins enabled by default %define with_aggregation 0%{!?_without_aggregation:1} @@@ -76,7 -69,6 +76,7 @@@ %define with_ascent 0%{!?_without_ascent:1} %define with_battery 0%{!?_without_battery:1} %define with_bind 0%{!?_without_bind:1} +%define with_ceph 0%{!?_without_ceph:0%{?_has_libyajl}} %define with_cgroups 0%{!?_without_cgroups:1} %define with_conntrack 0%{!?_without_conntrack:1} %define with_contextswitch 0%{!?_without_contextswitch:1} @@@ -90,27 -82,23 +90,27 @@@ %define with_df 0%{!?_without_df:1} %define with_disk 0%{!?_without_disk:1} %define with_dns 0%{!?_without_dns:0%{?_has_recent_libpcap}} +%define with_drbd 0%{!?_without_drbd:1} %define with_email 0%{!?_without_email:1} %define with_entropy 0%{!?_without_entropy:1} %define with_ethstat 0%{!?_without_ethstat:0%{?_has_recent_sockios_h}} %define with_exec 0%{!?_without_exec:1} +%define with_fhcount 0%{!?_without_fhcount:1} %define with_filecount 0%{!?_without_filecount:1} %define with_fscache 0%{!?_without_fscache:1} %define with_gmond 0%{!?_without_gmond:0%{?_has_recent_libganglia}} %define with_hddtemp 0%{!?_without_hddtemp:1} %define with_interface 0%{!?_without_interface:1} +%define with_ipc 0%{!?_without_ipc:1} %define with_ipmi 0%{!?_without_ipmi:1} %define with_iptables 0%{!?_without_iptables:0%{?_has_working_libiptc}} %define with_ipvs 0%{!?_without_ipvs:0%{?_has_ip_vs_h}} %define with_irq 0%{!?_without_irq:1} %define with_java 0%{!?_without_java:1} -%define with_libvirt 0%{!?_without_libvirt:1} +%define with_virt 0%{!?_without_virt:1} %define with_load 0%{!?_without_load:1} %define with_logfile 0%{!?_without_logfile:1} +%define with_log_logstash 0%{!?_without_log_logstash:0%{?_has_libyajl}} %define with_lvm 0%{!?_without_lvm:0%{?_has_lvm2app_h}} %define with_madwifi 0%{!?_without_madwifi:1} %define with_mbmon 0%{!?_without_mbmon:1} @@@ -131,7 -119,6 +131,7 @@@ %define with_numa 0%{!?_without_numa:1} %define with_nut 0%{!?_without_nut:1} %define with_olsrd 0%{!?_without_olsrd:1} +%define with_openldap 0%{!?_without_openldap:1} %define with_openvpn 0%{!?_without_openvpn:1} %define with_perl 0%{!?_without_perl:1} %define with_pinba 0%{!?_without_pinba:1} @@@ -141,12 -128,10 +141,12 @@@ %define with_processes 0%{!?_without_processes:1} %define with_protocols 0%{!?_without_protocols:1} %define with_python 0%{!?_without_python:1} +%define with_redis 0%{!?_without_redis:0%{?_has_hiredis}} %define with_rrdcached 0%{!?_without_rrdcached:0%{?_has_recent_librrd}} %define with_rrdtool 0%{!?_without_rrdtool:1} %define with_sensors 0%{!?_without_sensors:1} %define with_serial 0%{!?_without_serial:1} +%define with_smart 0%{!?_without_smart:0%{?_has_atasmart}} %define with_snmp 0%{!?_without_snmp:1} %define with_statsd 0%{!?_without_statsd:1} %define with_swap 0%{!?_without_swap:1} @@@ -159,24 -144,17 +159,24 @@@ %define with_ted 0%{!?_without_ted:1} %define with_thermal 0%{!?_without_thermal:1} %define with_threshold 0%{!?_without_threshold:1} +%define with_turbostat 0%{!?_without_turbostat:0%{?_has_asm_msr_index}} %define with_unixsock 0%{!?_without_unixsock:1} %define with_uptime 0%{!?_without_uptime:1} %define with_users 0%{!?_without_users:1} %define with_uuid 0%{!?_without_uuid:1} -%define with_varnish 0%{!?_without_varnish:0%{!?_has_varnish4:1}} +%define with_varnish 0%{!?_without_varnish:1} %define with_vmem 0%{!?_without_vmem:1} %define with_vserver 0%{!?_without_vserver:1} %define with_wireless 0%{!?_without_wireless:1} %define with_write_graphite 0%{!?_without_write_graphite:1} %define with_write_http 0%{!?_without_write_http:1} +%define with_write_log 0%{!?_without_write_log:1} +%define with_write_redis 0%{!?_without_write_redis:0%{?_has_hiredis}} %define with_write_riemann 0%{!?_without_write_riemann:1} +%define with_write_sensu 0%{!?_without_write_sensu:1} +%define with_write_tsdb 0%{!?_without_write_tsdb:1} +%define with_zfs_arc 0%{!?_without_zfs_arc:1} +%define with_zookeeper 0%{!?_without_zookeeper:1} # Plugins not built by default because of dependencies on libraries not # available in RHEL or EPEL: @@@ -185,8 -163,6 +185,8 @@@ %define with_apple_sensors 0%{!?_without_apple_sensors:0} # plugin aquaero disabled, requires a libaquaero5 %define with_aquaero 0%{!?_without_aquaero:0} +# plugin barometer disabled, requires a libi2c +%define with_barometer 0%{!?_without_barometer:0} # plugin lpar disabled, requires AIX %define with_lpar 0%{!?_without_lpar:0} # plugin mic disabled, requires Mic @@@ -199,6 -175,8 +199,6 @@@ %define with_oracle 0%{!?_without_oracle:0} # plugin oracle disabled, requires BSD %define with_pf 0%{!?_without_pf:0} -# plugin redis disabled, requires credis -%define with_redis 0%{!?_without_redis:0} # plugin routeros disabled, requires librouteros %define with_routeros 0%{!?_without_routeros:0} # plugin sigrok disabled, requires libsigrok @@@ -207,35 -185,30 +207,35 @@@ %define with_tape 0%{!?_without_tape:0} # plugin tokyotyrant disabled, requires tcrdb.h %define with_tokyotyrant 0%{!?_without_tokyotyrant:0} +# plugin write_kafka disabled, requires librdkafka +%define with_write_kafka 0%{!?_without_write_kafka:0} # plugin write_mongodb disabled, requires libmongoc %define with_write_mongodb 0%{!?_without_write_mongodb:0} -# plugin write_redis disabled, requires credis -%define with_write_redis 0%{!?_without_write_redis:0} # plugin xmms disabled, requires xmms %define with_xmms 0%{!?_without_xmms:0} -# plugin zfs_arc disabled, requires FreeBSD/Solaris -%define with_zfs_arc 0%{!?_without_zfs_arc:0} Summary: statistics collection and monitoring daemon Name: collectd -Version: 5.4.2 +Version: 5.5.0 Release: 1%{?dist} URL: http://collectd.org Source: http://collectd.org/files/%{name}-%{version}.tar.bz2 License: GPLv2 Group: System Environment/Daemons BuildRoot: %{_tmppath}/%{name}-%{version}-root -BuildRequires: libgcrypt-devel, kernel-headers, libtool-ltdl-devel +BuildRequires: libgcrypt-devel, kernel-headers, libtool-ltdl-devel, libcap-devel Vendor: collectd development team +%if 0%{?el7:1} +Requires(pre): initscripts +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%else Requires(post): chkconfig Requires(preun): chkconfig, initscripts Requires(postun): initscripts +%endif %description collectd is a small daemon which collects system information periodically and @@@ -287,15 -260,6 +287,15 @@@ open-source server software for the gam Entertainment. %endif +%if %{with_barometer} +%package barometer +Summary: barometer plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +%description barometer +Collects pressure and temperature from digital barometers. +%endif + %if %{with_bind} %package bind Summary: Bind plugin for collectd @@@ -307,16 -271,6 +307,16 @@@ The BIND plugin retrieves this informat via HTTP and submits the values to collectd. %endif +%if %{with_ceph} +%package ceph +Summary: Ceph plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: yajl-devel +%description ceph +Ceph plugin for collectd +%endif + %if %{with_curl} %package curl Summary: Curl plugin for collectd @@@ -361,17 -315,6 +361,17 @@@ The DBI plugin uses libdbi, a database statements on a database and read back the result. %endif +%if %{with_disk} +%package disk +Summary: disk plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +%{?_has_libudev:BuildRequires: libudev-devel} +%description disk +The "disk" plugin collects information about the usage of physical disks and +logical disks (partitions). +%endif + %if %{with_dns} %package dns Summary: DNS plugin for collectd @@@ -449,14 -392,14 +449,14 @@@ This plugin for collectd allows plugin in an embedded JVM. %endif -%if %{with_libvirt} -%package libvirt -Summary: Libvirt plugin for collectd -Group: System Environment/Daemons -Requires: %{name}%{?_isa} = %{version}-%{release} -BuildRequires: libvirt-devel -%description libvirt -This plugin collects information from virtualized guests. +%if %{with_log_logstash} +%package log_logstash +Summary: log_logstash plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: yajl-devel +%description log_logstash +This plugin logs in logstash JSON format %endif %if %{with_lvm} @@@ -565,27 -508,17 +565,27 @@@ BuildRequires: nut-deve This plugin for collectd provides Network UPS Tools support. %endif +%if %{with_openldap} +%package openldap +Summary: Openldap plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: openldap-devel +%description openldap +This plugin reads monitoring information from OpenLDAP's cn=Monitor subtree. +%endif + %if %{with_perl} %package perl Summary: Perl plugin for collectd Group: System Environment/Daemons Requires: %{name}%{?_isa} = %{version}-%{release} Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) -%if 0%{?rhel} >= 6 + %if 0%{?rhel} >= 6 BuildRequires: perl-ExtUtils-Embed -%else + %else BuildRequires: perl -%endif + %endif %description perl The Perl plugin embeds a Perl interpreter into collectd and exposes the application programming interface (API) to Perl-scripts. @@@ -629,11 -562,11 +629,11 @@@ database Summary: Python plugin for collectd Group: System Environment/Daemons Requires: %{name}%{?_isa} = %{version}-%{release} -%if 0%{?rhel} >= 6 + %if 0%{?rhel} >= 6 BuildRequires: python-devel -%else + %else BuildRequires: python26-devel -%endif + %endif %description python The Python plugin embeds a Python interpreter into collectd and exposes the application programming interface (API) to Python-scripts. @@@ -644,10 -577,10 +644,10 @@@ Summary: Redis plugin for collectd Group: System Environment/Daemons Requires: %{name}%{?_isa} = %{version}-%{release} -BuildRequires: credis-devel +BuildRequires: hiredis-devel %description redis The Redis plugin connects to one or more instances of Redis, a key-value store, -and collects usage information using the credis library. +and collects usage information using the hiredis library. %endif %if %{with_rrdcached} @@@ -692,17 -625,6 +692,17 @@@ measurements fed to collectd. This incl thermometers, and much more. %endif +%if %{with_smart} +%package smart +Summary: SMART plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: libatasmart-devel +%description smart +Collect SMART statistics, notably load cycle count, temperature and bad +sectors. +%endif + %if %{with_snmp} %package snmp Summary: SNMP plugin for collectd @@@ -723,16 -645,6 +723,16 @@@ BuildRequires: varnish-libs-deve The Varnish plugin collects information about Varnish, an HTTP accelerator. %endif +%if %{with_virt} +%package virt +Summary: Virt plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: libvirt-devel +%description virt +This plugin collects information from virtualized guests. +%endif + %if %{with_write_http} %package write_http Summary: Write-HTTP plugin for collectd @@@ -744,22 -656,12 +744,22 @@@ The Write-HTTP plugin sends the values using HTTP POST requests. %endif +%if %{with_write_kafka} +%package write_kafka +Summary: Write-kafka plugin for collectd +Group: System Environment/Daemons +Requires: %{name}%{?_isa} = %{version}-%{release} +BuildRequires: rdkafka-devel +%description write_kafka +The write_kafka plugin sends values to kafka, a distributed messaging system. +%endif + %if %{with_write_redis} %package write_redis Summary: Write-Redis plugin for collectd Group: System Environment/Daemons Requires: %{name}%{?_isa} = %{version}-%{release} -BuildRequires: credis-devel +BuildRequires: hiredis-devel %description write_redis The Write Redis plugin stores values in Redis, a “data structures server”. %endif @@@ -816,13 -718,6 +816,13 @@@ Requires: libcollectdclient%{?_isa} = % %description -n libcollectdclient-devel Development files for libcollectdclient +%package -n collectd-utils +Summary: Collectd utilities +Group: System Environment/Daemons +Requires: libcollectdclient%{?_isa} = %{version}-%{release} +Requires: collectd%{?_isa} = %{version}-%{release} +%description -n collectd-utils +Collectd utilities %prep %setup -q @@@ -870,12 -765,6 +870,12 @@@ %define _with_ascent --disable-ascent %endif +%if %{with_barometer} +%define _with_barometer --enable-barometer +%else +%define _with_barometer --disable-barometer +%endif + %if %{with_battery} %define _with_battery --enable-battery %else @@@ -924,12 -813,6 +924,12 @@@ %define _with_csv --disable-csv %endif +%if %{with_ceph} +%define _with_ceph --enable-ceph +%else +%define _with_ceph --disable-ceph +%endif + %if %{with_curl} %define _with_curl --enable-curl %else @@@ -972,12 -855,6 +972,12 @@@ %define _with_dns --disable-dns %endif +%if %{with_drbd} +%define _with_drbd --enable-drbd +%else +%define _with_drbd --disable-drbd +%endif + %if %{with_email} %define _with_email --enable-email %else @@@ -1002,12 -879,6 +1002,12 @@@ %define _with_exec --disable-exec %endif +%if %{with_fhcount} +%define _with_fhcount --enable-fhcount +%else +%define _with_fhcount --disable-fhcount +%endif + %if %{with_filecount} %define _with_filecount --enable-filecount %else @@@ -1038,12 -909,6 +1038,12 @@@ %define _with_interface --disable-interface %endif +%if %{with_ipc} +%define _with_ipc --enable-ipc +%else +%define _with_ipc --disable-ipc +%endif + %if %{with_ipmi} %define _with_ipmi --enable-ipmi %else @@@ -1074,10 -939,10 +1074,10 @@@ %define _with_java --disable-java %endif -%if %{with_libvirt} -%define _with_libvirt --enable-libvirt +%if %{with_virt} +%define _with_virt --enable-virt %else -%define _with_libvirt --disable-libvirt +%define _with_virt --disable-virt %endif %if %{with_load} @@@ -1092,12 -957,6 +1092,12 @@@ %define _with_logfile --disable-logfile %endif +%if %{with_log_logstash} +%define _with_log_logstash --enable-log_logstash +%else +%define _with_log_logstash --disable-log_logstash +%endif + %if %{with_lpar} %define _with_lpar --enable-lpar %else @@@ -1242,12 -1101,6 +1242,12 @@@ %define _with_onewire --disable-onewire %endif +%if %{with_openldap} +%define _with_openldap --enable-openldap +%else +%define _with_openldap --disable-openldap +%endif + %if %{with_openvpn} %define _with_openvpn --enable-openvpn %else @@@ -1309,11 -1162,11 +1309,11 @@@ %endif %if %{with_python} -%if 0%{?rhel} >= 6 + %if 0%{?rhel} >= 6 %define _with_python --enable-python -%else + %else %define _with_python --enable-python --with-python=%{_bindir}/python2.6 -%endif + %endif %else %define _with_python --disable-python %endif @@@ -1360,12 -1213,6 +1360,12 @@@ %define _with_sigrok --disable-sigrok %endif +%if %{with_smart} +%define _with_smart --enable-smart +%else +%define _with_smart --disable-smart +%endif + %if %{with_snmp} %define _with_snmp --enable-snmp %else @@@ -1450,12 -1297,6 +1450,12 @@@ %define _with_tokyotyrant --disable-tokyotyrant %endif +%if %{with_turbostat} +%define _with_turbostat --enable-turbostat +%else +%define _with_turbostat --disable-turbostat +%endif + %if %{with_unixsock} %define _with_unixsock --enable-unixsock %else @@@ -1516,18 -1357,6 +1516,18 @@@ %define _with_write_http --disable-write_http %endif +%if %{with_write_kafka} +%define _with_write_kafka --enable-write_kafka +%else +%define _with_write_kafka --disable-write_kafka +%endif + +%if %{with_write_log} +%define _with_write_log --enable-write_log +%else +%define _with_write_log --disable-write_log +%endif + %if %{with_write_mongodb} %define _with_write_mongodb --enable-write_mongodb %else @@@ -1546,18 -1375,6 +1546,18 @@@ %define _with_write_riemann --disable-write_riemann %endif +%if %{with_write_sensu} +%define _with_write_sensu --enable-write_sensu +%else +%define _with_write_sensu --disable-write_sensu +%endif + +%if %{with_write_tsdb} +%define _with_write_tsdb --enable-write_tsdb +%else +%define _with_write_tsdb --disable-write_tsdb +%endif + %if %{with_xmms} %define _with_xmms --enable-xmms %else @@@ -1570,12 -1387,6 +1570,12 @@@ %define _with_zfs_arc --disable-zfs_arc %endif +%if %{with_zookeeper} +%define _with_zookeeper --enable-zookeeper +%else +%define _with_zookeeper --disable-zookeeper +%endif + %configure CFLAGS="%{optflags} -DLT_LAZY_OR_NOW=\"RTLD_LAZY|RTLD_GLOBAL\"" \ --disable-static \ --without-included-ltdl \ @@@ -1597,10 -1408,8 +1597,10 @@@ %{?_with_apple_sensors} \ %{?_with_aquaero} \ %{?_with_ascent} \ + %{?_with_barometer} \ %{?_with_battery} \ %{?_with_bind} \ + %{?_with_ceph} \ %{?_with_cgroups} \ %{?_with_conntrack} \ %{?_with_contextswitch} \ @@@ -1614,24 -1423,20 +1614,24 @@@ %{?_with_df} \ %{?_with_disk} \ %{?_with_dns} \ + %{?_with_drbd} \ %{?_with_email} \ %{?_with_entropy} \ %{?_with_ethstat} \ %{?_with_exec} \ + %{?_with_fhcount} \ %{?_with_filecount} \ %{?_with_fscache} \ %{?_with_gmond} \ %{?_with_hddtemp} \ %{?_with_interface} \ + %{?_with_ipc} \ %{?_with_ipmi} \ %{?_with_iptables} \ %{?_with_ipvs} \ %{?_with_java} \ - %{?_with_libvirt} \ + %{?_with_virt} \ + %{?_with_log_logstash} \ %{?_with_lpar} \ %{?_with_lvm} \ %{?_with_memcachec} \ @@@ -1646,7 -1451,6 +1646,7 @@@ %{?_with_notify_email} \ %{?_with_nut} \ %{?_with_onewire} \ + %{?_with_openldap} \ %{?_with_oracle} \ %{?_with_perl} \ %{?_with_pf} \ @@@ -1660,18 -1464,15 +1660,18 @@@ %{?_with_rrdtool} \ %{?_with_sensors} \ %{?_with_sigrok} \ + %{?_with_smart} \ %{?_with_snmp} \ %{?_with_tape} \ %{?_with_tokyotyrant} \ %{?_with_varnish} \ %{?_with_write_http} \ + %{?_with_write_kafka} \ %{?_with_write_mongodb} \ %{?_with_write_redis} \ %{?_with_xmms} \ %{?_with_zfs_arc} \ + %{?_with_zookeeper} \ %{?_with_irq} \ %{?_with_load} \ %{?_with_logfile} \ @@@ -1701,7 -1502,6 +1701,7 @@@ %{?_with_ted} \ %{?_with_thermal} \ %{?_with_threshold} \ + %{?_with_turbostat} \ %{?_with_unixsock} \ %{?_with_uptime} \ %{?_with_users} \ @@@ -1711,10 -1511,7 +1711,10 @@@ %{?_with_wireless}\ %{?_with_write_graphite} \ %{?_with_write_http} \ - %{?_with_write_riemann} + %{?_with_write_log} \ + %{?_with_write_riemann} \ + %{?_with_write_sensu} \ + %{?_with_write_tsdb} %{__make} %{?_smp_mflags} @@@ -1723,11 -1520,7 +1723,11 @@@ %install rm -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} -%{__install} -Dp -m 0755 contrib/redhat/init.d-collectd %{buildroot}%{_initrddir}/collectd +%if 0%{?el7:1} +%{__install} -Dp -m0644 contrib/systemd.collectd.service %{buildroot}%{_unitdir}/collectd.service +%else +%{__install} -Dp -m0755 contrib/redhat/init.d-collectd %{buildroot}%{_initrddir}/collectd +%endif %{__install} -Dp -m0644 src/collectd.conf %{buildroot}%{_sysconfdir}/collectd.conf %{__install} -d %{buildroot}%{_sharedstatedir}/collectd/ %{__install} -d %{buildroot}%{_sysconfdir}/collectd.d/ @@@ -1779,44 -1572,19 +1779,44 @@@ rm -f %{buildroot}%{_mandir}/man5/colle %clean rm -rf %{buildroot} +%pre +%if 0%{?el7:1} +# stop sysv-based instance before upgrading to systemd +if [ $1 -eq 2 ] && [ -f /var/lock/subsys/collectd ]; then + SYSTEMCTL_SKIP_REDIRECT=1 %{_initddir}/collectd stop >/dev/null 2>&1 || : +fi +%endif + %post -/sbin/chkconfig --add collectd +%if 0%{?el7:1} +if [ $1 -eq 2 ]; then + /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || : +fi +%systemd_post collectd.service +%else +/sbin/chkconfig --add collectd || : +%endif %preun +%if 0%{?el7:1} +%systemd_preun collectd.service +%else +# stop collectd only when uninstalling if [ $1 -eq 0 ]; then - /sbin/service collectd stop &>/dev/null - /sbin/chkconfig --del collectd + /sbin/service collectd stop >/dev/null 2>&1 || : + /sbin/chkconfig --del collectd || : fi +%endif %postun -if [ $1 -ge 1 ]; then - /sbin/service collectd condrestart &>/dev/null || : +%if 0%{?el7:1} +%systemd_postun_with_restart collectd.service +%else +# restart collectd only when upgrading +if [ $1 -eq 1 ]; then + /sbin/service collectd condrestart >/dev/null 2>&1 || : fi +%endif %post -n libcollectdclient -p /sbin/ldconfig %postun -n libcollectdclient -p /sbin/ldconfig @@@ -1825,17 -1593,19 +1825,17 @@@ %files %doc AUTHORS COPYING ChangeLog README %config(noreplace) %{_sysconfdir}/collectd.conf +%if 0%{?el7:1} +%{_unitdir}/collectd.service +%else %{_initrddir}/collectd +%endif %{_sbindir}/collectd -%{_bindir}/collectd-nagios -%{_bindir}/collectd-tg -%{_bindir}/collectdctl %{_sbindir}/collectdmon %{_datadir}/collectd/types.db %{_sharedstatedir}/collectd -%{_mandir}/man1/collectd-nagios.1* %{_mandir}/man1/collectd.1* -%{_mandir}/man1/collectdctl.1* %{_mandir}/man1/collectdmon.1* -%{_mandir}/man1/collectd-tg.1* %{_mandir}/man5/collectd-email.5* %{_mandir}/man5/collectd-exec.5* %{_mandir}/man5/collectd-threshold.5* @@@ -1885,8 -1655,8 +1885,8 @@@ %if %{with_df} %{_libdir}/%{name}/df.so %endif -%if %{with_disk} -%{_libdir}/%{name}/disk.so +%if %{with_drbd} +%{_libdir}/%{name}/drbd.so %endif %if %{with_ethstat} %{_libdir}/%{name}/ethstat.so @@@ -1897,9 -1667,6 +1897,9 @@@ %if %{with_exec} %{_libdir}/%{name}/exec.so %endif +%if %{with_fhcount} +%{_libdir}/%{name}/fhcount.so +%endif %if %{with_filecount} %{_libdir}/%{name}/filecount.so %endif @@@ -1909,9 -1676,6 +1909,9 @@@ %if %{with_interface} %{_libdir}/%{name}/interface.so %endif +%if %{with_ipc} +%{_libdir}/%{name}/ipc.so +%endif %if %{with_ipvs} %{_libdir}/%{name}/ipvs.so %endif @@@ -2005,9 -1769,6 +2005,9 @@@ %if %{with_threshold} %{_libdir}/%{name}/threshold.so %endif +%if %{with_turbostat} +%{_libdir}/%{name}/turbostat.so +%endif %if %{with_unixsock} %{_libdir}/%{name}/unixsock.so %endif @@@ -2032,21 -1793,7 +2032,21 @@@ %if %{with_write_graphite} %{_libdir}/%{name}/write_graphite.so %endif - +%if %{with_write_log} +%{_libdir}/%{name}/write_log.so +%endif +%if %{with_write_sensu} +%{_libdir}/%{name}/write_sensu.so +%endif +%if %{with_write_tsdb} +%{_libdir}/%{name}/write_tsdb.so +%endif +%if %{with_zfs_arc} +%{_libdir}/%{name}/zfs_arc.so +%endif +%if %{with_zookeeper} +%{_libdir}/%{name}/zookeeper.so +%endif %files -n libcollectdclient-devel %{_includedir}/collectd/client.h @@@ -2054,19 -1801,11 +2054,19 @@@ %{_includedir}/collectd/network_buffer.h %{_includedir}/collectd/lcc_features.h %{_libdir}/pkgconfig/libcollectdclient.pc + %{_libdir}/libcollectdclient.so %files -n libcollectdclient - %{_libdir}/libcollectdclient.so %{_libdir}/libcollectdclient.so.* +%files -n collectd-utils +%{_bindir}/collectd-nagios +%{_bindir}/collectd-tg +%{_bindir}/collectdctl +%{_mandir}/man1/collectdctl.1* +%{_mandir}/man1/collectd-nagios.1* +%{_mandir}/man1/collectd-tg.1* + %if %{with_amqp} %files amqp %{_libdir}/%{name}/amqp.so @@@ -2087,21 -1826,11 +2087,21 @@@ %{_libdir}/%{name}/ascent.so %endif +%if %{with_barometer} +%files barometer +%{_libdir}/%{name}/barometer.so +%endif + %if %{with_bind} %files bind %{_libdir}/%{name}/bind.so %endif +%if %{with_ceph} +%files ceph +%{_libdir}/%{name}/ceph.so +%endif + %if %{with_curl} %files curl %{_libdir}/%{name}/curl.so @@@ -2117,11 -1846,6 +2117,11 @@@ %{_libdir}/%{name}/curl_xml.so %endif +%if %{with_disk} +%files disk +%{_libdir}/%{name}/disk.so +%endif + %if %{with_dns} %files dns %{_libdir}/%{name}/dns.so @@@ -2165,14 -1889,9 +2165,14 @@@ %{_mandir}/man5/collectd-java.5* %endif -%if %{with_libvirt} -%files libvirt -%{_libdir}/%{name}/libvirt.so +%if %{with_virt} +%files virt +%{_libdir}/%{name}/virt.so +%endif + +%if %{with_log_logstash} +%files log_logstash +%{_libdir}/%{name}/log_logstash.so %endif %if %{with_lvm} @@@ -2225,11 -1944,6 +2225,11 @@@ %{_libdir}/%{name}/nut.so %endif +%if %{with_openldap} +%files openldap +%{_libdir}/%{name}/openldap.so +%endif + %if %{with_perl} %files perl %{perl_vendorlib}/Collectd.pm @@@ -2286,11 -2000,6 +2286,11 @@@ %{_libdir}/%{name}/sigrok.so %endif +%if %{with_smart} +%files smart +%{_libdir}/%{name}/smart.so +%endif + %if %{with_snmp} %files snmp %{_mandir}/man5/collectd-snmp.5* @@@ -2307,11 -2016,6 +2307,11 @@@ %{_libdir}/%{name}/write_http.so %endif +%if %{with_write_kafka} +%files write_kafka +%{_libdir}/%{name}/write_kafka.so +%endif + %if %{with_write_redis} %files write_redis %{_libdir}/%{name}/write_redis.so @@@ -2334,18 -2038,6 +2334,18 @@@ %doc contrib/ %changelog +* Wed May 27 2015 Marc Fournier 5.5.0-1 +- New upstream version +- New plugins enabled by default: ceph, drbd, log_logstash, write_tsdb, smart, + openldap, redis, write_redis, zookeeper, write_log, write_sensu, ipc, + turbostat, fhcount +- New plugins disabled by default: barometer, write_kafka +- Enable zfs_arc, now supported on Linux +- Install disk plugin in a dedicated package, as it depends on libudev +- use systemd on EL7, sysvinit on EL6 & EL5 +- Install collectdctl, collectd-tg and collectd-nagios in collectd-utils.rpm +- Add build-dependency on libcap-devel + * Mon Aug 19 2013 Marc Fournier 5.4.0-1 - New upstream version - Build netlink plugin by default @@@ -2398,7 -2090,7 +2398,7 @@@ * Sat Nov 17 2012 Ruben Kerkhof 5.1.0-2 - Move perl stuff to perl_vendorlib - Replace hardcoded paths with macros -- Remove unneccesary Requires +- Remove unnecessary Requires - Removed .a and .la files - Some other small cleanups @@@ -2406,7 -2098,7 +2406,7 @@@ - New upstream version - Changes to support 5.1.0 - Enabled all buildable plugins based on libraries available on EL6 + EPEL -- All plugins requiring external libraries are now shipped in seperate +- All plugins requiring external libraries are now shipped in separate packages. - No longer treat Java plugin as an exception, correctly set $JAVA_HOME during the build process + ensure build deps are installed. diff --combined src/collectd.conf.pod index 0eabec7f,1d7a3c18..56bab99a --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@@ -9,17 -9,17 +9,17 @@@ collectd.conf - Configuration for the s BaseDir "/var/lib/collectd" PIDFile "/run/collectd.pid" Interval 10.0 - + LoadPlugin cpu LoadPlugin load - + Interval 3600 ValuesPercentage true - + LoadPlugin ping Host "example.org" @@@ -145,33 -145,6 +145,33 @@@ BPluginE...E> block act B statement. B statements are still required for plugins that don't provide any configuration, e.g. the I. +=item B B|B + +When set to B, various statistics about the I daemon will be +collected, with "collectd" as the I. Defaults to B. + +The following metrics are reported: + +=over 4 + +=item C + +The number of metrics currently in the write queue. You can limit the queue +length with the B and B options. + +=item C + +The number of metrics dropped due to a queue length limitation. +If this value is non-zero, your system can't handle all incoming metrics and +protects itself against overload by dropping metrics. + +=item C + +The number of elements in the metric cache (the cache you can interact with +using L). + +=back + =item B I [I] If I points to a file, includes that file. If I points to a @@@ -244,14 -217,6 +244,14 @@@ B You should set this once an I or know some serious RRDtool magic! (Assuming you're using the I or I plugin.) +=item B I + +Read plugin doubles interval between queries after each failed attempt +to get data. + +This options limits the maximum value of the interval. The default value is +B<86400>. + =item B I Consider a value list "missing" when no update has been read or received for @@@ -302,11 -267,8 +302,11 @@@ If B is set to non unset, the latter will default to half of B. If you do not want to randomly drop values when the queue size is between -I and I, set If B and -B to same value. +I and I, set B and B +to the same value. + +Enabling the B option is of great help to figure out the +values to set B and B to. =item B I @@@ -384,10 -346,10 +384,10 @@@ The full example configuration looks li Plugin "cpu" Type "cpu" - + GroupBy "Host" GroupBy "TypeInstance" - + CalculateSum true CalculateAverage true @@@ -463,13 -425,13 +463,13 @@@ The following example calculates the av Plugin "cpu" PluginInstance "/[0,2,4,6,8]$/" Type "cpu" - + SetPlugin "cpu" SetPluginInstance "even-%{aggregation}" - + GroupBy "Host" GroupBy "TypeInstance" - + CalculateAverage true @@@ -533,7 -495,6 +533,7 @@@ possibly filtering or messages # ExchangeType "fanout" # RoutingKey "collectd" # Persistent false + # ConnectionRetryDelay 0 # Format "command" # StoreRates false # GraphitePrefix "collectd." @@@ -552,10 -513,7 +552,10 @@@ Exchange "amq.fanout" # ExchangeType "fanout" # Queue "queue_name" + # QueueDurable false + # QueueAutoDelete true # RoutingKey "collectd.#" + # ConnectionRetryDelay 0 @@@ -607,23 -565,9 +607,23 @@@ be bound to this exchange =item B I (Subscribe only) -Configures the I name to subscribe to. If no queue name was configures +Configures the I name to subscribe to. If no queue name was configured explicitly, a unique queue name will be created by the broker. +=item B B|B (Subscribe only) + +Defines if the I subscribed to is durable (saved to persistent storage) +or transient (will disappear if the AMQP broker is restarted). Defaults to +"false". + +This option should be used in conjunction with the I option on the +publish side. + +=item B B|B (Subscribe only) + +Defines if the I subscribed to will be deleted once the last consumer +unsubscribes. Defaults to "true". + =item B I In I blocks, this configures the routing key to set on all outgoing @@@ -646,13 -590,6 +646,13 @@@ mode will be used, i.e. delivery is gua default), the I delivery mode will be used, i.e. messages may be lost due to high load, overflowing queues or similar issues. +=item B I + +When the connection to the AMQP broker is lost, defines the time in seconds to +wait before attempting to reconnect. Defaults to 0, which implies collectd will +attempt to reconnect at each read interval (in Subscribe mode) or each time +values are ready for submission (in Publish mode). + =item B B|B|B (Publish only) Selects the format in which messages are sent to the broker. If set to @@@ -789,18 -726,6 +789,18 @@@ File that holds one or more SSL certifi possibly need this option. What CA certificates come bundled with C and are checked by default depends on the distribution you use. +=item B I + +Specifies which ciphers to use in the connection. The list of ciphers +must specify valid ciphers. See +L for details. + +=item B I + +The B option sets the overall timeout for HTTP requests to B, in +milliseconds. By default, the configured B is used to set the +timeout. + =back =head2 Plugin C @@@ -889,204 -814,6 +889,204 @@@ File that holds one or more SSL certifi possibly need this option. What CA certificates come bundled with C and are checked by default depends on the distribution you use. +=item B I + +The B option sets the overall timeout for HTTP requests to B, in +milliseconds. By default, the configured B is used to set the +timeout. + +=back + +=head2 Plugin C + +This plugin reads absolute air pressure using digital barometer sensor on a I2C +bus. Supported sensors are: + +=over 5 + +=item I from Freescale, +see L. + + +=item I from Freescale +see L. + + +=item I from Bosch Sensortec + +=back + +The sensor type - one of the above - is detected automatically by the plugin +and indicated in the plugin_instance (you will see subdirectory +"barometer-mpl115" or "barometer-mpl3115", or "barometer-bmp085"). The order of +detection is BMP085 -> MPL3115 -> MPL115A2, the first one found will be used +(only one sensor can be used by the plugin). + +The plugin provides absolute barometric pressure, air pressure reduced to sea +level (several possible approximations) and as an auxiliary value also internal +sensor temperature. It uses (expects/provides) typical metric units - pressure +in [hPa], temperature in [C], altitude in [m]. + +It was developed and tested under Linux only. The only platform dependency is +the standard Linux i2c-dev interface (the particular bus driver has to +support the SM Bus command subset). + +The reduction or normalization to mean sea level pressure requires (depending +on selected method/approximation) also altitude and reference to temperature +sensor(s). When multiple temperature sensors are configured the minumum of +their values is always used (expecting that the warmer ones are affected by +e.g. direct sun light at that moment). + +Synopsis: + + + Device "/dev/i2c-0"; + Oversampling 512 + PressureOffset 0.0 + TemperatureOffset 0.0 + Normalization 2 + Altitude 238.0 + TemperatureSensor "myserver/onewire-F10FCA000800/temperature" + + +=over 4 + +=item B I + +The only mandatory configuration parameter. + +Device name of the I2C bus to which the sensor is connected. Note that +typically you need to have loaded the i2c-dev module. +Using i2c-tools you can check/list i2c buses available on your system by: + + i2cdetect -l + +Then you can scan for devices on given bus. E.g. to scan the whole bus 0 use: + + i2cdetect -y -a 0 + +This way you should be able to verify that the pressure sensor (either type) is +connected and detected on address 0x60. + +=item B I + +Optional parameter controlling the oversampling/accuracy. Default value +is 1 providing fastest and least accurate reading. + +For I this is the size of the averaging window. To filter out sensor +noise a simple averaging using floating window of this configurable size is +used. The plugin will use average of the last C measurements (value of 1 +means no averaging). Minimal size is 1, maximal 1024. + +For I this is the oversampling value. The actual oversampling is +performed by the sensor and the higher value the higher accuracy and longer +conversion time (although nothing to worry about in the collectd context). +Supported values are: 1, 2, 4, 8, 16, 32, 64 and 128. Any other value is +adjusted by the plugin to the closest supported one. + +For I this is the oversampling value. The actual oversampling is +performed by the sensor and the higher value the higher accuracy and longer +conversion time (although nothing to worry about in the collectd context). +Supported values are: 1, 2, 4, 8. Any other value is adjusted by the plugin to +the closest supported one. + +=item B I + +Optional parameter for MPL3115 only. + +You can further calibrate the sensor by supplying pressure and/or temperature +offsets. This is added to the measured/caclulated value (i.e. if the measured +value is too high then use negative offset). +In hPa, default is 0.0. + +=item B I + +Optional parameter for MPL3115 only. + +You can further calibrate the sensor by supplying pressure and/or temperature +offsets. This is added to the measured/caclulated value (i.e. if the measured +value is too high then use negative offset). +In C, default is 0.0. + +=item B I + +Optional parameter, default value is 0. + +Normalization method - what approximation/model is used to compute the mean sea +level pressure from the air absolute pressure. + +Supported values of the C (integer between from 0 to 2) are: + +=over 5 + +=item B<0> - no conversion, absolute pressure is simply copied over. For this method you + do not need to configure C or C. + +=item B<1> - international formula for conversion , +See +L. +For this method you have to configure C but do not need +C (uses fixed global temperature average instead). + +=item B<2> - formula as recommended by the Deutsche Wetterdienst (German +Meteorological Service). +See L +For this method you have to configure both C and +C. + +=back + + +=item B I + +The altitude (in meters) of the location where you meassure the pressure. + +=item B I + +Temperature sensor(s) which should be used as a reference when normalizing the +pressure using C method 2. +When specified more sensors a minumum is found and used each time. The +temperature reading directly from this pressure sensor/plugin is typically not +suitable as the pressure sensor will be probably inside while we want outside +temperature. The collectd reference name is something like +/-/- +( is usually omitted when there is just single value type). Or +you can figure it out from the path of the output data files. + +=back + +=head2 Plugin C + +The I reports the remaining capacity, power and voltage of +laptop batteries. + +=over 4 + +=item B B|B + +When enabled, remaining capacity is reported as a percentage, e.g. "42% +capacity remaining". Otherwise the capacity is stored as reported by the +battery, most likely in "Wh". This option does not work with all input methods, +in particular when only C is available on an old Linux system. +Defaults to B. + +=item B B|B + +Typical laptop batteries degrade over time, meaning the capacity decreases with +recharge cycles. The maximum charge of the previous charge cycle is tracked as +"last full capacity" and used to determine that a battery is "fully charged". + +When this option is set to B, the default, the I will +only report the remaining capacity. If the B option is +enabled, the relative remaining capacity is calculated as the ratio of the +"remaining capacity" and the "last full capacity". This is what most tools, +such as the status bar of desktop environments, also do. + +When set to B, the battery plugin will report three values: B +(remaining capacity), B (difference between "last full capacity" +and "remaining capacity") and B (difference between "design capacity" +and "last full capacity"). + =back =head2 Plugin C @@@ -1115,17 -842,17 +1115,17 @@@ Synopsis ParseTime false OpCodes true QTypes true - + ServerStats true ZoneMaintStats true ResolverStats false MemoryStats true - + QTypes true ResolverStats true CacheRRSets true - + Zone "127.in-addr.arpa/IN" @@@ -1192,12 -919,6 +1192,12 @@@ Collect global memory statistics Default: Enabled. +=item B I + +The B option sets the overall timeout for HTTP requests to B, in +milliseconds. By default, the configured B is used to set the +timeout. + =item B I Collect statistics about a specific I<"view">. BIND can behave different, @@@ -1249,74 -970,6 +1249,74 @@@ By default no detailed zone informatio =back +=head2 Plugin C + +The ceph plugin collects values from JSON data to be parsed by B +(L) retrieved from ceph daemon admin sockets. + +A separate B block must be configured for each ceph daemon to be +monitored. The following example will read daemon statistics from four +separate ceph daemons running on the same device (two OSDs, one MON, one MDS) : + + + LongRunAvgLatency false + ConvertSpecialMetricTypes true + + SocketPath "/var/run/ceph/ceph-osd.0.asok" + + + SocketPath "/var/run/ceph/ceph-osd.1.asok" + + + SocketPath "/var/run/ceph/ceph-mon.ceph1.asok" + + + SocketPath "/var/run/ceph/ceph-mds.ceph1.asok" + + + +The ceph plugin accepts the following configuration options: + +=over 4 + +=item B B|B + +If enabled, latency values(sum,count pairs) are calculated as the long run +average - average since the ceph daemon was started = (sum / count). +When disabled, latency values are calculated as the average since the last +collection = (sum_now - sum_last) / (count_now - count_last). + +Default: Disabled + +=item B B|B + +If enabled, special metrics (metrics that differ in type from similar counters) +are converted to the type of those similar counters. This currently only +applies to filestore.journal_wr_bytes which is a counter for OSD daemons. The +ceph schema reports this metric type as a sum,count pair while similar counters +are treated as derive types. When converted, the sum is used as the counter +value and is treated as a derive type. +When disabled, all metrics are treated as the types received from the ceph schema. + +Default: Enabled + +=back + +Each B block must have a string argument for the plugin instance name. +A B is also required for each B block: + +=over 4 + +=item B I + +Name to be used as the instance name for this daemon. + +=item B I + +Specifies the path to the UNIX admin socket of the ceph daemon. + +=back + =head2 Plugin C This plugin collects the CPU user/system time for each I by reading the @@@ -1340,68 -993,6 +1340,68 @@@ at all, B cgroups are selected =back +=head2 Plugin C + +This plugin collects IP conntrack statistics. + +=over 4 + +=item B + +Assume the B and B files to be found in +F instead of F. + +=back + +=head2 Plugin C + +The I collects CPU usage metrics. By default, CPU usage is reported +as Jiffies, using the C type. Two aggregations are available: + +=over 4 + +=item + +Sum, per-state, over all CPUs installed in the system; and + +=item + +Sum, per-CPU, over all non-idle states of a CPU, creating an "active" state. + +=back + +The two aggregations can be combined, leading to I only emitting a +single "active" metric for the entire system. As soon as one of these +aggregations (or both) is enabled, the I will report a percentage, +rather than Jiffies. In addition, you can request individual, per-state, +per-CPU metrics to be reported as percentage. + +The following configuration options are available: + +=over 4 + +=item B B|B + +When set to B, the default, reports per-state metrics, e.g. "system", +"user" and "idle". +When set to B, aggregates (sums) all I states into one +"active" metric. + +=item B B|B + +When set to B, the default, reports per-CPU (per-core) metrics. +When set to B, instead of reporting metrics for individual CPUs, only a +global sum of CPU states is emitted. + +=item B B|B + +This option is only considered when both, B and B +are set to B. In this case, by default, metrics will be reported as +Jiffies. By setting this option to B, you can request percentage values +in the un-aggregated (per-CPU, per-state) mode as well. + +=back + =head2 Plugin C This plugin doesn't have any options. It reads @@@ -1444,16 -1035,6 +1444,16 @@@ finance page and dispatch the value to URL "http://finance.google.com/finance?q=NYSE%3AAMD" User "foo" Password "bar" + Digest false + VerifyPeer true + VerifyHost true + CACert "/path/to/ca.crt" + Header "X-Custom-Header: foobar" + Post "foo=bar" + + MeasureResponseTime false + MeasureResponseCode false + Regex "]*> *([0-9]*\\.[0-9]+) *" DSType "GaugeAverage" @@@ -1485,10 -1066,6 +1485,10 @@@ Username to use if authorization is req Password to use if authorization is required to read the page. +=item B B|B + +Enable HTTP digest authentication. + =item B B|B Enable or disable peer SSL certificate verification. See @@@ -1526,35 -1103,13 +1526,35 @@@ C) Measure response time for the request. If this setting is enabled, B blocks (see below) are optional. Disabled by default. +Beware that requests will get aborted if they take too long to complete. Adjust +B accordingly if you expect B to report such slow +requests. + +=item B B|B + +Measure response code for the request. If this setting is enabled, B +blocks (see below) are optional. Disabled by default. + =item BMatchE> One or more B blocks that define how to match information in the data returned by C. The C plugin uses the same infrastructure that's used by the C plugin, so please see the documentation of the C -plugin below on how matches are defined. If the B option -is set to B, B blocks are optional. +plugin below on how matches are defined. If the B or +B options are set to B, B blocks are +optional. + +=item B I + +The B option sets the overall timeout for HTTP requests to B, in +milliseconds. By default, the configured B is used to set the +timeout. Prior to version 5.5.0, there was no timeout and requests could hang +indefinitely. This legacy behaviour can be achieved by setting the value of +B to 0. + +If B is 0 or bigger than the B, keep in mind that each slow +network connection will stall one read thread. Adjust the B global +setting accordingly to prevent this from blocking other plugins. =back @@@ -1621,29 -1176,14 +1621,29 @@@ The following options are valid within Sets the plugin instance to I. +=item B I + +Sets the interval (in seconds) in which the values will be collected from this +URL. By default the global B setting will be used. + =item B I + =item B I + +=item B B|B + =item B B|B + =item B B|B + =item B I + =item B
I
+ =item B I +=item B I + These options behave exactly equivalent to the appropriate options of the I plugin. Please see there for a detailed description. @@@ -1679,8 -1219,6 +1679,8 @@@ The B uses B VerifyPeer true VerifyHost true CACert "/path/to/ca.crt" + Header "X-Custom-Header: foobar" + Post "foo=bar" Type "magic_level" @@@ -1732,8 -1270,6 +1732,8 @@@ Examples =item B I +=item B B|B + =item B B|B =item B B|B @@@ -1744,8 -1280,6 +1744,8 @@@ =item B I +=item B I + These options behave exactly equivalent to the appropriate options of the I. Please see there for a detailed description. @@@ -1975,16 -1509,6 +1975,16 @@@ it should be able to handle integer an There must be at least one B option inside each B block. +=item B [I I ...] + +Names the columns whose content is used as metadata for the data sets +that are dispatched to the daemon. + +The actual data type in the columns is not that important. The plugin will +automatically cast the values to the right type if it know how to do that. So +it should be able to handle integer an floating point types, as well as strings +(if they include a number at the beginning). + =back =head3 B blocks @@@ -2099,17 -1623,17 +2099,17 @@@ transfer agents and web caches =item B B|B -Enables or disables reporting of free, used and used disk space in 1K-blocks. -Defaults to true. +Enables or disables reporting of free and used disk space in 1K-blocks. +Defaults to B. -=item B B|B +=item B B|B -Enables or disables reporting of free, used and used disk space in percentage. -Defaults to false. +Enables or disables reporting of free and used disk space in percentage. +Defaults to B. -This is useful for deploying collectd on the cloud, where machines with -different disk size may exist. Then it is more practical to configure thresholds -based on relative disk size. +This is useful for deploying I on the cloud, where machines with +different disk size may exist. Then it is more practical to configure +thresholds based on relative disk size. =back @@@ -2145,20 -1669,6 +2145,20 @@@ collected. If at least one B opti set to B, B matching disks will be collected. If B is set to B, all disks are collected B the ones matched. +=item B B|B + +Whether to use the device's "BSD Name", on MacEOSEX, instead of the +default major/minor numbers. Requires collectd to be built with Apple's +IOKitLib support. + +=item B I + +Attempt to override disk instance name with the value of a specified udev +attribute when built with B. If the attribute is not defined for the +given device, the default name is used. Example: + + UdevNameAttr "DM_NAME" + =back =head2 Plugin C @@@ -2279,27 -1789,6 +2279,27 @@@ expected from them. This is documented =back +=head2 Plugin C + +The C plugin provides statistics about used, unused and total number of +file handles on Linux. + +The I provides the following configuration options: + +=over 4 + +=item B B|B + +Enables or disables reporting of file handles usage in absolute numbers, +e.g. file handles used. Defaults to B. + +=item B B|B + +Enables or disables reporting of file handles usage in percentages, e.g. +percent of file handles used. Defaults to B. + +=back + =head2 Plugin C The C plugin counts the number of files in a certain directory (and @@@ -2504,7 -1993,7 +2504,7 @@@ a more detailed description see B I|I - If no configuration if given, the B-plugin will collect data from + If no configuration if given, the B-plugin will collect data from all interfaces. This may not be practical, especially for loopback- and similar interfaces. Thus, you can use the B-option to pick the interfaces you're interested in. Sometimes, however, it's easier/preferred @@@ -2664,63 -2153,94 +2664,63 @@@ independent from the I argum =back -=head2 Plugin C +=head2 Plugin C -This plugin allows CPU, disk and network load to be collected for virtualized -guests on the machine. This means that these characteristics can be collected -for guest systems without installing any software on them - collectd only runs -on the hosting system. The statistics are collected through libvirt -(L). +The I collects the system load. These numbers give a rough overview +over the utilization of a machine. The system load is defined as the number of +runnable tasks in the run-queue and is provided by many operating systems as a +one, five or fifteen minute average. -Only I is required. +The following configuration options are available: =over 4 -=item B I - -Connect to the hypervisor given by I. For example if using Xen use: +=item B B|B - Connection "xen:///" +When enabled, system load divided by number of available CPU cores is reported +for intervals 1 min, 5 min and 15 min. Defaults to false. -Details which URIs allowed are given at L. +=back -=item B I -Refresh the list of domains and devices every I. The default is 60 -seconds. Setting this to be the same or smaller than the I will cause -the list of domains and devices to be refreshed on every iteration. +=head2 Plugin C -Refreshing the devices in particular is quite a costly operation, so if your -virtualization setup is static you might consider increasing this. If this -option is set to 0, refreshing is disabled completely. +=over 4 -=item B I +=item B B -=item B I +Sets the log-level. If, for example, set to B, then all events with +severity B, B, or B will be written to the logfile. -=item B I +Please note that B is only available if collectd has been compiled with +debugging support. -=item B I|I +=item B I -Select which domains and devices are collected. - -If I is not given or I then only the listed domains and -disk/network devices are collected. - -If I is I then the test is reversed and the listed -domains and disk/network devices are ignored, while the rest are collected. - -The domain name and device names may use a regular expression, if the name is -surrounded by I and collectd was compiled with support for regexps. - -The default is to collect statistics for all domains and all their devices. - -Example: - - BlockDevice "/:hdb/" - IgnoreSelected "true" - -Ignore all I devices on any domain, but other block devices (eg. I) -will be collected. - -=item B B - -When the libvirt plugin logs data, it sets the hostname of the collected data -according to this setting. The default is to use the guest name as provided by -the hypervisor, which is equal to setting B. +Sets the file to write log messages to. The special strings B and +B can be used to write to the standard output and standard error +channels, respectively. This, of course, only makes much sense when I +is running in foreground- or non-daemon-mode. -B means use the guest's UUID. This is useful if you want to track the -same guest across migrations. +=item B B|B -B means to use the global B setting, which is probably not -useful on its own because all guests will appear to have the same name. +Prefix all lines printed by the current time. Defaults to B. -You can also specify combinations of these fields. For example B -means to concatenate the guest name and UUID (with a literal colon character -between, thus I<"foo:1234-1234-1234-1234">). +=item B B|B -=item B B|B
+When enabled, all lines are prefixed by the severity of the log message, for +example "warning". Defaults to B. -When the libvirt plugin logs interface data, it sets the name of the collected -data according to this setting. The default is to use the path as provided by -the hypervisor (the "dev" property of the target node), which is equal to -setting B. +=back -B
means use the interface's mac address. This is useful since the -interface path might change between reboots of a guest or across migrations. +B: There is no need to notify the daemon after moving or removing the +log file (e.Eg. when rotating the logs). The plugin reopens the file +for each line it writes. -=back +=head2 Plugin C -=head2 Plugin C +The I behaves like the logfile plugin but formats +messages as JSON events for logstash to parse and input. =over 4 @@@ -2739,6 -2259,15 +2739,6 @@@ B can be used to write to the s channels, respectively. This, of course, only makes much sense when I is running in foreground- or non-daemon-mode. -=item B B|B - -Prefix all lines printed by the current time. Defaults to B. - -=item B B|B - -When enabled, all lines are prefixed by the severity of the log message, for -example "warning". Defaults to B. - =back B: There is no need to notify the daemon after moving or removing the @@@ -2918,7 -2447,7 +2918,7 @@@ B The following options are valid inside the Bmic> block: @@@ -2936,7 -2465,7 +2936,7 @@@ =item B B|B -If enabled (the default) a sum of the CPU usage accross all cores is reported. +If enabled (the default) a sum of the CPU usage across all cores is reported. =item B B|B @@@ -2984,7 -2513,7 +2984,7 @@@ Fan I =item fout -Fan Out +Fan Out =item vccp @@@ -3025,11 -2554,11 +3025,11 @@@ Known power names are =item total0 -Total power utilization averaged over Time Window 0 (uWatts). +Total power utilization averaged over Time Window 0 (uWatts). =item total1 -Total power utilization averaged over Time Window 0 (uWatts). +Total power utilization averaged over Time Window 0 (uWatts). =item inst @@@ -3037,61 -2566,40 +3037,61 @@@ Instantaneous power (uWatts) =item imax -Max instantaneous power (uWatts). +Max instantaneous power (uWatts). =item pcie -PCI-E connector power (uWatts). +PCI-E connector power (uWatts). =item c2x3 -2x3 connector power (uWatts). +2x3 connector power (uWatts). =item c2x4 -2x4 connector power (uWatts). +2x4 connector power (uWatts). =item vccp -Core rail (uVolts). +Core rail (uVolts). =item vddg -Uncore rail (uVolts). +Uncore rail (uVolts). =item vddq -Memory subsystem rail (uVolts). +Memory subsystem rail (uVolts). =back =back +=head2 Plugin C + +The I provides the following configuration options: + +=over 4 + +=item B B|B + +Enables or disables reporting of physical memory usage in absolute numbers, +i.e. bytes. Defaults to B. + +=item B B|B + +Enables or disables reporting of physical memory usage in percentages, e.g. +percent of physical memory used. Defaults to B. + +This is useful for deploying I in a heterogeneous environment in +which the sizes of physical memory vary. + +=back + =head2 Plugin C -The B connects to a Modbus "slave" via Modbus/TCP and reads -register values. It supports reading single registers (unsigned 16Ebit +The B connects to a Modbus "slave" via Modbus/TCP or Modbus/RTU and +reads register values. It supports reading single registers (unsigned 16Ebit values), large integer values (unsigned 32Ebit values) and floating point values (two registers interpreted as IEEE floats in big endian notation). @@@ -3100,32 -2608,22 +3100,32 @@@ B RegisterBase 0 RegisterType float + RegisterCmd ReadHolding Type voltage Instance "input-1" - + RegisterBase 2 RegisterType float + RegisterCmd ReadHolding Type voltage Instance "input-2" - + + + RegisterBase 0 + RegisterType Int16 + RegisterCmd ReadHolding + Type temperature + Instance "temp-1" + + Address "192.168.0.42" Port "502" Interval 60 - + Instance "power-supply" Collect "voltage-input-1" @@@ -3133,17 -2631,6 +3133,17 @@@ + + Device "/dev/ttyUSB0" + Baudrate 38400 + Interval 20 + + + Instance "temperature" + Collect "supply-temperature-1" + + + =over 4 =item EB IE blocks @@@ -3167,11 -2654,6 +3167,11 @@@ Specifies what kind of data is returne B or B, two 16Ebit registers will be read and the data is combined into one value. Defaults to B. +=item B B|B + +Specifies register type to be collected from device. Works only with libmodbus +2.9.2 or higher. Defaults to B. + =item B I Specifies the "type" (data set) to use when dispatching the value to @@@ -3197,25 -2679,15 +3197,25 @@@ Within EHostE/E blocks, t =item B
I -Specifies the node name (the actual network address) used to connect to the -host. This may be an IP address or a hostname. Please note that the used -I library only supports IPv4 at the moment. +For Modbus/TCP, specifies the node name (the actual network address) used to +connect to the host. This may be an IP address or a hostname. Please note that +the used I library only supports IPv4 at the moment. =item B I -Specifies the port used to connect to the host. The port can either be given as -a number or as a service name. Please note that the I argument must be -a string, even if ports are given in their numerical form. Defaults to "502". +for Modbus/TCP, specifies the port used to connect to the host. The port can +either be given as a number or as a service name. Please note that the +I argument must be a string, even if ports are given in their numerical +form. Defaults to "502". + +=item B I + +For Modbus/RTU, specifies the path to the serial device being used. + +=item B I + +For Modbus/RTU, specifies the baud rate of the serial device. +Note, connections currently support only 8/N/1. =item B I @@@ -3224,7 -2696,7 +3224,7 @@@ host. By default the global BB IE -Over each TCP connection, multiple Modbus devices may be reached. The slave ID +Over each connection, multiple Modbus devices may be reached. The slave ID is used to specify which device should be addressed. For each device you want to query, one B block must be given. @@@ -3282,11 -2754,9 +3282,11 @@@ Synopsis Password "password" Port "3306" MasterStats true + ConnectTimeout 10 + Alias "squeeze" Host "localhost" Socket "/var/run/mysql/mysqld.sock" SlaveStats true @@@ -3301,11 -2771,6 +3301,11 @@@ section "mysql_real_connect()" in the B =over 4 +=item B I + +Alias to use as sender instead of hostname when reporting. This may be useful +when having cryptic hostnames. + =item B I Hostname of the database server. Defaults to B. @@@ -3344,11 -2809,6 +3344,11 @@@ only has any effect, if B is set Otherwise, use the B option above. See the documentation for the C function for details. +=item B I + +If enabled, metrics about the InnoDB storage engine are collected. +Disabled by default. + =item B I =item B I @@@ -3362,10 -2822,6 +3362,10 @@@ privileges. See the B documentati If enabled, the plugin sends a notification if the replication slave I/O and / or SQL threads are not running. Defaults to B. +=item B I + +Sets the connect timeout for the MySQL client. + =back =head2 Plugin C @@@ -3400,7 -2856,7 +3400,7 @@@ Required capabilities are documented be User "username" Password "aef4Aebe" Interval 30 - + Interval 30 GetNameCache true @@@ -3408,12 -2864,12 +3408,12 @@@ GetBufferCache true GetInodeCache true - + Interval 30 GetBusy true - + Interval 30 GetIO "volume0" @@@ -3423,7 -2879,7 +3423,7 @@@ GetLatency "volume0" IgnoreSelectedLatency false - + Interval 30 GetCapacity "vol0" @@@ -3433,15 -2889,15 +3433,15 @@@ GetSnapshot "vol3" IgnoreSelectedSnapshot false - + Interval 60 - + Interval 30 - + Interval 30 GetCPULoad true @@@ -4002,7 -3458,7 +4002,7 @@@ signature) # Export to an internal server # (demonstrates usage without additional options) Server "collectd.internal.tld" - + # Export to an external server # (demonstrates usage with signature options) @@@ -4065,12 -3521,6 +4065,12 @@@ behavior is to let the kernel choose th that the manual selection of an interface for unicast traffic is only necessary in rare cases. +=item B I + +Sets the interval at which to re-resolve the DNS for the I. This is +useful to force a regular DNS lookup to support a high availability setup. If +not specified, re-resolves are never attempted. + =back =item BListen> I [I]B> @@@ -4215,12 -3665,6 +4215,12 @@@ File that holds one or more SSL certifi possibly need this option. What CA certificates come bundled with C and are checked by default depends on the distribution you use. +=item B I + +The B option sets the overall timeout for HTTP requests to B, in +milliseconds. By default, the configured B is used to set the +timeout. + =back =head2 Plugin C @@@ -4415,36 -3859,13 +4415,36 @@@ B See notes below The C plugin uses the B library from the B project L to read sensors connected via the onewire bus. -Currently only temperature sensors (sensors with the family code C<10>, -e.Eg. DS1820, DS18S20, DS1920) can be read. If you have other sensors you -would like to have included, please send a sort request to the mailing list. +It can be used in two possible modes - standard or advanced. + +In the standard mode only temperature sensors (sensors with the family code +C<10>, C<22> and C<28> - e.g. DS1820, DS18S20, DS1920) can be read. If you have +other sensors you would like to have included, please send a sort request to +the mailing list. You can select sensors to be read or to be ignored depending +on the option B). When no list is provided the whole bus is +walked and all sensors are read. Hubs (the DS2409 chips) are working, but read the note, why this plugin is experimental, below. +In the advanced mode you can configure any sensor to be read (only numerical +value) using full OWFS path (e.g. "/uncached/10.F10FCA000800/temperature"). +In this mode you have to list all the sensors. Neither default bus walk nor +B are used here. Address and type (file) is extracted from +the path automatically and should produce compatible structure with the "standard" +mode (basically the path is expected as for example +"/uncached/10.F10FCA000800/temperature" where it would extract address part +"F10FCA000800" and the rest after the slash is considered the type - here +"temperature"). +There are two advantages to this mode - you can access virtually any sensor +(not just temperature), select whether to use cached or directly read values +and it is slighlty faster. The downside is more complex configuration. + +The two modes are distinguished automatically by the format of the address. +It is not possible to mix the two modes. Once a full path is detected in any +B then the whole addressing (all sensors) is considered to be this way +(and as standard addresses will fail parsing they will be ignored). + =over 4 =item B I @@@ -4465,23 -3886,14 +4465,23 @@@ This directive is B and does =item B I -Selects sensors to collect or to ignore, depending on B, see -below. Sensors are specified without the family byte at the beginning, to you'd -use C, and B include the leading C<10.> family byte and -point. +In the standard mode selects sensors to collect or to ignore +(depending on B, see below). Sensors are specified without +the family byte at the beginning, so you have to use for example C, +and B include the leading C<10.> family byte and point. +When no B is configured the whole Onewire bus is walked and all supported +sensors (see above) are read. + +In the advanced mode the B specifies full OWFS path - e.g. +C (or when cached values are OK +C). B is not used. + +As there can be multiple devices on the bus you can list multiple sensor (use +multiple B elements). =item B I|I -If no configuration if given, the B plugin will collect data from all +If no configuration is given, the B plugin will collect data from all sensors found. This may not be practical, especially if sensors are added and removed regularly. Sometimes, however, it's easier/preferred to collect only specific sensors or all sensors I a few specified ones. This option @@@ -4489,8 -3901,6 +4489,8 @@@ enables you to do that: By setting B is inverted: All selected interfaces are ignored and all other interfaces are collected. +Used only in the standard mode - see above. + =item B I Sets the interval in which all sensors should be read. If not specified, the @@@ -4509,70 -3919,6 +4509,70 @@@ short: If it works for you: Great! But change, though this is unlikely. Oh, and if you want to help improving this plugin, just send a short notice to the mailing list. ThanksE:) +=head2 Plugin C + +To use the C plugin you first need to configure the I +server correctly. The backend database C needs to be loaded and +working. See slapd-monitor(5) for the details. + +The configuration of the C plugin consists of one or more B +blocks. Each block requires one string argument as the instance name. For +example: + + + + URL "ldap://localhost/" + + + URL "ldaps://localhost/" + + + +The instance name will be used as the I. To emulate the old +(versionE4) behavior, you can use an empty string (""). In order for the +plugin to work correctly, each instance name must be unique. This is not +enforced by the plugin and it is your responsibility to ensure it is. + +The following options are accepted within each B block: + +=over 4 + +=item B I + +Sets the URL to use to connect to the I server. This option is +I. + +=item B B + +Defines whether TLS must be used when connecting to the I server. +Disabled by default. + +=item B B + +Enables or disables peer host name verification. If enabled, the plugin checks +if the C or a C field of the SSL +certificate matches the host name provided by the B option. If this +identity check fails, the connection is aborted. Enabled by default. + +=item B I + +File that holds one or more SSL certificates. If you want to use TLS/SSL you +may possibly need this option. What CA certificates are checked by default +depends on the distribution you use and can be changed with the usual ldap +client configuration mechanisms. See ldap.conf(5) for the details. + +=item B I + +Sets the timeout value for ldap operations. Defaults to B<-1> which results in +an infinite timeout. + +=item B I + +An integer which sets the LDAP protocol version number to use when connecting +to the I server. Defaults to B<3> for using I. + +=back + =head2 Plugin C The OpenVPN plugin reads a status file maintained by OpenVPN and gathers @@@ -5233,10 -4579,6 +5233,10 @@@ Specify the username to be used when co Specify the password to be used when connecting to the server. +=item B I + +Skip expired values in query output. + =item B I|I|I|I Specify whether to use an SSL connection when contacting the server. The @@@ -5262,13 -4604,6 +5262,13 @@@ Use SSL only =back +=item B I + +Specify the plugin instance name that should be used instead of the database +name (which is the default, if this option has not been specified). This +allows to query multiple databases of the same name on the same host (e.g. +when running multiple database server versions in parallel). + =item B I Specify the Kerberos service name to use when authenticating with Kerberos 5 @@@ -5608,10 -4943,6 +5608,10 @@@ which configures the connection paramet Host "localhost" Port "6379" Timeout 2000 + + Type "queue_length" + Instance "myqueue" + @@@ -5649,22 -4980,6 +5649,22 @@@ read function is blocking, you should k in mind that the sum of all B values for all B should be lower than B defined globally. +=item B I + +The B block identifies a query to execute against the redis server. +There may be an arbitrary number of queries to execute. + +=item B I + +Within a query definition, a valid collectd type to use as when submitting +the result of the query. When not supplied, will default to B. + +=item B I + +Within a query definition, an optional type instance to use when submitting +the result of the query. When not supplied will default to the escaped +command, up to 64 chars. + =back =head2 Plugin C @@@ -6006,40 -5321,6 +6006,40 @@@ measurements are discarded =back +=head2 Plugin C + +The C plugin collects SMART information from physical +disks. Values collectd include temperature, power cycle count, poweron +time and bad sectors. Also, all SMART attributes are collected along +with the normalized current value, the worst value, the threshold and +a human readable value. + +Using the following two options you can ignore some disks or configure the +collection only of specific disks. + +=over 4 + +=item B I + +Select the disk I. Whether it is collected or ignored depends on the +B setting, see below. As with other plugins that use the +daemon's ignorelist functionality, a string that starts and ends with a slash +is interpreted as a regular expression. Examples: + + Disk "sdd" + Disk "/hda[34]/" + +=item B B|B + +Sets whether selected disks, i.Ee. the ones matches by any of the B +statements, are ignored or if all other disks are ignored. The behavior +(hopefully) is intuitive: If no B option is configured, all disks are +collected. If at least one B option is given and no B or +set to B, B matching disks will be collected. If B +is set to B, all disks are collected B the ones matched. + +=back + =head2 Plugin C Since the configuration of the C is a little more complicated than @@@ -6130,19 -5411,6 +6130,19 @@@ This option is only available if the I< When enabled, the I is reported in bytes. When disabled, the default, I is reported in pages. This option is available under Linux only. +=item B B|B + +Enables or disables reporting of absolute swap metrics, i.e. number of I +available and used. Defaults to B. + +=item B B|B + +Enables or disables reporting of relative swap metrics, i.e. I +available and free. Defaults to B. + +This is useful for deploying I in a heterogeneous environment, where +swap sizes differ and you want to specify generic thresholds or similar. + =back =head2 Plugin C @@@ -6278,7 -5546,6 +6278,7 @@@ user using (extended) regular expressio Instance "exim" + Interval 60 Regex "S=([1-9][0-9]*)" DSType "CounterAdd" @@@ -6305,9 -5572,6 +6305,9 @@@ This plugin instance is for all B option. This way you can extract several plugin instances from one logfile, handy when parsing syslog and the like. +The B option allows you to define the length of time between reads. If +this is not set, the default Interval will be used. + Each B block has the following options to describe how the match should be performed: @@@ -6363,8 -5627,6 +6363,8 @@@ Use the last number found The matched number is a counter. Simply I the internal counter to this value. Variants exist for C, C, and C data sources. +=item B + =item B =item B @@@ -6373,8 -5635,6 +6373,8 @@@ Add the matched value to the internal c matched number may be negative, which will effectively subtract from the internal counter. +=item B + =item B =item B @@@ -6594,11 -5854,6 +6594,11 @@@ connections a mail server or news serve how many connections a web proxy holds to web servers. You have to give the port in numeric form. +=item B I|I + +If this option is set to I a summary of statistics from all connections +are collectd. This option defaults to I. + =back =head2 Plugin C @@@ -6656,79 -5911,6 +6656,79 @@@ Default: B<1978 =back +=head2 Plugin C + +The I reads CPU frequency and C-state residency on modern +Intel processors by using the new Model Specific Registers. + +=over 4 + +=item B I + +Bitmask of the list of core C states supported by the processor. +This option should only be used if the automated detection fails. +Default value extracted from the cpu model and family. + +Currently supported C-states (by this plugin): 3, 6, 7 + +Example: (1<<3)+(1<<6)+(1<<7) = 392 for all states + +=item B I + +Bitmask of the list of pacages C states supported by the processor. +This option should only be used if the automated detection fails. +Default value extracted from the cpu model and family. + +Currently supported C-states (by this plugin): 2, 3, 6, 7, 8, 9, 10 + +Example: (1<<2)+(1<<3)+(1<<6)+(1<<7) = 396 for states 2, 3, 6 and 7 + +=item B I|I + +Boolean enabling the collection of the I/O System-Management Interrupt +counter'. This option should only be used if the automated detection +fails or if you want to disable this feature. + +=item B I|I + +Boolean enabling the collection of the temperature of each core. +This option should only be used if the automated detectionfails or +if you want to disable this feature. + +=item B I|I + +Boolean enabling the collection of the temperature of each package. +This option should only be used if the automated detectionfails or +if you want to disable this feature. + +=item B I + +Thermal Control Circuit Activation Temperature of the installed +CPU. This temperature is used when collecting the temperature of +cores or packages. This option should only be used if the automated +detection fails. Default value extracted from B + +=item B I + +Bitmask of the list of elements to be thermally monitored. This option +should only be used if the automated detection fails or if you want to +disable some collections. The different bits of this bitmask accepted +by this plugin are: + +=over 4 + +=item 0 ('1'): Package + +=item 1 ('2'): DRAM + +=item 2 ('4'): Cores + +=item 3 ('8'): Embedded graphic device + +=back + +=back + =head2 Plugin C =over 4 @@@ -6801,35 -5983,22 +6801,35 @@@ Take the UUID from the given file (defa =head2 Plugin C The I collects information about Varnish, an HTTP accelerator. +It collects a subset of the values displayed by L, and +organizes them in categories which can be enabled or disabled. Currently only +metrics shown in L's I
section are collected. The exact +meaning of each metric can be found in L. Synopsis: + CollectBackend true + CollectBan false CollectCache true CollectConnections true - CollectBackend true - CollectSHM true + CollectDirectorDNS false CollectESI false CollectFetch false CollectHCB false + CollectObjects false + CollectPurge false + CollectSession false + CollectSHM true CollectSMA false CollectSMS false CollectSM false + CollectStruct false CollectTotals false + CollectUptime false + CollectVCL false + CollectVSM false CollectWorkers false @@@ -6843,29 -6012,34 +6843,29 @@@ Inside each EBE block =over 4 -=item B B|B - -Cache hits and misses. True by default. - -=item B B|B - -Number of client connections received, accepted and dropped. True by default. - =item B B|B Back-end connection statistics, such as successful, reused, and closed connections. True by default. -=item B B|B - -Statistics about the shared memory log, a memory region to store -log messages which is flushed to disk when full. True by default. - =item B B|B Statistics about ban operations, such as number of bans added, retired, and number of objects tested against ban operations. Only available with Varnish -3.x. False by default. +3.x and above. False by default. -=item B B|B +=item B B|B -DNS director lookup cache statistics. Only available with Varnish 3.x. False by -default. +Cache hits and misses. True by default. + +=item B B|B + +Number of client connections received, accepted and dropped. True by default. + +=item B B|B + +DNS director lookup cache statistics. Only available with Varnish 3.x. False by +default. =item B B|B @@@ -6894,14 -6068,7 +6894,14 @@@ number of objects tested against purge =item B B|B Client session statistics. Number of past and current sessions, session herd and -linger counters, etc. False by default. +linger counters, etc. False by default. Note that if using Varnish 4.x, some +metrics found in the Connections and Threads sections with previous versions of +Varnish have been moved here. + +=item B B|B + +Statistics about the shared memory log, a memory region to store +log messages which is flushed to disk when full. True by default. =item B B|B @@@ -6932,126 -6099,18 +6932,126 @@@ the number of requests and bytes transf =item B B|B -Varnish uptime. False by default. +Varnish uptime. Only available with Varnish 3.x and above. False by default. =item B B|B Number of total (available + discarded) VCL (config files). False by default. +=item B B|B + +Collect statistics about Varnish's shared memory usage (used by the logging and +statistics subsystems). Only available with Varnish 4.x. False by default. + =item B B|B Collect statistics about worker threads. False by default. =back +=head2 Plugin C + +This plugin allows CPU, disk and network load to be collected for virtualized +guests on the machine. This means that these metrics can be collected for guest +systems without installing any software on them - I only runs on the +host system. The statistics are collected through libvirt +(L). + +Only I is required. + +=over 4 + +=item B I + +Connect to the hypervisor given by I. For example if using Xen use: + + Connection "xen:///" + +Details which URIs allowed are given at L. + +=item B I + +Refresh the list of domains and devices every I. The default is 60 +seconds. Setting this to be the same or smaller than the I will cause +the list of domains and devices to be refreshed on every iteration. + +Refreshing the devices in particular is quite a costly operation, so if your +virtualization setup is static you might consider increasing this. If this +option is set to 0, refreshing is disabled completely. + +=item B I + +=item B I + +=item B I + +=item B B|B + +Select which domains and devices are collected. + +If I is not given or B then only the listed domains and +disk/network devices are collected. + +If I is B then the test is reversed and the listed +domains and disk/network devices are ignored, while the rest are collected. + +The domain name and device names may use a regular expression, if the name is +surrounded by I and collectd was compiled with support for regexps. + +The default is to collect statistics for all domains and all their devices. + +Example: + + BlockDevice "/:hdb/" + IgnoreSelected "true" + +Ignore all I devices on any domain, but other block devices (eg. I) +will be collected. + +=item B B + +When the virt plugin logs data, it sets the hostname of the collected data +according to this setting. The default is to use the guest name as provided by +the hypervisor, which is equal to setting B. + +B means use the guest's UUID. This is useful if you want to track the +same guest across migrations. + +B means to use the global B setting, which is probably not +useful on its own because all guests will appear to have the same name. + +You can also specify combinations of these fields. For example B +means to concatenate the guest name and UUID (with a literal colon character +between, thus I<"foo:1234-1234-1234-1234">). + +At the moment of writing (collectd-5.5), hostname string is limited to 62 +characters. In case when combination of fields exceeds 62 characters, +hostname will be truncated without a warning. + +=item B B|B
+ +When the virt plugin logs interface data, it sets the name of the collected +data according to this setting. The default is to use the path as provided by +the hypervisor (the "dev" property of the target node), which is equal to +setting B. + +B
means use the interface's mac address. This is useful since the +interface path might change between reboots of a guest or across migrations. + +=item B B + +When the virt plugin logs data, it sets the plugin_instance of the collected +data according to this setting. The default is to use the guest name as provided +by the hypervisor, which is equal to setting B. + +B means use the guest's UUID. + +You can also specify combinations of these fields. For example B +means to concatenate the guest name and UUID (with a literal colon character +between, thus I<"foo:1234-1234-1234-1234">). + +=back + =head2 Plugin C The C plugin collects information about the usage of virtual memory. @@@ -7168,59 -6227,6 +7168,59 @@@ more than one DS =back +=head2 Plugin C + +The C plugin writes data to I, a scalable open-source +time series database. The plugin connects to a I, a masterless, no shared +state daemon that ingests metrics and stores them in HBase. The plugin uses +I over the "line based" protocol with a default port 4242. The data will +be sent in blocks of at most 1428 bytes to minimize the number of network +packets. + +Synopsis: + + + + Host "tsd-1.my.domain" + Port "4242" + HostTags "status=production" + + + +The configuration consists of one or more EBEIE +blocks. Inside the B blocks, the following options are recognized: + +=over 4 + +=item B I
+ +Hostname or address to connect to. Defaults to C. + +=item B I + +Service name or port number to connect to. Defaults to C<4242>. + + +=item B I + +When set, I is added to the end of the metric. It is intended to be +used for name=value pairs that the TSD will tag the metric with. Dots and +whitespace are I escaped in this string. + +=item B B|B + +If set to B, convert counter values to rates. If set to B +(the default) counter values are stored as is, as an increasing +integer number. + +=item B B|B + +If set the B, append the name of the I (DS) to the "metric" +identifier. If set to B (the default), this is only done when there is +more than one DS. + +=back + =head2 Plugin C The I will send values to I, a schema-less @@@ -7276,31 -6282,25 +7276,31 @@@ want to use authentication all three fi =head2 Plugin C -This output plugin submits values to an http server by POST them using the -PUTVAL plain-text protocol. Each destination you want to post data to needs to -have one B block, within which the destination can be configured further, -for example by specifying authentication data. +This output plugin submits values to an HTTP server using POST requests and +encoding metrics with JSON or using the C command described in +L. Synopsis: - + + URL "http://example.com/post-collectd" User "collectd" Password "weCh3ik0" - + Format JSON + -B blocks need one string argument which is used as the URL to which data -is posted. The following options are understood within B blocks. +The plugin can send values to multiple HTTP servers by specifying one +EBEIE block for each server. Within each B +block, the following options are available: =over 4 +=item B I + +URL to which the values are submitted to. Mandatory. + =item B I Optional user name needed for authentication. @@@ -7328,33 -6328,6 +7328,33 @@@ File that holds one or more SSL certifi possibly need this option. What CA certificates come bundled with C and are checked by default depends on the distribution you use. +=item B I + +Directory holding one or more CA certificate files. You can use this if for +some reason all the needed CA certificates aren't in the same file and can't be +pointed to using the B option. Requires C to be built against +OpenSSL. + +=item B I + +File that holds the private key in PEM format to be used for certificate-based +authentication. + +=item B I + +File that holds the SSL certificate to be used for certificate-based +authentication. + +=item B I + +Password required to load the private key in B. + +=item B B|B|B|B|B|B + +Define which SSL protocol version must be used. By default C will +attempt to figure out the remote SSL protocol version. See +L for more details. + =item B B|B Format of the output to generate. If set to B, will create output that @@@ -7366,143 -6339,8 +7366,143 @@@ Defaults to B =item B B If set to B, convert counter values to rates. If set to B (the -default) counter values are stored as is, i.Ee. as an increasing integer -number. +default) counter values are stored as is, i.e. as an increasing integer number. + +=item B I + +Sets the send buffer size to I. By increasing this buffer, less HTTP +requests will be generated, but more metrics will be batched / metrics are +cached for longer before being sent, introducing additional delay until they +are available on the server side. I must be at least 1024 and cannot +exceed the size of an C, i.e. 2EGByte. +Defaults to C<4096>. + +=item B I + +Sets the minimal transfer rate in I below which the +connection with the HTTP server will be considered too slow and aborted. All +the data submitted over this connection will probably be lost. Defaults to 0, +which means no minimum transfer rate is enforced. + +=item B I + +Sets the maximum time in milliseconds given for HTTP POST operations to +complete. When this limit is reached, the POST operation will be aborted, and +all the data in the current send buffer will probably be lost. Defaults to 0, +which means the connection never times out. + +The C plugin regularly submits the collected values to the HTTP +server. How frequently this happens depends on how much data you are collecting +and the size of B. The optimal value to set B to is +slightly below this interval, which you can estimate by monitoring the network +traffic between collectd and the HTTP server. + +=back + +=head2 Plugin C + +The I will send values to a I topic, a distributed +queue. +Synopsis: + + + Property "metadata.broker.list" "broker1:9092,broker2:9092" + + Format JSON + + + +The following options are understood by the I: + +=over 4 + +=item EB IE + +The plugin's configuration consists of one or more B blocks. Each block +is given a unique I and specifies one kafka producer. +Inside the B block, the following per-topic options are +understood: + +=over 4 + +=item B I I + +Configure the named property for the current topic. Properties are +forwarded to the kafka producer library B. + +=item B I + +Use the specified string as a partioning key for the topic. Kafka breaks +topic into partitions and guarantees that for a given topology, the same +consumer will be used for a specific key. The special (case insensitive) +string B can be used to specify that an arbitrary partition should +be used. + +=item B B|B|B + +Selects the format in which messages are sent to the broker. If set to +B (the default), values are sent as C commands which are +identical to the syntax used by the I and I. + +If set to B, the values are encoded in the I, +an easy and straight forward exchange format. + +If set to B, values are encoded in the I format, which is +CmetricE EvalueE EtimestampE\n>. + +=item B B|B + +Determines whether or not C, C and C data sources +are converted to a I (i.e. a C value). If set to B (the +default), no conversion is performed. Otherwise the conversion is performed +using the internal value cache. + +Please note that currently this option is only used if the B option has +been set to B. + +=item B (B=I only) + +A prefix can be added in the metric name when outputting in the I +format. It's added before the I name. +Metric name will be +CprefixEEhostEEpostfixEEpluginEEtypeEEnameE> + +=item B (B=I only) + +A postfix can be added in the metric name when outputting in the I +format. It's added after the I name. +Metric name will be +CprefixEEhostEEpostfixEEpluginEEtypeEEnameE> + +=item B (B=I only) + +Specify a character to replace dots (.) in the host part of the metric name. +In I metric name, dots are used as separators between different +metric parts (host, plugin, type). +Default is C<_> (I). + +=item B B|B + +If set to B, the plugin instance and type instance will be in their own +path component, for example C. If set to B (the +default), the plugin and plugin instance (and likewise the type and type +instance) are put into one component, for example C. + +=item B B|B + +If set to B (the default), convert counter values to rates. If set to +B counter values are stored as is, i.e. as an increasing integer number. + +This will be reflected in the C tag: If B is enabled, +converted values will have "rate" appended to the data source type, e.g. +C. + +=back + +=item B I I + +Configure the kafka producer through properties, you almost always will +want to set B to your Kafka broker list. =back @@@ -7522,7 -6360,7 +7522,7 @@@ Synopsis Values are submitted to I, using the metric name as the key, and the timestamp as the score. Retrieving a date range can then be done using the -C I command. Additionnally, all the identifiers of these +C I command. Additionally, all the identifiers of these I are kept in a I called C and can be retrieved using the C I command. See L and L for @@@ -7540,9 -6378,9 +7540,9 @@@ options are available =item B I The B block identifies a new I node, that is a new I -instance running in an specified host and port. The name for node is a +instance running on a specified host and port. The node name is a canonical identifier which is used as I. It is limited to -64Echaracters in length. +51Echaracters in length. =item B I @@@ -7563,7 -6401,7 +7563,7 @@@ The B option sets the socket c =head2 Plugin C -The I will send values to I, a powerfull stream +The I will send values to I, a powerful stream aggregation and monitoring system. The plugin sends I encoded data to I using UDP packets. @@@ -7579,7 -6417,6 +7579,7 @@@ Synopsis TTLFactor 2.0 Tag "foobar" + Attribute "foo" "bar" The following options are understood by the I: @@@ -7606,26 -6443,7 +7606,26 @@@ Service name or port number to connect =item B B|B Specify the protocol to use when communicating with I. Defaults to -B. +B. + +=item B B|B + +If set to B and B is set to B, +events will be batched in memory and flushed at +regular intervals or when B is exceeded. + +Notifications are not batched and sent as soon as possible. + +When enabled, it can occur that events get processed by the Riemann server +close to or after their expiration time. Tune the B and +B settings according to the amount of values collected, if this +is an issue. + +Defaults to true + +=item B I + +Maximum payload size for a riemann packet. Defaults to 8192 =item B B|B @@@ -7652,23 -6470,6 +7652,23 @@@ interval is multiplied to set the TTL. know exactly what you're doing, you should only increase this setting from its default value. +=item B B|B + +If set to B, create riemann events for notifications. This is B +by default. When processing thresholds from write_riemann, it might prove +useful to avoid getting notification events. + +=item B B|B + +If set to B, attach state to events based on thresholds defined +in the B plugin. Defaults to B. + +=item B I + +Add the given string as a prefix to the event service name. +If B not set or set to an empty string (""), +no prefix will be used. + =back =item B I @@@ -7676,146 -6477,6 +7676,146 @@@ Add the given string as an additional tag to the metric being sent to I. +=item B I I + +Consider the two given strings to be the key and value of an additional +attribute for each metric being sent out to I. + +=back + +=head2 Plugin C + +The I will send values to I, a powerful stream +aggregation and monitoring system. The plugin sends I encoded data to +a local I client using a TCP socket. + +At the moment, the I does not send over a collectd_host +parameter so it is not possible to use one collectd instance as a gateway for +others. Each collectd host must pair with one I client. + +Synopsis: + + + + Host "localhost" + Port "3030" + StoreRates true + AlwaysAppendDS false + MetricHandler "influx" + MetricHandler "default" + NotificationHandler "flapjack" + NotificationHandler "howling_monkey" + Notifications true + + Tag "foobar" + Attribute "foo" "bar" + + +The following options are understood by the I: + +=over 4 + +=item EB IE + +The plugin's configuration consists of one or more B blocks. Each block +is given a unique I and specifies one connection to an instance of +I. Inside the B block, the following per-connection options are +understood: + +=over 4 + +=item B I
+ +Hostname or address to connect to. Defaults to C. + +=item B I + +Service name or port number to connect to. Defaults to C<3030>. + +=item B B|B + +If set to B (the default), convert counter values to rates. If set to +B counter values are stored as is, i.e. as an increasing integer number. + +This will be reflected in the C tag: If +B is enabled, converted values will have "rate" appended to the +data source type, e.g. C. + +=item B B|B + +If set the B, append the name of the I (DS) to the +"service", i.e. the field that, together with the "host" field, uniquely +identifies a metric in I. If set to B (the default), this is +only done when there is more than one DS. + +=item B B|B + +If set to B, create I events for notifications. This is B +by default. At least one of B or B should be enabled. + +=item B B|B + +If set to B, create I events for metrics. This is B +by default. At least one of B or B should be enabled. + + +=item B I + +Sets the separator for I metrics name or checks. Defaults to "/". + +=item B I + +Add a handler that will be set when metrics are sent to I. You can add +several of them, one per line. Defaults to no handler. + +=item B I + +Add a handler that will be set when notifications are sent to I. You can +add several of them, one per line. Defaults to no handler. + +=item B I + +Add the given string as a prefix to the event service name. +If B not set or set to an empty string (""), +no prefix will be used. + +=back + +=item B I + +Add the given string as an additional tag to the metric being sent to +I. + +=item B I I + +Consider the two given strings to be the key and value of an additional +attribute for each metric being sent out to I. + +=back + +=head2 Plugin C + +The I will collect statistics from a I server +using the mntr command. It requires Zookeeper 3.4.0+ and access to the +client port. + +B + + + Host "127.0.0.1" + Port "2181" + + +=over 4 + +=item B I
+ +Hostname or address to connect to. Defaults to C. + +=item B I + +Service name or port number to connect to. Defaults to C<2181>. + =back =head1 THRESHOLD CONFIGURATION @@@ -8487,7 -7148,7 +8487,7 @@@ Example Max 100 Satisfy "All" - + # Match if the value of any data source is outside the range of 0 - 100. Min 0 @@@ -8669,7 -7330,7 +8669,7 @@@ Example # Replace "example.net" with "example.com" Host "\\" "example.com" - + # Strip "www." from hostnames Host "\\ @@@ -8752,6 -7413,6 +8752,6 @@@ Locto@verplant.orgE +Florian Forster Eocto@collectd.orgE =cut diff --combined src/processes.c index 2d79c7f6,faeb7c9e..8f94fc25 --- a/src/processes.c +++ b/src/processes.c @@@ -25,7 -25,7 +25,7 @@@ * * Authors: * Lyonel Vincent - * Florian octo Forster + * Florian octo Forster * Oleg King * Sebastian Harl * Andrés J. Díaz @@@ -94,13 -94,13 +94,13 @@@ # endif /* #endif KERNEL_LINUX */ -#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD +#elif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) # include # include # include # include # include -/* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ +/* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) */ #elif HAVE_PROCINFO_H # include @@@ -143,12 -143,8 +143,12 @@@ # include #endif -#ifndef ARG_MAX -# define ARG_MAX 4096 +#ifndef CMDLINE_BUFFER_SIZE +# if defined(ARG_MAX) && (ARG_MAX < 4096) +# define CMDLINE_BUFFER_SIZE ARG_MAX +# else +# define CMDLINE_BUFFER_SIZE 4096 +# endif #endif typedef struct procstat_entry_s @@@ -229,9 -225,9 +229,9 @@@ static mach_msg_type_number_t pset_ static long pagesize_g; /* #endif KERNEL_LINUX */ -#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD +#elif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) static int pagesize; -/* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ +/* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) */ #elif HAVE_PROCINFO_H static struct procentry64 procentry[MAXPROCENTRY]; @@@ -641,9 -637,9 +641,9 @@@ static int ps_init (void pagesize_g, CONFIG_HZ); /* #endif KERNEL_LINUX */ -#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD +#elif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) pagesize = getpagesize(); -/* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ +/* #endif HAVE_LIBKVM_GETPROCS && (HAVE_STRUCT_KINFO_PROC_FREEBSD || HAVE_STRUCT_KINFO_PROC_OPENBSD) */ #elif HAVE_PROCINFO_H pagesize = getpagesize(); @@@ -781,14 -777,14 +781,14 @@@ static void ps_submit_fork_rate (derive /* ------- additional functions for KERNEL_LINUX/HAVE_THREAD_INFO ------- */ #if KERNEL_LINUX - static int ps_read_tasks (int pid) + static int ps_read_tasks (long pid) { char dirname[64]; DIR *dh; struct dirent *ent; int count = 0; - ssnprintf (dirname, sizeof (dirname), "/proc/%i/task", pid); + ssnprintf (dirname, sizeof (dirname), "/proc/%li/task", pid); if ((dh = opendir (dirname)) == NULL) { @@@ -809,7 -805,7 +809,7 @@@ } /* int *ps_read_tasks */ /* Read advanced virtual memory data from /proc/pid/status */ - static procstat_t *ps_read_vmem (int pid, procstat_t *ps) + static procstat_t *ps_read_vmem (long pid, procstat_t *ps) { FILE *fh; char buffer[1024]; @@@ -820,7 -816,7 +820,7 @@@ char *fields[8]; int numfields; - ssnprintf (filename, sizeof (filename), "/proc/%i/status", pid); + ssnprintf (filename, sizeof (filename), "/proc/%li/status", pid); if ((fh = fopen (filename, "r")) == NULL) return (NULL); @@@ -871,7 -867,7 +871,7 @@@ return (ps); } /* procstat_t *ps_read_vmem */ - static procstat_t *ps_read_io (int pid, procstat_t *ps) + static procstat_t *ps_read_io (long pid, procstat_t *ps) { FILE *fh; char buffer[1024]; @@@ -880,7 -876,7 +880,7 @@@ char *fields[8]; int numfields; - ssnprintf (filename, sizeof (filename), "/proc/%i/io", pid); + ssnprintf (filename, sizeof (filename), "/proc/%li/io", pid); if ((fh = fopen (filename, "r")) == NULL) return (NULL); @@@ -926,7 -922,7 +926,7 @@@ return (ps); } /* procstat_t *ps_read_io */ - int ps_read_process (int pid, procstat_t *ps, char *state) + int ps_read_process (long pid, procstat_t *ps, char *state) { char filename[64]; char buffer[1024]; @@@ -949,7 -945,7 +949,7 @@@ memset (ps, 0, sizeof (procstat_t)); - ssnprintf (filename, sizeof (filename), "/proc/%i/stat", pid); + ssnprintf (filename, sizeof (filename), "/proc/%li/stat", pid); buffer_len = read_file_contents (filename, buffer, sizeof(buffer) - 1); @@@ -994,9 -990,9 +994,9 @@@ fields_len = strsplit (buffer_ptr, fields, STATIC_ARRAY_SIZE (fields)); if (fields_len < 22) { - DEBUG ("processes plugin: ps_read_process (pid = %i):" + DEBUG ("processes plugin: ps_read_process (pid = %li):" " `%s' has only %i fields..", - (int) pid, filename, fields_len); + pid, filename, fields_len); return (-1); } @@@ -1020,7 -1016,7 +1020,7 @@@ /* Leave the rest at zero if this is only a zombi */ if (ps->num_proc == 0) { - DEBUG ("processes plugin: This is only a zombie: pid = %i; " + DEBUG ("processes plugin: This is only a zombie: pid = %li; " "name = %s;", pid, ps->name); return (0); } @@@ -1068,14 -1064,14 +1068,14 @@@ ps->io_syscr = -1; ps->io_syscw = -1; - DEBUG("ps_read_process: not get io data for pid %i",pid); + DEBUG("ps_read_process: not get io data for pid %li", pid); } /* success */ return (0); } /* int ps_read_process (...) */ - static char *ps_get_cmdline (pid_t pid, char *name, char *buf, size_t buf_len) + static char *ps_get_cmdline (long pid, char *name, char *buf, size_t buf_len) { char *buf_ptr; size_t len; @@@ -1088,8 -1084,7 +1088,7 @@@ if ((pid < 1) || (NULL == buf) || (buf_len < 2)) return NULL; - ssnprintf (file, sizeof (file), "/proc/%u/cmdline", - (unsigned int) pid); + ssnprintf (file, sizeof (file), "/proc/%li/cmdline", pid); errno = 0; fd = open (file, O_RDONLY); @@@ -1217,7 -1212,7 +1216,7 @@@ static int read_fork_rate ( #endif /*KERNEL_LINUX */ #if KERNEL_SOLARIS - static char *ps_get_cmdline (pid_t pid, char *name __attribute__((unused)), /* {{{ */ + static char *ps_get_cmdline (long pid, char *name __attribute__((unused)), /* {{{ */ char *buffer, size_t buffer_size) { char path[PATH_MAX]; @@@ -1706,9 -1701,9 +1705,9 @@@ static int ps_read (void struct dirent *ent; DIR *proc; - int pid; + long pid; - char cmdline[ARG_MAX]; + char cmdline[CMDLINE_BUFFER_SIZE]; int status; procstat_t ps; @@@ -1733,7 -1728,7 +1732,7 @@@ if (!isdigit (ent->d_name[0])) continue; - if ((pid = atoi (ent->d_name)) < 1) + if ((pid = atol (ent->d_name)) < 1) continue; status = ps_read_process (pid, &ps, &state); @@@ -1743,7 -1738,6 +1742,7 @@@ continue; } + memset (&pse, 0, sizeof (pse)); pse.id = pid; pse.age = 0; @@@ -1847,7 -1841,7 +1846,7 @@@ * filter out threads (duplicate PID entries). */ if ((proc_ptr == NULL) || (proc_ptr->ki_pid != procs[i].ki_pid)) { - char cmdline[ARG_MAX] = ""; + char cmdline[CMDLINE_BUFFER_SIZE] = ""; _Bool have_cmdline = 0; proc_ptr = &(procs[i]); @@@ -1944,142 -1938,6 +1943,142 @@@ ps_submit_proc_list (ps_ptr); /* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */ +#elif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_OPENBSD + int running = 0; + int sleeping = 0; + int zombies = 0; + int stopped = 0; + int onproc = 0; + int idle = 0; + int dead = 0; + + kvm_t *kd; + char errbuf[1024]; + struct kinfo_proc *procs; /* array of processes */ + struct kinfo_proc *proc_ptr = NULL; + int count; /* returns number of processes */ + int i; + + procstat_t *ps_ptr; + procstat_entry_t pse; + + ps_list_reset (); + + /* Open the kvm interface, get a descriptor */ + kd = kvm_open (NULL, NULL, NULL, 0, errbuf); + if (kd == NULL) + { + ERROR ("processes plugin: Cannot open kvm interface: %s", + errbuf); + return (0); + } + + /* Get the list of processes. */ + procs = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc), &count); + if (procs == NULL) + { + ERROR ("processes plugin: Cannot get kvm processes list: %s", + kvm_geterr(kd)); + kvm_close (kd); + return (0); + } + + /* Iterate through the processes in kinfo_proc */ + for (i = 0; i < count; i++) + { + /* Create only one process list entry per _process_, i.e. + * filter out threads (duplicate PID entries). */ + if ((proc_ptr == NULL) || (proc_ptr->p_pid != procs[i].p_pid)) + { + char cmdline[CMDLINE_BUFFER_SIZE] = ""; + _Bool have_cmdline = 0; + + proc_ptr = &(procs[i]); + /* Don't probe zombie processes */ + if (!P_ZOMBIE(proc_ptr)) + { + char **argv; + int argc; + int status; + + /* retrieve the arguments */ + argv = kvm_getargv (kd, proc_ptr, /* nchr = */ 0); + argc = 0; + if ((argv != NULL) && (argv[0] != NULL)) + { + while (argv[argc] != NULL) + argc++; + + status = strjoin (cmdline, sizeof (cmdline), argv, argc, " "); + if (status < 0) + WARNING ("processes plugin: Command line did not fit into buffer."); + else + have_cmdline = 1; + } + } /* if (process has argument list) */ + + memset (&pse, 0, sizeof (pse)); + pse.id = procs[i].p_pid; + pse.age = 0; + + pse.num_proc = 1; + pse.num_lwp = 1; /* XXX: accumulate p_tid values for a single p_pid ? */ + + pse.vmem_rss = procs[i].p_vm_rssize * pagesize; + pse.vmem_data = procs[i].p_vm_dsize * pagesize; + pse.vmem_code = procs[i].p_vm_tsize * pagesize; + pse.stack_size = procs[i].p_vm_ssize * pagesize; + pse.vmem_size = pse.stack_size + pse.vmem_code + pse.vmem_data; + pse.vmem_minflt = 0; + pse.vmem_minflt_counter = procs[i].p_uru_minflt; + pse.vmem_majflt = 0; + pse.vmem_majflt_counter = procs[i].p_uru_majflt; + + pse.cpu_user = 0; + pse.cpu_system = 0; + pse.cpu_user_counter = procs[i].p_uutime_usec + + (1000000lu * procs[i].p_uutime_sec); + pse.cpu_system_counter = procs[i].p_ustime_usec + + (1000000lu * procs[i].p_ustime_sec); + + /* no I/O data */ + pse.io_rchar = -1; + pse.io_wchar = -1; + pse.io_syscr = -1; + pse.io_syscw = -1; + + pse.cswitch_vol = -1; + pse.cswitch_invol = -1; + + ps_list_add (procs[i].p_comm, have_cmdline ? cmdline : NULL, &pse); + + switch (procs[i].p_stat) + { + case SSTOP: stopped++; break; + case SSLEEP: sleeping++; break; + case SRUN: running++; break; + case SIDL: idle++; break; + case SONPROC: onproc++; break; + case SDEAD: dead++; break; + case SZOMB: zombies++; break; + } + } /* if ((proc_ptr == NULL) || (proc_ptr->p_pid != procs[i].p_pid)) */ + } + + kvm_close(kd); + + ps_submit_state ("running", running); + ps_submit_state ("sleeping", sleeping); + ps_submit_state ("zombies", zombies); + ps_submit_state ("stopped", stopped); + ps_submit_state ("onproc", onproc); + ps_submit_state ("idle", idle); + ps_submit_state ("dead", dead); + + for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next) + ps_submit_proc_list (ps_ptr); +/* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_OPENBSD */ + #elif HAVE_PROCINFO_H /* AIX */ int running = 0; @@@ -2266,7 -2124,6 +2265,7 @@@ continue; } + memset (&pse, 0, sizeof (pse)); pse.id = pid; pse.age = 0; @@@ -2293,9 -2150,6 +2292,9 @@@ pse.io_syscr = ps.io_syscr; pse.io_syscw = ps.io_syscw; + pse.cswitch_vol = -1; + pse.cswitch_invol = -1; + switch (state) { case 'R': running++; break;