fix configure.ac
authorRinigus <rinigus.git@gmail.com>
Sun, 24 Jul 2016 11:38:08 +0000 (14:38 +0300)
committerRinigus <rinigus.git@gmail.com>
Sun, 24 Jul 2016 11:38:08 +0000 (14:38 +0300)
1  2 
README
configure.ac
src/Makefile.am
src/collectd.conf.in
src/collectd.conf.pod
src/types.db

diff --combined README
--- 1/README
--- 2/README
+++ b/README
@@@ -1,6 -1,6 +1,6 @@@
   collectd - System information collection daemon
  =================================================
- http://collectd.org/
+ https://collectd.org/
  
  About
  -----
@@@ -51,6 -51,9 +51,9 @@@ Feature
      - cgroups
        CPU accounting information for process groups under Linux.
  
+     - chrony
+       Chrony daemon statistics: Local clock drift, offset to peers, etc.
      - conntrack
        Number of nf_conntrack entries.
  
@@@ -64,9 -67,6 +67,9 @@@
      - cpufreq
        CPU frequency (For laptops with speed step or a similar technology)
  
 +    - cpusleep
 +      CPU sleep: Time spent in suspend (For mobile devices which enter suspend automatically)
 +
      - curl
        Parse statistics from websites using regular expressions.
  
      - gmond
        Receive multicast traffic from Ganglia instances.
  
+     - grpc
+       Receive values over the network using the gRPC framework.
      - hddtemp
        Hard disk temperatures using hddtempd.
  
      - wireless
        Link quality of wireless cards. Linux only.
  
+     - xencpu
+       XEN Hypervisor CPU stats.
      - xmms
        Bitrate and frequency of music played with XMMS.
  
        Send an E-mail with the notification message to the configured
        recipients.
  
+     - notify_nagios
+       Submit notifications as passive check results to a local nagios instance.
      - exec
        Execute a program or script to handle the notification.
        See collectd-exec(5).
@@@ -679,6 -688,11 +691,11 @@@ Prerequisite
      Used by the `gmond' plugin to process data received from Ganglia.
      <http://ganglia.info/>
  
+   * libgrpc (optional)
+     Used by the `grpc' plugin. gRPC requires a C++ compiler supporting the
+     C++11 standard.
+     <https://grpc.io/>
    * libgcrypt (optional)
      Used by the `network' plugin for encryption and authentication.
      <http://www.gnupg.org/>
      The PostgreSQL C client library used by the `postgresql' plugin.
      <http://www.postgresql.org/>
  
+   * libprotobuf, protoc 3.0+ (optional)
+     Used by the `grpc' plugin to generate service stubs and code to handle
+     network packets of collectd's protobuf-based network protocol.
+     <https://developers.google.com/protocol-buffers/>
    * libprotobuf-c, protoc-c (optional)
      Used by the `pinba' plugin to generate a parser for the network packets
      sent by the Pinba PHP extension.
      `virt' plugins.
      <http://xmlsoft.org/>
  
+   * libxen (optional)
+     Used by the `xencpu' plugin.
+     <http://xenbits.xensource.com/>
    * libxmms (optional)
      <http://www.xmms.org/>
  
diff --combined configure.ac
@@@ -31,7 -31,7 +31,7 @@@ m4_ifdef([LT_PACKAGE_VERSION]
  
  AM_CONDITIONAL([BUILD_INCLUDED_LTDL], [test "x$LTDLDEPS" != "x"])
  
- AM_INIT_AUTOMAKE([subdir-objects tar-pax dist-bzip2 foreign])
+ AM_INIT_AUTOMAKE([subdir-objects tar-pax dist-bzip2 no-dist-gzip foreign])
  m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
  AC_LANG(C)
  
@@@ -43,6 -43,7 +43,7 @@@ AC_SYS_LARGEFIL
  # Checks for programs.
  #
  AC_PROG_CC
+ AC_PROG_CXX
  AC_PROG_CPP
  AC_PROG_EGREP
  AC_PROG_INSTALL
@@@ -56,6 -57,8 +57,8 @@@ AC_PROG_LIBTOO
  AC_PROG_LEX
  AC_PROG_YACC
  
+ AC_PATH_PROG([VALGRIND], [valgrind])
  # Warn when pkg.m4 is missing
  m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
  
@@@ -73,6 -76,23 +76,23 @@@ the
        AC_MSG_ERROR([bison is missing and you do not have ${srcdir}/src/liboconfig/parser.c. Please install bison])
  fi
  
+ AC_PATH_PROG([PROTOC], [protoc])
+ have_protoc3="no"
+ if test "x$PROTOC" != "x"; then
+       AC_MSG_CHECKING([for protoc 3.0.0+])
+       if $PROTOC --version | grep -q libprotoc.3; then
+               protoc3="yes (`$PROTOC --version`)"
+               have_protoc3="yes"
+       else
+               protoc3="no (`$PROTOC --version`)"
+       fi
+       AC_MSG_RESULT([$protoc3])
+ fi
+ AM_CONDITIONAL(HAVE_PROTOC3, test "x$have_protoc3" = "xyes")
+ AC_PATH_PROG([GRPC_CPP_PLUGIN], [grpc_cpp_plugin])
+ AM_CONDITIONAL(HAVE_GRPC_CPP, test "x$GRPC_CPP_PLUGIN" != "x")
  AC_CHECK_PROG([have_protoc_c], [protoc-c], [yes], [no])
  if test "x$have_protoc_c" = "xno"
  then
@@@ -129,12 -149,12 +149,12 @@@ case $host_os i
  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"])
+ AM_CONDITIONAL([BUILD_AIX], [test "x$ac_system" = "xAIX"])
+ AM_CONDITIONAL([BUILD_DARWIN], [test "x$ac_system" = "xDarwin"])
+ AM_CONDITIONAL([BUILD_FREEBSD], [test "x$ac_system" = "xFreeBSD"])
+ AM_CONDITIONAL([BUILD_LINUX], [test "x$ac_system" = "xLinux"])
+ AM_CONDITIONAL([BUILD_OPENBSD], [test "x$ac_system" = "xOpenBSD"])
+ AM_CONDITIONAL([BUILD_SOLARIS], [test "x$ac_system" = "xSolaris"])
  
  if test "x$ac_system" = "xLinux"
  then
@@@ -735,23 -755,6 +755,23 @@@ AC_CHECK_HEADERS(net/pfvar.h
  have_termios_h="no"
  AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
  
 +# For cpusleep plugin
 +AC_CACHE_CHECK([whether clock_boottime and clock_monotonic are supported],
 +                     [c_cv_have_clock_boottime_monotonic],
 +                     AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
 +[[[
 +#include <time.h>
 +]]],
 +[[[
 + struct timespec b, m;
 + clock_gettime(CLOCK_BOOTTIME, &b );
 + clock_gettime(CLOCK_MONOTONIC, &m );
 +]]]
 +                     )],
 +                     [c_cv_have_clock_boottime_monotonic="yes"],
 +                     [c_cv_have_clock_boottime_monotonic="no"]))
 +
 +
  # For the turbostat plugin
  have_asm_msrindex_h="no"
  AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
@@@ -791,11 -794,22 +811,22 @@@ AC_HEADER_TIM
  #
  # 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 setlocale)
  
  AC_FUNC_STRERROR_R
  
+ test_cxx_flags() {
+       AC_LANG_PUSH([C++])
+       AC_LANG_CONFTEST([
+               AC_LANG_SOURCE([[int main(void){}]])
+       ])
+       $CXX -c conftest.cpp $CXXFLAGS $@ > /dev/null 2> /dev/null
+       ret=$?
+       rm -f conftest.o
+       AC_LANG_POP([C++])
+       return $ret
+ }
  SAVE_CFLAGS="$CFLAGS"
  # Emulate behavior of src/Makefile.am
  if test "x$GCC" = "xyes"
@@@ -1620,45 -1634,21 +1651,21 @@@ if test "x$with_libhal" = "xyes"; the
        fi
  fi
  
- # --with-libpthread {{{
- AC_ARG_WITH(libpthread, [AS_HELP_STRING([--with-libpthread=@<:@=PREFIX@:>@], [Path to libpthread.])],
- [     if test "x$withval" != "xno" \
-               && test "x$withval" != "xyes"
-       then
-               LDFLAGS="$LDFLAGS -L$withval/lib"
-               CPPFLAGS="$CPPFLAGS -I$withval/include"
-               with_libpthread="yes"
-       else
-               if test "x$withval" = "xno"
-               then
-                       with_libpthread="no (disabled)"
-               fi
-       fi
- ], [with_libpthread="yes"])
+ SAVE_LIBS="$LIBS"
+ AC_CHECK_LIB([pthread],
+   [pthread_create],
+   [],
+   [AC_MSG_ERROR([Symbol 'pthread_create' not found in libpthread"])],
+   []
+ )
+ PTHREAD_LIBS="$LIBS"
+ LIBS="$SAVE_LIBS"
  
+ AC_CHECK_HEADERS([pthread.h],
+   [],
+   [AC_MSG_ERROR([pthread.h not found])]
+ )
  AC_SUBST([PTHREAD_LIBS])
- if test "x$with_libpthread" = "xyes"
- then
-       SAVE_LIBS="$LIBS"
-       AC_CHECK_LIB(pthread, pthread_create, [], [with_libpthread="no (Symbol 'pthread_create' not found)"], [])
-       PTHREAD_LIBS="$LIBS"
-       LIBS="$SAVE_LIBS"
- fi
- if test "x$with_libpthread" = "xyes"
- then
-       AC_CHECK_HEADERS(pthread.h,, [with_libpthread="no (pthread.h not found)"])
- fi
- if test "x$with_libpthread" = "xyes"
- then
-       collect_pthread=1
- else
-       collect_pthread=0
- fi
- AC_DEFINE_UNQUOTED(HAVE_LIBPTHREAD, [$collect_pthread],
-       [Wether or not to use pthread (POSIX threads) library])
- AM_CONDITIONAL(BUILD_WITH_LIBPTHREAD, test "x$with_libpthread" = "xyes")
- # }}}
  
  m4_divert_once([HELP_WITH], [
  collectd additional packages:])
  fi
  if test "x$with_libcurl" = "xyes"
  then
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+       CPPFLAGS="$CPPFLAGS $with_curl_cflags"
+       LDFLAGS="$LDFLAGS $with_curl_libs"
+       AC_CACHE_CHECK([for CURLINFO_APPCONNECT_TIME],
+               [c_cv_have_curlinfo_appconnect_time],
+               AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[
+ #include <curl/curl.h>
+ ]],
+ [[
+ int val = CURLINFO_APPCONNECT_TIME;
+ return val;
+ ]]
+                       )],
+                       [c_cv_have_curlinfo_appconnect_time="yes"],
+                       [c_cv_have_curlinfo_appconnect_time="no"]
+               )
+       )
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
+ fi
+ AM_CONDITIONAL(BUILD_WITH_LIBCURL, test "x$with_libcurl" = "xyes")
+ if test "x$c_cv_have_curlinfo_appconnect_time" = "xyes"
+ then
+       AC_DEFINE(HAVE_CURLINFO_APPCONNECT_TIME, 1, [Define if curl.h defines CURLINFO_APPCONNECT_TIME.])
+ fi
+ if test "x$with_libcurl" = "xyes"
+ then
        BUILD_WITH_LIBCURL_CFLAGS="$with_curl_cflags"
        BUILD_WITH_LIBCURL_LIBS="$with_curl_libs"
        AC_SUBST(BUILD_WITH_LIBCURL_CFLAGS)
                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")
  # }}}
  
  # --with-libdbi {{{
@@@ -2227,6 -2246,62 +2263,62 @@@ AC_SUBST(GCRYPT_LIBS
  AM_CONDITIONAL(BUILD_WITH_LIBGCRYPT, test "x$with_libgcrypt" = "xyes")
  # }}}
  
+ # --with-grpc {{{
+ AC_ARG_WITH(grpc, [AS_HELP_STRING([--without-grpc], [Disable gRPC (default: autodetect).])],
+ [
+       with_grpc="$withval"
+ ],
+ [
+       with_grpc="yes"
+ ])
+ if test "x$with_grpc" = "xyes"
+ then
+       if test "x$have_protoc3" != "xyes"
+       then
+               with_grpc="no (requires protoc 3.0.0+)"
+       else if test "x$GRPC_CPP_PLUGIN" = "x"
+       then
+               with_grpc"no (requires grpc_cpp_plugin)"
+       fi; fi
+ fi
+ if test "x$with_grpc" = "xyes"
+ then
+       AC_MSG_CHECKING([whether $CXX accepts -std=c++11])
+       if test_cxx_flags -std=c++11; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               with_grpc="no (requires C++11 support)"
+       fi
+ fi
+ if test "x$with_grpc" = "xyes"
+ then
+       AC_LANG_PUSH(C++)
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_CXXFLAGS="$CXXFLAGS"
+       CPPFLAGS="$CPPFLAGS -std=c++11"
+       CXXFLAGS="$CXXFLAGS -std=c++11"
+       AC_CHECK_HEADERS([grpc++/grpc++.h], [],
+                       [with_grpc="no (grpc++/grpc++.h not found)"])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       CXXFLAGS="$SAVE_CXXFLAGS"
+       AC_LANG_POP(C++)
+ fi
+ with_libgrpc="no"
+ if test "x$with_grpc" = "xyes"
+ then
+       AC_LANG_PUSH(C++)
+       AC_CHECK_LIB([grpc], [grpc_register_plugin],
+                       [with_libgrpc="yes"],
+                       [with_grpc="no (libgrpc not found)"],
+                       [-lgpr -lprotobuf])
+       AC_LANG_POP(C++)
+ fi
+ # }}}
  # --with-libiptc {{{
  AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])],
  [
@@@ -3383,9 -3458,9 +3475,9 @@@ the
  fi
  if test "x$with_oracle" = "xyes"
  then
-       BUILD_WITH_ORACLE_CFLAGS="$with_oracle_cppflags"
+       BUILD_WITH_ORACLE_CPPFLAGS="$with_oracle_cppflags"
        BUILD_WITH_ORACLE_LIBS="$with_oracle_libs"
-       AC_SUBST(BUILD_WITH_ORACLE_CFLAGS)
+       AC_SUBST(BUILD_WITH_ORACLE_CPPFLAGS)
        AC_SUBST(BUILD_WITH_ORACLE_LIBS)
  fi
  # }}}
  
        CPPFLAGS="$SAVE_CPPFLAGS"
        LDFLAGS="$SAVE_LDFLAGS"
+       LIBXENCTL_CPPFLAGS="$with_libxenctl_cppflags"
+       LIBXENCTL_LDFLAGS="$with_libxenctl_ldflags"
+       AC_SUBST(LIBXENCTL_CPPFLAGS)
+       AC_SUBST(LIBXENCTL_LDFLAGS)
  fi
+ # }}}
  
  # --with-libxmms {{{
  with_xmms_config="xmms-config"
@@@ -5411,7 -5491,7 +5508,7 @@@ AC_DEFUN
             then
                     enable_plugin="yes"
             else
-                    enable_plugin="no"
+                    enable_plugin="$2"
             fi
         else
             enable_plugin="$enable_all_plugins"
                    fi
            else # User passed "yes" but dependency checking yielded "no" => Dependency problem.
                    dependency_error="yes"
-                   enable_plugin="no (dependency error)"
+                   enable_plugin="$2 (dependency error)"
            fi
      fi
      AM_CONDITIONAL([BUILD_PLUGIN_]my_toupper([$1]), test "x$enable_plugin" = "xyes")
@@@ -5457,7 -5537,6 +5554,7 @@@ plugin_conntrack="no
  plugin_contextswitch="no"
  plugin_cpu="no"
  plugin_cpufreq="no"
 +plugin_cpusleep="no"
  plugin_curl_json="no"
  plugin_curl_xml="no"
  plugin_df="no"
        then
                plugin_turbostat="yes"
        fi
 +      
 +      if test "x$c_cv_have_clock_boottime_monotonic" = "xyes"
 +      then
 +              plugin_cpusleep="yes"
 +      fi
  fi
  
  if test "x$ac_system" = "xOpenBSD"
@@@ -5873,11 -5947,11 +5970,12 @@@ AC_PLUGIN([battery],             [$plug
  AC_PLUGIN([bind],                [$plugin_bind],            [ISC Bind nameserver statistics])
  AC_PLUGIN([ceph],                [$plugin_ceph],            [Ceph daemon statistics])
  AC_PLUGIN([cgroups],             [$plugin_cgroups],         [CGroups CPU usage accounting])
+ AC_PLUGIN([chrony],              [yes],                     [Chrony statistics])
  AC_PLUGIN([conntrack],           [$plugin_conntrack],       [nf_conntrack statistics])
  AC_PLUGIN([contextswitch],       [$plugin_contextswitch],   [context switch statistics])
  AC_PLUGIN([cpu],                 [$plugin_cpu],             [CPU usage statistics])
  AC_PLUGIN([cpufreq],             [$plugin_cpufreq],         [CPU frequency statistics])
 +AC_PLUGIN([cpusleep],            [$plugin_cpusleep],        [CPU sleep statistics])
  AC_PLUGIN([csv],                 [yes],                     [CSV output plugin])
  AC_PLUGIN([curl],                [$with_libcurl],           [CURL generic web statistics])
  AC_PLUGIN([curl_json],           [$plugin_curl_json],       [CouchDB statistics])
@@@ -5895,6 -5969,7 +5993,7 @@@ AC_PLUGIN([fhcount],             [$plug
  AC_PLUGIN([filecount],           [yes],                     [Count files in directories])
  AC_PLUGIN([fscache],             [$plugin_fscache],         [fscache statistics])
  AC_PLUGIN([gmond],               [$with_libganglia],        [Ganglia plugin])
+ AC_PLUGIN([grpc],                [$with_grpc],              [gRPC plugin])
  AC_PLUGIN([hddtemp],             [yes],                     [Query hddtempd])
  AC_PLUGIN([interface],           [$plugin_interface],       [Interface traffic statistics])
  AC_PLUGIN([ipc],                 [$plugin_ipc],             [IPC statistics])
@@@ -6152,13 -6227,16 +6251,16 @@@ AC_SUBST(LCC_VERSION_STRING
  AC_CONFIG_FILES(src/libcollectdclient/collectd/lcc_features.h)
  
  AM_CFLAGS="-Wall"
+ AM_CXXFLAGS="-Wall"
  if test "x$enable_werror" != "xno"
  then
          AM_CFLAGS="$AM_CFLAGS -Werror"
+         AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
  fi
  AC_SUBST([AM_CFLAGS])
+ AC_SUBST([AM_CXXFLAGS])
  
- 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_CONFIG_FILES([Makefile proto/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" \
        with_perl_bindings="yes ($PERL_BINDINGS_OPTIONS)"
  fi
  
- cat <<EOF;
- Configuration:
-   Build:
-     Platform  . . . . . . $ac_system
-     CC  . . . . . . . . . $CC
-     CFLAGS  . . . . . . . $AM_CFLAGS $CFLAGS
-     CPP . . . . . . . . . $CPP
-     CPPFLAGS  . . . . . . $CPPFLAGS
-     LD  . . . . . . . . . $LD
-     LDFLAGS . . . . . . . $LDFLAGS
-     YACC  . . . . . . . . $YACC
-     YFLAGS  . . . . . . . $YFLAGS
-   Libraries:
-     intel mic . . . . . . $with_mic
-     libaquaero5 . . . . . $with_libaquaero5
-     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
-     libmodbus . . . . . . $with_libmodbus
-     libmongoc . . . . . . $with_libmongoc
-     libmosquitto  . . . . $with_libmosquitto
-     libmysql  . . . . . . $with_libmysql
-     libnetapp . . . . . . $with_libnetapp
-     libnetsnmp  . . . . . $with_libnetsnmp
-     libnotify . . . . . . $with_libnotify
-     liboconfig  . . . . . $with_liboconfig
-     libopenipmi . . . . . $with_libopenipmipthread
-     liboping  . . . . . . $with_liboping
-     libowcapi . . . . . . $with_libowcapi
-     libpcap . . . . . . . $with_libpcap
-     libperfstat . . . . . $with_perfstat
-     libperl . . . . . . . $with_libperl
-     libpq . . . . . . . . $with_libpq
-     libpthread  . . . . . $with_libpthread
-     librabbitmq . . . . . $with_librabbitmq
-     libriemann-client . . $with_libriemann_client
-     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
-     libxenctrl  . . . . . $with_libxenctrl
-     libxml2 . . . . . . . $with_libxml2
-     libxmms . . . . . . . $with_libxmms
-     libyajl . . . . . . . $with_libyajl
-     oracle  . . . . . . . $with_oracle
-     protobuf-c  . . . . . $have_protoc_c
-     python  . . . . . . . $with_python
-   Features:
-     daemon mode . . . . . $enable_daemon
-     debug . . . . . . . . $enable_debug
-   Bindings:
-     perl  . . . . . . . . $with_perl_bindings
-   Modules:
-     aggregation . . . . . $enable_aggregation
-     amqp    . . . . . . . $enable_amqp
-     apache  . . . . . . . $enable_apache
-     apcups  . . . . . . . $enable_apcups
-     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
-     cpu . . . . . . . . . $enable_cpu
-     cpufreq . . . . . . . $enable_cpufreq
-     cpusleep  . . . . . . $enable_cpusleep
-     csv . . . . . . . . . $enable_csv
-     curl  . . . . . . . . $enable_curl
-     curl_json . . . . . . $enable_curl_json
-     curl_xml  . . . . . . $enable_curl_xml
-     dbi . . . . . . . . . $enable_dbi
-     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
-     load  . . . . . . . . $enable_load
-     logfile . . . . . . . $enable_logfile
-     log_logstash  . . . . $enable_log_logstash
-     lpar  . . . . . . . . $enable_lpar
-     lvm . . . . . . . . . $enable_lvm
-     madwifi . . . . . . . $enable_madwifi
-     match_empty_counter . $enable_match_empty_counter
-     match_hashed  . . . . $enable_match_hashed
-     match_regex . . . . . $enable_match_regex
-     match_timediff  . . . $enable_match_timediff
-     match_value . . . . . $enable_match_value
-     mbmon . . . . . . . . $enable_mbmon
-     md  . . . . . . . . . $enable_md
-     memcachec . . . . . . $enable_memcachec
-     memcached . . . . . . $enable_memcached
-     memory  . . . . . . . $enable_memory
-     mic . . . . . . . . . $enable_mic
-     modbus  . . . . . . . $enable_modbus
-     mqtt  . . . . . . . . $enable_mqtt
-     multimeter  . . . . . $enable_multimeter
-     mysql . . . . . . . . $enable_mysql
-     netapp  . . . . . . . $enable_netapp
-     netlink . . . . . . . $enable_netlink
-     network . . . . . . . $enable_network
-     nfs . . . . . . . . . $enable_nfs
-     nginx . . . . . . . . $enable_nginx
-     notify_desktop  . . . $enable_notify_desktop
-     notify_email  . . . . $enable_notify_email
-     notify_nagios . . . . $enable_notify_nagios
-     ntpd  . . . . . . . . $enable_ntpd
-     numa  . . . . . . . . $enable_numa
-     nut . . . . . . . . . $enable_nut
-     olsrd . . . . . . . . $enable_olsrd
-     onewire . . . . . . . $enable_onewire
-     openldap  . . . . . . $enable_openldap
-     openvpn . . . . . . . $enable_openvpn
-     oracle  . . . . . . . $enable_oracle
-     perl  . . . . . . . . $enable_perl
-     pf  . . . . . . . . . $enable_pf
-     pinba . . . . . . . . $enable_pinba
-     ping  . . . . . . . . $enable_ping
-     postgresql  . . . . . $enable_postgresql
-     powerdns  . . . . . . $enable_powerdns
-     processes . . . . . . $enable_processes
-     protocols . . . . . . $enable_protocols
-     python  . . . . . . . $enable_python
-     redis . . . . . . . . $enable_redis
-     routeros  . . . . . . $enable_routeros
-     rrdcached . . . . . . $enable_rrdcached
-     rrdtool . . . . . . . $enable_rrdtool
-     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_csv  . . . . . . $enable_tail_csv
-     tail  . . . . . . . . $enable_tail
-     tape  . . . . . . . . $enable_tape
-     target_notification . $enable_target_notification
-     target_replace  . . . $enable_target_replace
-     target_scale  . . . . $enable_target_scale
-     target_set  . . . . . $enable_target_set
-     target_v5upgrade  . . $enable_target_v5upgrade
-     tcpconns  . . . . . . $enable_tcpconns
-     teamspeak2  . . . . . $enable_teamspeak2
-     ted . . . . . . . . . $enable_ted
-     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
-     xencpu  . . . . . . . $enable_xencpu
-     xmms  . . . . . . . . $enable_xmms
-     zfs_arc . . . . . . . $enable_zfs_arc
-     zone  . . . . . . . . $enable_zone
-     zookeeper . . . . . . $enable_zookeeper
- EOF
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([Configuration:])
+ AC_MSG_RESULT([  Build:])
+ AC_MSG_RESULT([    Platform  . . . . . . $ac_system])
+ AC_MSG_RESULT([    CC  . . . . . . . . . $CC])
+ AC_MSG_RESULT([    CFLAGS  . . . . . . . $AM_CFLAGS $CFLAGS])
+ AC_MSG_RESULT([    CXXFLAGS  . . . . . . $AM_CXXFLAGS $CXXFLAGS])
+ AC_MSG_RESULT([    CPP . . . . . . . . . $CPP])
+ AC_MSG_RESULT([    CPPFLAGS  . . . . . . $CPPFLAGS])
+ AC_MSG_RESULT([    GRPC_CPP_PLUGIN . . . $GRPC_CPP_PLUGIN])
+ AC_MSG_RESULT([    LD  . . . . . . . . . $LD])
+ AC_MSG_RESULT([    LDFLAGS . . . . . . . $LDFLAGS])
+ AC_MSG_RESULT([    PROTOC  . . . . . . . $PROTOC])
+ AC_MSG_RESULT([    YACC  . . . . . . . . $YACC])
+ AC_MSG_RESULT([    YFLAGS  . . . . . . . $YFLAGS])
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([  Libraries:])
+ AC_MSG_RESULT([    intel mic . . . . . . $with_mic])
+ AC_MSG_RESULT([    libaquaero5 . . . . . $with_libaquaero5])
+ AC_MSG_RESULT([    libatasmart . . . . . $with_libatasmart])
+ AC_MSG_RESULT([    libcurl . . . . . . . $with_libcurl])
+ AC_MSG_RESULT([    libdbi  . . . . . . . $with_libdbi])
+ AC_MSG_RESULT([    libesmtp  . . . . . . $with_libesmtp])
+ AC_MSG_RESULT([    libganglia  . . . . . $with_libganglia])
+ AC_MSG_RESULT([    libgcrypt . . . . . . $with_libgcrypt])
+ AC_MSG_RESULT([    libgrpc . . . . . . . $with_libgrpc])
+ AC_MSG_RESULT([    libhal  . . . . . . . $with_libhal])
+ AC_MSG_RESULT([    libhiredis  . . . . . $with_libhiredis])
+ AC_MSG_RESULT([    libi2c-dev  . . . . . $with_libi2c])
+ AC_MSG_RESULT([    libiokit  . . . . . . $with_libiokit])
+ AC_MSG_RESULT([    libiptc . . . . . . . $with_libiptc])
+ AC_MSG_RESULT([    libjvm  . . . . . . . $with_java])
+ AC_MSG_RESULT([    libkstat  . . . . . . $with_kstat])
+ AC_MSG_RESULT([    libkvm  . . . . . . . $with_libkvm])
+ AC_MSG_RESULT([    libldap . . . . . . . $with_libldap])
+ AC_MSG_RESULT([    liblvm2app  . . . . . $with_liblvm2app])
+ AC_MSG_RESULT([    libmemcached  . . . . $with_libmemcached])
+ AC_MSG_RESULT([    libmnl  . . . . . . . $with_libmnl])
+ AC_MSG_RESULT([    libmodbus . . . . . . $with_libmodbus])
+ AC_MSG_RESULT([    libmongoc . . . . . . $with_libmongoc])
+ AC_MSG_RESULT([    libmosquitto  . . . . $with_libmosquitto])
+ AC_MSG_RESULT([    libmysql  . . . . . . $with_libmysql])
+ AC_MSG_RESULT([    libnetapp . . . . . . $with_libnetapp])
+ AC_MSG_RESULT([    libnetsnmp  . . . . . $with_libnetsnmp])
+ AC_MSG_RESULT([    libnotify . . . . . . $with_libnotify])
+ AC_MSG_RESULT([    liboconfig  . . . . . $with_liboconfig])
+ AC_MSG_RESULT([    libopenipmi . . . . . $with_libopenipmipthread])
+ AC_MSG_RESULT([    liboping  . . . . . . $with_liboping])
+ AC_MSG_RESULT([    libowcapi . . . . . . $with_libowcapi])
+ AC_MSG_RESULT([    libpcap . . . . . . . $with_libpcap])
+ AC_MSG_RESULT([    libperfstat . . . . . $with_perfstat])
+ AC_MSG_RESULT([    libperl . . . . . . . $with_libperl])
+ AC_MSG_RESULT([    libpq . . . . . . . . $with_libpq])
+ AC_MSG_RESULT([    librabbitmq . . . . . $with_librabbitmq])
+ AC_MSG_RESULT([    libriemann-client . . $with_libriemann_client])
+ AC_MSG_RESULT([    librdkafka  . . . . . $with_librdkafka])
+ AC_MSG_RESULT([    librouteros . . . . . $with_librouteros])
+ AC_MSG_RESULT([    librrd  . . . . . . . $with_librrd])
+ AC_MSG_RESULT([    libsensors  . . . . . $with_libsensors])
+ AC_MSG_RESULT([    libsigrok   . . . . . $with_libsigrok])
+ AC_MSG_RESULT([    libstatgrab . . . . . $with_libstatgrab])
+ AC_MSG_RESULT([    libtokyotyrant  . . . $with_libtokyotyrant])
+ AC_MSG_RESULT([    libudev . . . . . . . $with_libudev])
+ AC_MSG_RESULT([    libupsclient  . . . . $with_libupsclient])
+ AC_MSG_RESULT([    libvarnish  . . . . . $with_libvarnish])
+ AC_MSG_RESULT([    libvirt . . . . . . . $with_libvirt])
+ AC_MSG_RESULT([    libxenctrl  . . . . . $with_libxenctrl])
+ AC_MSG_RESULT([    libxml2 . . . . . . . $with_libxml2])
+ AC_MSG_RESULT([    libxmms . . . . . . . $with_libxmms])
+ AC_MSG_RESULT([    libyajl . . . . . . . $with_libyajl])
+ AC_MSG_RESULT([    oracle  . . . . . . . $with_oracle])
+ AC_MSG_RESULT([    protobuf-c  . . . . . $have_protoc_c])
+ AC_MSG_RESULT([    protoc 3  . . . . . . $protoc3])
+ AC_MSG_RESULT([    python  . . . . . . . $with_python])
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([  Features:])
+ AC_MSG_RESULT([    daemon mode . . . . . $enable_daemon])
+ AC_MSG_RESULT([    debug . . . . . . . . $enable_debug])
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([  Bindings:])
+ AC_MSG_RESULT([    perl  . . . . . . . . $with_perl_bindings])
+ AC_MSG_RESULT()
+ AC_MSG_RESULT([  Modules:])
+ AC_MSG_RESULT([    aggregation . . . . . $enable_aggregation])
+ AC_MSG_RESULT([    amqp    . . . . . . . $enable_amqp])
+ AC_MSG_RESULT([    apache  . . . . . . . $enable_apache])
+ AC_MSG_RESULT([    apcups  . . . . . . . $enable_apcups])
+ AC_MSG_RESULT([    apple_sensors . . . . $enable_apple_sensors])
+ AC_MSG_RESULT([    aquaero . . . . . . . $enable_aquaero])
+ AC_MSG_RESULT([    ascent  . . . . . . . $enable_ascent])
+ AC_MSG_RESULT([    barometer . . . . . . $enable_barometer])
+ AC_MSG_RESULT([    battery . . . . . . . $enable_battery])
+ AC_MSG_RESULT([    bind  . . . . . . . . $enable_bind])
+ AC_MSG_RESULT([    ceph  . . . . . . . . $enable_ceph])
+ AC_MSG_RESULT([    cgroups . . . . . . . $enable_cgroups])
+ AC_MSG_RESULT([    chrony. . . . . . . . $enable_chrony])
+ AC_MSG_RESULT([    conntrack . . . . . . $enable_conntrack])
+ AC_MSG_RESULT([    contextswitch . . . . $enable_contextswitch])
+ AC_MSG_RESULT([    cpu . . . . . . . . . $enable_cpu])
+ AC_MSG_RESULT([    cpufreq . . . . . . . $enable_cpufreq])
++AC_MSG_RESULT([    cpusleep  . . . . . . $enable_cpusleep])
+ AC_MSG_RESULT([    csv . . . . . . . . . $enable_csv])
+ AC_MSG_RESULT([    curl  . . . . . . . . $enable_curl])
+ AC_MSG_RESULT([    curl_json . . . . . . $enable_curl_json])
+ AC_MSG_RESULT([    curl_xml  . . . . . . $enable_curl_xml])
+ AC_MSG_RESULT([    dbi . . . . . . . . . $enable_dbi])
+ AC_MSG_RESULT([    df  . . . . . . . . . $enable_df])
+ AC_MSG_RESULT([    disk  . . . . . . . . $enable_disk])
+ AC_MSG_RESULT([    dns . . . . . . . . . $enable_dns])
+ AC_MSG_RESULT([    drbd  . . . . . . . . $enable_drbd])
+ AC_MSG_RESULT([    email . . . . . . . . $enable_email])
+ AC_MSG_RESULT([    entropy . . . . . . . $enable_entropy])
+ AC_MSG_RESULT([    ethstat . . . . . . . $enable_ethstat])
+ AC_MSG_RESULT([    exec  . . . . . . . . $enable_exec])
+ AC_MSG_RESULT([    fhcount . . . . . . . $enable_fhcount])
+ AC_MSG_RESULT([    filecount . . . . . . $enable_filecount])
+ AC_MSG_RESULT([    fscache . . . . . . . $enable_fscache])
+ AC_MSG_RESULT([    gmond . . . . . . . . $enable_gmond])
+ AC_MSG_RESULT([    grpc  . . . . . . . . $enable_grpc])
+ AC_MSG_RESULT([    hddtemp . . . . . . . $enable_hddtemp])
+ AC_MSG_RESULT([    interface . . . . . . $enable_interface])
+ AC_MSG_RESULT([    ipc . . . . . . . . . $enable_ipc])
+ AC_MSG_RESULT([    ipmi  . . . . . . . . $enable_ipmi])
+ AC_MSG_RESULT([    iptables  . . . . . . $enable_iptables])
+ AC_MSG_RESULT([    ipvs  . . . . . . . . $enable_ipvs])
+ AC_MSG_RESULT([    irq . . . . . . . . . $enable_irq])
+ AC_MSG_RESULT([    java  . . . . . . . . $enable_java])
+ AC_MSG_RESULT([    load  . . . . . . . . $enable_load])
+ AC_MSG_RESULT([    logfile . . . . . . . $enable_logfile])
+ AC_MSG_RESULT([    log_logstash  . . . . $enable_log_logstash])
+ AC_MSG_RESULT([    lpar  . . . . . . . . $enable_lpar])
+ AC_MSG_RESULT([    lvm . . . . . . . . . $enable_lvm])
+ AC_MSG_RESULT([    madwifi . . . . . . . $enable_madwifi])
+ AC_MSG_RESULT([    match_empty_counter . $enable_match_empty_counter])
+ AC_MSG_RESULT([    match_hashed  . . . . $enable_match_hashed])
+ AC_MSG_RESULT([    match_regex . . . . . $enable_match_regex])
+ AC_MSG_RESULT([    match_timediff  . . . $enable_match_timediff])
+ AC_MSG_RESULT([    match_value . . . . . $enable_match_value])
+ AC_MSG_RESULT([    mbmon . . . . . . . . $enable_mbmon])
+ AC_MSG_RESULT([    md  . . . . . . . . . $enable_md])
+ AC_MSG_RESULT([    memcachec . . . . . . $enable_memcachec])
+ AC_MSG_RESULT([    memcached . . . . . . $enable_memcached])
+ AC_MSG_RESULT([    memory  . . . . . . . $enable_memory])
+ AC_MSG_RESULT([    mic . . . . . . . . . $enable_mic])
+ AC_MSG_RESULT([    modbus  . . . . . . . $enable_modbus])
+ AC_MSG_RESULT([    mqtt  . . . . . . . . $enable_mqtt])
+ AC_MSG_RESULT([    multimeter  . . . . . $enable_multimeter])
+ AC_MSG_RESULT([    mysql . . . . . . . . $enable_mysql])
+ AC_MSG_RESULT([    netapp  . . . . . . . $enable_netapp])
+ AC_MSG_RESULT([    netlink . . . . . . . $enable_netlink])
+ AC_MSG_RESULT([    network . . . . . . . $enable_network])
+ AC_MSG_RESULT([    nfs . . . . . . . . . $enable_nfs])
+ AC_MSG_RESULT([    nginx . . . . . . . . $enable_nginx])
+ AC_MSG_RESULT([    notify_desktop  . . . $enable_notify_desktop])
+ AC_MSG_RESULT([    notify_email  . . . . $enable_notify_email])
+ AC_MSG_RESULT([    notify_nagios . . . . $enable_notify_nagios])
+ AC_MSG_RESULT([    ntpd  . . . . . . . . $enable_ntpd])
+ AC_MSG_RESULT([    numa  . . . . . . . . $enable_numa])
+ AC_MSG_RESULT([    nut . . . . . . . . . $enable_nut])
+ AC_MSG_RESULT([    olsrd . . . . . . . . $enable_olsrd])
+ AC_MSG_RESULT([    onewire . . . . . . . $enable_onewire])
+ AC_MSG_RESULT([    openldap  . . . . . . $enable_openldap])
+ AC_MSG_RESULT([    openvpn . . . . . . . $enable_openvpn])
+ AC_MSG_RESULT([    oracle  . . . . . . . $enable_oracle])
+ AC_MSG_RESULT([    perl  . . . . . . . . $enable_perl])
+ AC_MSG_RESULT([    pf  . . . . . . . . . $enable_pf])
+ AC_MSG_RESULT([    pinba . . . . . . . . $enable_pinba])
+ AC_MSG_RESULT([    ping  . . . . . . . . $enable_ping])
+ AC_MSG_RESULT([    postgresql  . . . . . $enable_postgresql])
+ AC_MSG_RESULT([    powerdns  . . . . . . $enable_powerdns])
+ AC_MSG_RESULT([    processes . . . . . . $enable_processes])
+ AC_MSG_RESULT([    protocols . . . . . . $enable_protocols])
+ AC_MSG_RESULT([    python  . . . . . . . $enable_python])
+ AC_MSG_RESULT([    redis . . . . . . . . $enable_redis])
+ AC_MSG_RESULT([    routeros  . . . . . . $enable_routeros])
+ AC_MSG_RESULT([    rrdcached . . . . . . $enable_rrdcached])
+ AC_MSG_RESULT([    rrdtool . . . . . . . $enable_rrdtool])
+ AC_MSG_RESULT([    sensors . . . . . . . $enable_sensors])
+ AC_MSG_RESULT([    serial  . . . . . . . $enable_serial])
+ AC_MSG_RESULT([    sigrok  . . . . . . . $enable_sigrok])
+ AC_MSG_RESULT([    smart . . . . . . . . $enable_smart])
+ AC_MSG_RESULT([    snmp  . . . . . . . . $enable_snmp])
+ AC_MSG_RESULT([    statsd  . . . . . . . $enable_statsd])
+ AC_MSG_RESULT([    swap  . . . . . . . . $enable_swap])
+ AC_MSG_RESULT([    syslog  . . . . . . . $enable_syslog])
+ AC_MSG_RESULT([    table . . . . . . . . $enable_table])
+ AC_MSG_RESULT([    tail_csv  . . . . . . $enable_tail_csv])
+ AC_MSG_RESULT([    tail  . . . . . . . . $enable_tail])
+ AC_MSG_RESULT([    tape  . . . . . . . . $enable_tape])
+ AC_MSG_RESULT([    target_notification . $enable_target_notification])
+ AC_MSG_RESULT([    target_replace  . . . $enable_target_replace])
+ AC_MSG_RESULT([    target_scale  . . . . $enable_target_scale])
+ AC_MSG_RESULT([    target_set  . . . . . $enable_target_set])
+ AC_MSG_RESULT([    target_v5upgrade  . . $enable_target_v5upgrade])
+ AC_MSG_RESULT([    tcpconns  . . . . . . $enable_tcpconns])
+ AC_MSG_RESULT([    teamspeak2  . . . . . $enable_teamspeak2])
+ AC_MSG_RESULT([    ted . . . . . . . . . $enable_ted])
+ AC_MSG_RESULT([    thermal . . . . . . . $enable_thermal])
+ AC_MSG_RESULT([    threshold . . . . . . $enable_threshold])
+ AC_MSG_RESULT([    tokyotyrant . . . . . $enable_tokyotyrant])
+ AC_MSG_RESULT([    turbostat . . . . . . $enable_turbostat])
+ AC_MSG_RESULT([    unixsock  . . . . . . $enable_unixsock])
+ AC_MSG_RESULT([    uptime  . . . . . . . $enable_uptime])
+ AC_MSG_RESULT([    users . . . . . . . . $enable_users])
+ AC_MSG_RESULT([    uuid  . . . . . . . . $enable_uuid])
+ AC_MSG_RESULT([    varnish . . . . . . . $enable_varnish])
+ AC_MSG_RESULT([    virt  . . . . . . . . $enable_virt])
+ AC_MSG_RESULT([    vmem  . . . . . . . . $enable_vmem])
+ AC_MSG_RESULT([    vserver . . . . . . . $enable_vserver])
+ AC_MSG_RESULT([    wireless  . . . . . . $enable_wireless])
+ AC_MSG_RESULT([    write_graphite  . . . $enable_write_graphite])
+ AC_MSG_RESULT([    write_http  . . . . . $enable_write_http])
+ AC_MSG_RESULT([    write_kafka . . . . . $enable_write_kafka])
+ AC_MSG_RESULT([    write_log . . . . . . $enable_write_log])
+ AC_MSG_RESULT([    write_mongodb . . . . $enable_write_mongodb])
+ AC_MSG_RESULT([    write_redis . . . . . $enable_write_redis])
+ AC_MSG_RESULT([    write_riemann . . . . $enable_write_riemann])
+ AC_MSG_RESULT([    write_sensu . . . . . $enable_write_sensu])
+ AC_MSG_RESULT([    write_tsdb  . . . . . $enable_write_tsdb])
+ AC_MSG_RESULT([    xencpu  . . . . . . . $enable_xencpu])
+ AC_MSG_RESULT([    xmms  . . . . . . . . $enable_xmms])
+ AC_MSG_RESULT([    zfs_arc . . . . . . . $enable_zfs_arc])
+ AC_MSG_RESULT([    zone  . . . . . . . . $enable_zone])
+ AC_MSG_RESULT([    zookeeper . . . . . . $enable_zookeeper])
+ AC_MSG_RESULT()
  
  if test "x$dependency_error" = "xyes"; then
        AC_MSG_ERROR("Some plugins are missing dependencies - see the summary above for details")
diff --combined src/Makefile.am
@@@ -17,6 -17,12 +17,12 @@@ endi
  AM_CPPFLAGS += -DPLUGINDIR='"${pkglibdir}"'
  AM_CPPFLAGS += -DPKGDATADIR='"${pkgdatadir}"'
  
+ LOG_COMPILER = env VALGRIND="@VALGRIND@" $(abs_top_srcdir)/testwrapper.sh
+ V_PROTOC = $(v_protoc_@AM_V@)
+ v_protoc_ = $(v_protoc_@AM_DEFAULT_V@)
+ v_protoc_0 = @echo "  PROTOC  " $@;
  noinst_LTLIBRARIES =
  check_PROGRAMS =
  TESTS =
@@@ -53,11 -59,12 +59,12 @@@ sbin_PROGRAMS = collectdmo
  bin_PROGRAMS = collectd-nagios collectdctl collectd-tg
  
  collectdmon_SOURCES = collectdmon.c
- collectdmon_CPPFLAGS = $(AM_CPPFLAGS)
  
  collectd_nagios_SOURCES = collectd-nagios.c
- collectd_nagios_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/src/libcollectdclient/collectd -I$(top_builddir)/src/libcollectdclient/collectd
- collectd_nagios_LDADD =
+ collectd_nagios_CPPFLAGS = $(AM_CPPFLAGS) \
+       -I$(top_srcdir)/src/libcollectdclient/collectd \
+       -I$(top_builddir)/src/libcollectdclient/collectd
+ collectd_nagios_LDADD = libcollectdclient/libcollectdclient.la
  if BUILD_WITH_LIBSOCKET
  collectd_nagios_LDADD += -lsocket
  endif
@@@ -65,26 -72,28 +72,28 @@@ if BUILD_AI
  collectd_nagios_LDADD += -lm
  endif
  
- collectd_nagios_LDADD += libcollectdclient/libcollectdclient.la
- collectd_nagios_DEPENDENCIES = libcollectdclient/libcollectdclient.la
  
  collectdctl_SOURCES = collectdctl.c
- collectdctl_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/src/libcollectdclient/collectd -I$(top_builddir)/src/libcollectdclient/collectd
- collectdctl_LDADD =
+ collectdctl_CPPFLAGS = $(AM_CPPFLAGS) \
+       -I$(top_srcdir)/src/libcollectdclient/collectd \
+       -I$(top_builddir)/src/libcollectdclient/collectd
+ collectdctl_LDADD = libcollectdclient/libcollectdclient.la
  if BUILD_WITH_LIBSOCKET
  collectdctl_LDADD += -lsocket
  endif
  if BUILD_AIX
  collectdctl_LDADD += -lm
  endif
- collectdctl_LDADD += libcollectdclient/libcollectdclient.la
- collectdctl_DEPENDENCIES = libcollectdclient/libcollectdclient.la
  
  collectd_tg_SOURCES = collectd-tg.c
  collectd_tg_CPPFLAGS = $(AM_CPPFLAGS) \
-                      -I$(top_srcdir)/src/libcollectdclient/collectd -I$(top_builddir)/src/libcollectdclient/collectd
- collectd_tg_LDADD = daemon/libheap.la
+       -I$(top_srcdir)/src/libcollectdclient/collectd \
+       -I$(top_builddir)/src/libcollectdclient/collectd
+ collectd_tg_LDADD = \
+       $(PTHREAD_LIBS) \
+       daemon/libheap.la \
+       libcollectdclient/libcollectdclient.la
  if BUILD_WITH_LIBSOCKET
  collectd_tg_LDADD += -lsocket
  endif
@@@ -94,11 -103,6 +103,6 @@@ endi
  if BUILD_AIX
  collectd_tg_LDADD += -lm
  endif
- if BUILD_WITH_LIBPTHREAD
- collectd_tg_LDADD += $(PTHREAD_LIBS)
- endif
- collectd_tg_LDADD += libcollectdclient/libcollectdclient.la
- collectd_tg_DEPENDENCIES = libcollectdclient/libcollectdclient.la
  
  
  pkglib_LTLIBRARIES =
  BUILT_SOURCES =
  CLEANFILES =
  
+ if HAVE_PROTOC3
+ if HAVE_GRPC_CPP
+ BUILT_SOURCES += collectd.grpc.pb.cc collectd.pb.cc types.pb.cc
+ CLEANFILES += collectd.grpc.pb.cc collectd.pb.cc types.pb.cc \
+               collectd.grpc.pb.h collectd.pb.h types.pb.h
+ collectd.grpc.pb.cc: $(top_srcdir)/proto/collectd.proto $(top_srcdir)/proto/types.proto
+       $(V_PROTOC)@PROTOC@ -I$(top_srcdir)/proto \
+               --grpc_out=$(builddir) --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN) $<
+ collectd.pb.cc: $(top_srcdir)/proto/collectd.proto $(top_srcdir)/proto/types.proto
+       $(V_PROTOC)@PROTOC@ -I$(top_srcdir)/proto --cpp_out=$(builddir) $<
+ types.pb.cc: $(top_srcdir)/proto/types.proto
+       $(V_PROTOC)@PROTOC@ -I$(top_srcdir)/proto --cpp_out=$(builddir) $<
+ endif
+ endif
  if BUILD_PLUGIN_AGGREGATION
  pkglib_LTLIBRARIES += aggregation.la
  aggregation_la_SOURCES = aggregation.c \
@@@ -130,12 -152,8 +152,8 @@@ if BUILD_PLUGIN_APACH
  pkglib_LTLIBRARIES += apache.la
  apache_la_SOURCES = apache.c
  apache_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- apache_la_CFLAGS = $(AM_CFLAGS)
- apache_la_LIBADD =
- if BUILD_WITH_LIBCURL
- apache_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
- apache_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
- endif
+ apache_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
+ apache_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS)
  endif
  
  if BUILD_PLUGIN_APCUPS
@@@ -151,16 -169,15 +169,15 @@@ endi
  if BUILD_PLUGIN_APPLE_SENSORS
  pkglib_LTLIBRARIES += apple_sensors.la
  apple_sensors_la_SOURCES = apple_sensors.c
- apple_sensors_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- apple_sensors_la_LDFLAGS += -framework IOKit
+ apple_sensors_la_LDFLAGS = $(PLUGIN_LDFLAGS) -framework IOKit
  endif
  
  if BUILD_PLUGIN_AQUAERO
  pkglib_LTLIBRARIES += aquaero.la
  aquaero_la_SOURCES = aquaero.c
- aquaero_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  aquaero_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBAQUAERO5_CFLAGS)
- aquaero_la_LIBADD = $(BUILD_WITH_LIBAQUAERO5_LDFLAGS) -laquaero5
+ aquaero_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBAQUAERO5_LDFLAGS)
+ aquaero_la_LIBADD = -laquaero5
  endif
  
  if BUILD_PLUGIN_ASCENT
@@@ -183,7 -200,6 +200,6 @@@ if BUILD_PLUGIN_BATTER
  pkglib_LTLIBRARIES += battery.la
  battery_la_SOURCES = battery.c
  battery_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- battery_la_LIBADD =
  if BUILD_WITH_LIBIOKIT
  battery_la_LDFLAGS += -framework IOKit
  endif
@@@ -214,6 -230,12 +230,12 @@@ cgroups_la_LDFLAGS = $(PLUGIN_LDFLAGS
  cgroups_la_LIBADD = libmount.la
  endif
  
+ if BUILD_PLUGIN_CHRONY
+ pkglib_LTLIBRARIES += chrony.la
+ chrony_la_SOURCES = chrony.c
+ chrony_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ endif
  if BUILD_PLUGIN_CONNTRACK
  pkglib_LTLIBRARIES += conntrack.la
  conntrack_la_SOURCES = conntrack.c
@@@ -257,12 -279,6 +279,12 @@@ cpufreq_la_SOURCES = cpufreq.
  cpufreq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
 +if BUILD_PLUGIN_CPUSLEEP
 +pkglib_LTLIBRARIES += cpusleep.la
 +cpusleep_la_SOURCES = cpusleep.c
 +cpusleep_la_LDFLAGS = $(PLUGIN_LDFLAGS)
 +endif
 +
  if BUILD_PLUGIN_CSV
  pkglib_LTLIBRARIES += csv.la
  csv_la_SOURCES = csv.c
@@@ -271,32 -287,27 +293,27 @@@ endi
  
  if BUILD_PLUGIN_CURL
  pkglib_LTLIBRARIES += curl.la
- curl_la_SOURCES = curl.c
+ curl_la_SOURCES = curl.c \
+                 utils_curl_stats.c utils_curl_stats.h
  curl_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- curl_la_CFLAGS = $(AM_CFLAGS)
- curl_la_LIBADD =
- if BUILD_WITH_LIBCURL
- curl_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
- curl_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
- endif
+ curl_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
+ curl_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS)
  endif
  
  if BUILD_PLUGIN_CURL_JSON
  pkglib_LTLIBRARIES += curl_json.la
- curl_json_la_SOURCES = curl_json.c
- curl_json_la_CFLAGS = $(AM_CFLAGS)
- curl_json_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBYAJL_LDFLAGS)
+ curl_json_la_SOURCES = curl_json.c \
+                 utils_curl_stats.c utils_curl_stats.h
+ curl_json_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
  curl_json_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBYAJL_CPPFLAGS)
- curl_json_la_LIBADD = $(BUILD_WITH_LIBYAJL_LIBS)
- if BUILD_WITH_LIBCURL
- curl_json_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
- curl_json_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
- endif
+ curl_json_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBYAJL_LDFLAGS)
+ curl_json_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS) $(BUILD_WITH_LIBYAJL_LIBS)
  endif
  
  if BUILD_PLUGIN_CURL_XML
  pkglib_LTLIBRARIES += curl_xml.la
- curl_xml_la_SOURCES = curl_xml.c
+ curl_xml_la_SOURCES = curl_xml.c \
+                 utils_curl_stats.c utils_curl_stats.h
  curl_xml_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  curl_xml_la_CFLAGS = $(AM_CFLAGS) \
                $(BUILD_WITH_LIBCURL_CFLAGS) $(BUILD_WITH_LIBXML2_CFLAGS)
@@@ -355,7 -366,7 +372,7 @@@ if BUILD_PLUGIN_DN
  pkglib_LTLIBRARIES += dns.la
  dns_la_SOURCES = dns.c utils_dns.c utils_dns.h
  dns_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- dns_la_LIBADD = $(PTHREAD_LIBS) -lpcap
+ dns_la_LIBADD = -lpcap
  endif
  
  if BUILD_PLUGIN_DRBD
@@@ -368,7 -379,6 +385,6 @@@ if BUILD_PLUGIN_EMAI
  pkglib_LTLIBRARIES += email.la
  email_la_SOURCES = email.c
  email_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- email_la_LIBADD = $(PTHREAD_LIBS)
  endif
  
  if BUILD_PLUGIN_ENTROPY
@@@ -384,7 -394,6 +400,6 @@@ exec_la_SOURCES = exec.c 
                  utils_cmd_putval.c utils_cmd_putval.h \
                  utils_parse_option.h utils_parse_option.c
  exec_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- exec_la_LIBADD = $(PTHREAD_LIBS)
  endif
  
  if BUILD_PLUGIN_ETHSTAT
@@@ -413,6 -422,16 +428,16 @@@ gmond_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(
  gmond_la_LIBADD = $(GANGLIA_LIBS)
  endif
  
+ if BUILD_PLUGIN_GRPC
+ pkglib_LTLIBRARIES += grpc.la
+ grpc_la_SOURCES = grpc.cc
+ nodist_grpc_la_SOURCES = collectd.grpc.pb.cc collectd.pb.cc types.pb.cc
+ grpc_la_CPPFLAGS = $(AM_CPPFLAGS) -std=c++11
+ grpc_la_CXXFLAGS = $(AM_CXXFLAGS) -std=c++11
+ grpc_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ grpc_la_LIBADD = -lgrpc++ -lgrpc -lgpr -lprotobuf
+ endif
  if BUILD_PLUGIN_HDDTEMP
  pkglib_LTLIBRARIES += hddtemp.la
  hddtemp_la_SOURCES = hddtemp.c
@@@ -448,7 -467,6 +473,6 @@@ endif # BUILD_PLUGIN_INTERFAC
  if BUILD_PLUGIN_IPC
  pkglib_LTLIBRARIES += ipc.la
  ipc_la_SOURCES = ipc.c
- ipc_la_CFLAGS = $(AM_CFLAGS)
  ipc_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
@@@ -471,10 -489,9 +495,9 @@@ endi
  if BUILD_PLUGIN_IPVS
  pkglib_LTLIBRARIES += ipvs.la
  ipvs_la_SOURCES = ipvs.c
- if IP_VS_H_NEEDS_KERNEL_CFLAGS
- ipvs_la_CFLAGS = $(AM_CFLAGS) $(KERNEL_CFLAGS)
- else
  ipvs_la_CFLAGS = $(AM_CFLAGS)
+ if IP_VS_H_NEEDS_KERNEL_CFLAGS
+ ipvs_la_CFLAGS += $(KERNEL_CFLAGS)
  endif
  ipvs_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
@@@ -491,7 -508,7 +514,7 @@@ java_la_SOURCES = java.
  java_la_CPPFLAGS = $(AM_CPPFLAGS) $(JAVA_CPPFLAGS)
  java_la_CFLAGS = $(AM_CFLAGS) $(JAVA_CFLAGS)
  java_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(JAVA_LDFLAGS)
- java_la_LIBADD = $(PTHREAD_LIBS) $(JAVA_LIBS)
+ java_la_LIBADD = $(JAVA_LIBS)
  endif
  
  if BUILD_PLUGIN_LOAD
@@@ -518,7 -535,6 +541,6 @@@ endi
  if BUILD_PLUGIN_LOG_LOGSTASH
  pkglib_LTLIBRARIES += log_logstash.la
  log_logstash_la_SOURCES = log_logstash.c
- log_logstash_la_CFLAGS = $(AM_CFLAGS)
  log_logstash_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBYAJL_LDFLAGS)
  log_logstash_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBYAJL_CPPFLAGS)
  log_logstash_la_LIBADD = $(BUILD_WITH_LIBYAJL_LIBS)
@@@ -534,7 -550,8 +556,8 @@@ endi
  if BUILD_PLUGIN_LVM
  pkglib_LTLIBRARIES += lvm.la
  lvm_la_SOURCES = lvm.c
- lvm_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ lvm_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBLVM2APP_CPPFLAGS)
+ lvm_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBLVM2APP_LDFLAGS)
  lvm_la_LIBADD = $(BUILD_WITH_LIBLVM2APP_LIBS)
  endif
  
@@@ -662,13 -679,9 +685,9 @@@ endi
  if BUILD_PLUGIN_MYSQL
  pkglib_LTLIBRARIES += mysql.la
  mysql_la_SOURCES = mysql.c
+ mysql_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBMYSQL_CFLAGS)
  mysql_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- mysql_la_CFLAGS = $(AM_CFLAGS)
- mysql_la_LIBADD =
- if BUILD_WITH_LIBMYSQL
- mysql_la_CFLAGS += $(BUILD_WITH_LIBMYSQL_CFLAGS)
- mysql_la_LIBADD += $(BUILD_WITH_LIBMYSQL_LIBS)
- endif
+ mysql_la_LIBADD = $(BUILD_WITH_LIBMYSQL_LIBS)
  endif
  
  if BUILD_PLUGIN_NETAPP
@@@ -693,7 -706,7 +712,7 @@@ network_la_SOURCES = network.c network.
                     utils_fbhash.c utils_fbhash.h
  network_la_CPPFLAGS = $(AM_CPPFLAGS)
  network_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- network_la_LIBADD = $(PTHREAD_LIBS)
+ network_la_LIBADD =
  if BUILD_WITH_LIBSOCKET
  network_la_LIBADD += -lsocket
  endif
@@@ -719,13 -732,9 +738,9 @@@ endi
  if BUILD_PLUGIN_NGINX
  pkglib_LTLIBRARIES += nginx.la
  nginx_la_SOURCES = nginx.c
- nginx_la_CFLAGS = $(AM_CFLAGS)
- nginx_la_LIBADD =
+ nginx_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
  nginx_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- if BUILD_WITH_LIBCURL
- nginx_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
- nginx_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
- endif
+ nginx_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS)
  endif
  
  if BUILD_PLUGIN_NOTIFY_DESKTOP
@@@ -740,7 -749,7 +755,7 @@@ if BUILD_PLUGIN_NOTIFY_EMAI
  pkglib_LTLIBRARIES += notify_email.la
  notify_email_la_SOURCES = notify_email.c
  notify_email_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- notify_email_la_LIBADD = $(PTHREAD_LIBS) -lesmtp -lssl -lcrypto
+ notify_email_la_LIBADD = -lesmtp -lssl -lcrypto
  endif
  
  if BUILD_PLUGIN_NOTIFY_NAGIOS
@@@ -770,7 -779,7 +785,7 @@@ pkglib_LTLIBRARIES += nut.l
  nut_la_SOURCES = nut.c
  nut_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBUPSCLIENT_CFLAGS)
  nut_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- nut_la_LIBADD = $(PTHREAD_LIBS) $(BUILD_WITH_LIBUPSCLIENT_LIBS)
+ nut_la_LIBADD = $(BUILD_WITH_LIBUPSCLIENT_LIBS)
  endif
  
  if BUILD_PLUGIN_OLSRD
@@@ -786,7 -795,6 +801,6 @@@ endi
  if BUILD_PLUGIN_ONEWIRE
  pkglib_LTLIBRARIES += onewire.la
  onewire_la_SOURCES = onewire.c
- onewire_la_CFLAGS = $(AM_CFLAGS)
  onewire_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBOWCAPI_CPPFLAGS)
  onewire_la_LIBADD = $(BUILD_WITH_LIBOWCAPI_LIBS)
  onewire_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBOWCAPI_LDFLAGS)
@@@ -795,15 -803,14 +809,14 @@@ endi
  if BUILD_PLUGIN_OPENLDAP
  pkglib_LTLIBRARIES += openldap.la
  openldap_la_SOURCES = openldap.c
- openldap_la_LDFLAGS = -module -avoid-version $(BUILD_WITH_LIBLDAP_LDFLAGS)
- openldap_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBLDAP_CPPFLAGS)
+ openldap_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBLDAP_CPPFLAGS)
+ openldap_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBLDAP_LDFLAGS)
  openldap_la_LIBADD = -lldap
  endif
  
  if BUILD_PLUGIN_OPENVPN
  pkglib_LTLIBRARIES += openvpn.la
  openvpn_la_SOURCES = openvpn.c
- openvpn_la_CFLAGS = $(AM_CFLAGS)
  openvpn_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
@@@ -811,8 -818,7 +824,7 @@@ if BUILD_PLUGIN_ORACL
  pkglib_LTLIBRARIES += oracle.la
  oracle_la_SOURCES = oracle.c \
        utils_db_query.c utils_db_query.h
- oracle_la_CFLAGS = $(AM_CFLAGS)
- oracle_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_ORACLE_CFLAGS)
+ oracle_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_ORACLE_CPPFLAGS)
  oracle_la_LIBADD = $(BUILD_WITH_ORACLE_LIBS)
  oracle_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
@@@ -976,16 -982,13 +988,13 @@@ if BUILD_WITH_LIBNETSNM
  snmp_la_CFLAGS += $(BUILD_WITH_LIBSNMP_CFLAGS)
  snmp_la_LIBADD += $(BUILD_WITH_LIBSNMP_LIBS)
  endif
- if BUILD_WITH_LIBPTHREAD
- snmp_la_LIBADD += $(PTHREAD_LIBS)
- endif
  endif
  
  if BUILD_PLUGIN_STATSD
  pkglib_LTLIBRARIES += statsd.la
  statsd_la_SOURCES = statsd.c
  statsd_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- statsd_la_LIBADD = $(PTHREAD_LIBS) liblatency.la -lm
+ statsd_la_LIBADD = liblatency.la -lm
  endif
  
  if BUILD_PLUGIN_SWAP
@@@ -1136,7 -1139,6 +1145,6 @@@ unixsock_la_SOURCES = unixsock.c 
                      utils_cmd_putnotif.h utils_cmd_putnotif.c \
                      utils_parse_option.h utils_parse_option.c
  unixsock_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- unixsock_la_LIBADD = $(PTHREAD_LIBS)
  endif
  
  if BUILD_PLUGIN_UPTIME
@@@ -1220,13 -1222,9 +1228,9 @@@ if BUILD_PLUGIN_WRITE_HTT
  pkglib_LTLIBRARIES += write_http.la
  write_http_la_SOURCES = write_http.c \
                        utils_format_json.c utils_format_json.h
+ write_http_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
  write_http_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- write_http_la_CFLAGS = $(AM_CFLAGS)
- write_http_la_LIBADD =
- if BUILD_WITH_LIBCURL
- write_http_la_CFLAGS += $(BUILD_WITH_LIBCURL_CFLAGS)
- write_http_la_LIBADD += $(BUILD_WITH_LIBCURL_LIBS)
- endif
+ write_http_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS)
  endif
  
  if BUILD_PLUGIN_WRITE_KAFKA
@@@ -1260,7 -1258,7 +1264,7 @@@ if BUILD_PLUGIN_WRITE_REDI
  pkglib_LTLIBRARIES += write_redis.la
  write_redis_la_SOURCES = write_redis.c
  write_redis_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBHIREDIS_LDFLAGS)
- write_redis_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBHIREDIS_CPPFLAGS)
+ write_redis_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBHIREDIS_CPPFLAGS)
  write_redis_la_LIBADD = -lhiredis
  endif
  
@@@ -1286,7 -1284,8 +1290,8 @@@ endi
  if BUILD_PLUGIN_XENCPU
  pkglib_LTLIBRARIES += xencpu.la
  xencpu_la_SOURCES = xencpu.c
- xencpu_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ xencpu_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBXENCTL_CPPFLAGS)
+ xencpu_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(LIBXENCTL_LDFLAGS)
  xencpu_la_LIBADD = -lxenctrl
  endif
  
@@@ -1301,17 -1300,12 +1306,12 @@@ endi
  if BUILD_PLUGIN_ZFS_ARC
  pkglib_LTLIBRARIES += zfs_arc.la
  zfs_arc_la_SOURCES = zfs_arc.c
- zfs_arc_la_CFLAGS = $(AM_CFLAGS)
  zfs_arc_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  if BUILD_FREEBSD
  zfs_arc_la_LIBADD = -lm
- else
- if BUILD_LINUX
- # zfs_arc requires no library on linux
- else
- # solaris
- zfs_arc_la_LIBADD = -lkstat
  endif
+ if BUILD_SOLARIS
+ zfs_arc_la_LIBADD = -lkstat
  endif
  endif
  
@@@ -1326,7 -1320,6 +1326,6 @@@ BUILT_SOURCES += $(dist_man_MANS
  if BUILD_PLUGIN_ZONE
  pkglib_LTLIBRARIES += zone.la
  zone_la_SOURCES = zone.c
- zone_la_CFLAGS = $(AM_CFLAGS)
  zone_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
@@@ -1346,11 -1339,7 +1345,7 @@@ dist_man_MANS = collectd.1 
                collectd-unixsock.5 \
                types.db.5
  
- #collectd_1_SOURCES = collectd.pod
- EXTRA_DIST = types.db
- EXTRA_DIST +=   collectd.conf.pod \
+ EXTRA_DIST =  collectd.conf.pod \
                collectd-email.pod \
                collectd-exec.pod \
                collectdctl.pod \
                collectd-threshold.pod \
                collectd-unixsock.pod \
                postgresql_default.conf \
-               types.db.pod
+               types.db \
+               types.db.pod \
+               valgrind.FreeBSD.suppress
+ AM_V_POD2MAN_C = $(am__v_POD2MAN_C_@AM_V@)
+ am__v_POD2MAN_C_ = $(am__v_POD2MAN_C_@AM_DEFAULT_V@)
+ am__v_POD2MAN_C_0 = @echo "  POD2MAN " $@;
+ am__v_POD2MAN_C_1 =
  
  .pod.1:
-       pod2man --release=$(VERSION) --center=$(PACKAGE) $< \
+       $(AM_V_POD2MAN_C)pod2man --release=$(VERSION) --center=$(PACKAGE) $< \
                >.pod2man.tmp.$$$$ 2>/dev/null && mv -f .pod2man.tmp.$$$$ $@ || true
        @if grep '\<POD ERRORS\>' $@ >/dev/null 2>&1; \
        then \
        fi
  
  .pod.5:
-       pod2man --section=5 --release=$(VERSION) --center=$(PACKAGE) $< \
+       $(AM_V_POD2MAN_C)pod2man --section=5 --release=$(VERSION) --center=$(PACKAGE) $< \
                >.pod2man.tmp.$$$$ 2>/dev/null && mv -f .pod2man.tmp.$$$$ $@ || true
        @if grep '\<POD ERRORS\>' $@ >/dev/null 2>&1; \
        then \
  
  AM_V_PROTOC_C = $(am__v_PROTOC_C_@AM_V@)
  am__v_PROTOC_C_ = $(am__v_PROTOC_C_@AM_DEFAULT_V@)
- am__v_PROTOC_C_0 = @echo "  PROTOC-C    " $@;
+ am__v_PROTOC_C_0 = @echo "  PROTOC-C" $@;
  am__v_PROTOC_C_1 =
  
  # Protocol buffer for the "pinba" plugin.
diff --combined src/collectd.conf.in
  #@BUILD_PLUGIN_BIND_TRUE@LoadPlugin bind
  #@BUILD_PLUGIN_CEPH_TRUE@LoadPlugin ceph
  #@BUILD_PLUGIN_CGROUPS_TRUE@LoadPlugin cgroups
+ #@BUILD_PLUGIN_CHRONY_TRUE@LoadPlugin chrony
  #@BUILD_PLUGIN_CONNTRACK_TRUE@LoadPlugin conntrack
  #@BUILD_PLUGIN_CONTEXTSWITCH_TRUE@LoadPlugin contextswitch
  @BUILD_PLUGIN_CPU_TRUE@@BUILD_PLUGIN_CPU_TRUE@LoadPlugin cpu
  #@BUILD_PLUGIN_CPUFREQ_TRUE@LoadPlugin cpufreq
 +#@BUILD_PLUGIN_CPUSLEEP_TRUE@LoadPlugin cpusleep
  @LOAD_PLUGIN_CSV@LoadPlugin csv
  #@BUILD_PLUGIN_CURL_TRUE@LoadPlugin curl
  #@BUILD_PLUGIN_CURL_JSON_TRUE@LoadPlugin curl_json
  #@BUILD_PLUGIN_FILECOUNT_TRUE@LoadPlugin filecount
  #@BUILD_PLUGIN_FSCACHE_TRUE@LoadPlugin fscache
  #@BUILD_PLUGIN_GMOND_TRUE@LoadPlugin gmond
+ #@BUILD_PLUGIN_GRPC_TRUE@LoadPlugin grpc
  #@BUILD_PLUGIN_HDDTEMP_TRUE@LoadPlugin hddtemp
  @BUILD_PLUGIN_INTERFACE_TRUE@@BUILD_PLUGIN_INTERFACE_TRUE@LoadPlugin interface
  #@BUILD_PLUGIN_IPC_TRUE@LoadPlugin ipc
  #  </Daemon>
  #</Plugin>
  
+ #<Plugin chrony>
+ #     Host    "localhost"
+ #     Port    "323"
+ #     Timeout "2"
+ #</Plugin>
  #<Plugin cgroups>
  #  CGroup "libvirt"
  #  IgnoreSelected false
  #  </Metric>
  #</Plugin>
  
+ #<Plugin grpc>
+ #     WorkerThreads 5
+ #     <Listen "0.0.0.0" "50051">
+ #             EnableSSL true
+ #             SSLRootCerts "/path/to/root.pem"
+ #             SSLServerCert "/path/to/server.pem"
+ #             SSLServerKey "/path/to/server.key"
+ #     </Listen>
+ #</Plugin>
  #<Plugin hddtemp>
  #  Host "127.0.0.1"
  #  Port "7634"
diff --combined src/collectd.conf.pod
@@@ -404,13 -404,13 +404,13 @@@ There are a couple of limitations you s
  
  =over 4
  
- =item
+ =item *
  
  The I<Type> cannot be left unspecified, because it is not reasonable to add
  apples to oranges. Also, the internal lookup structure won't work if you try
  to group by type.
  
- =item
+ =item *
  
  There must be at least one unspecified, ungrouped field. Otherwise nothing
  will be aggregated.
@@@ -485,19 -485,19 +485,19 @@@ This will create the files
  
  =over 4
  
- =item
+ =item *
  
  foo.example.com/cpu-even-average/cpu-idle
  
- =item
+ =item *
  
  foo.example.com/cpu-even-average/cpu-system
  
- =item
+ =item *
  
  foo.example.com/cpu-even-average/cpu-user
  
- =item
+ =item *
  
  ...
  
@@@ -1361,6 -1361,32 +1361,32 @@@ at all, B<all> cgroups are selected
  
  =back
  
+ =head2 Plugin C<chrony>
+ The C<chrony> plugin collects ntp data from a B<chronyd> server, such as clock
+ skew and per-peer stratum.
+ For talking to B<chronyd>, it mimics what the B<chronyc> control program does
+ on the wire.
+ Available configuration options for the C<chrony> plugin:
+ =over 4
+ =item B<Host> I<Hostname>
+ Hostname of the host running B<chronyd>. Defaults to B<localhost>.
+ =item B<Port> I<Port>
+ UDP-Port to connect to. Defaults to B<323>.
+ =item B<Timeout> I<Timeout>
+ Connection timeout in seconds. Defaults to B<2>.
+ =back
  =head2 Plugin C<conntrack>
  
  This plugin collects IP conntrack statistics.
@@@ -1381,11 -1407,11 +1407,11 @@@ as Jiffies, using the C<cpu> type. Two 
  
  =over 4
  
- =item
+ =item *
  
  Sum, per-state, over all CPUs installed in the system; and
  
- =item
+ =item *
  
  Sum, per-CPU, over all non-idle states of a CPU, creating an "active" state.
  
@@@ -1431,15 -1457,6 +1457,15 @@@ installed) to get the current CPU frequ
  sure B<cpufreqd> (L<http://cpufreqd.sourceforge.net/>) or a similar tool is
  installed and an "cpu governor" (that's a kernel module) is loaded.
  
 +=head2 Plugin C<cpusleep>
 +
 +This plugin doesn't have any options. It reads CLOCK_BOOTTIME and
 +CLOCK_MONOTONIC and reports the differences between these
 +clocks. Since BOOTTIME clock increments while device is suspended and
 +MONOTONIC clock does not, the derivative of the difference between
 +these clocks gives the relative amount of time the device has spent in
 +suspend state. The recorded value is in milliseconds / seconds.
 +
  =head2 Plugin C<csv>
  
  =over 4
@@@ -1460,6 -1477,92 +1486,92 @@@ number
  
  =back
  
+ =head2 cURL Statistics
+ All cURL-based plugins support collection of generic, request-based
+ statistics. These are disabled by default and can be enabled selectively for
+ each page or URL queried from the curl, curl_json, or curl_xml plugins. See
+ the documentation of those plugins for specific information. This section
+ describes the available metrics that can be configured for each plugin. All
+ options are disabled by default.
+ See L<http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html> for more details.
+ =over 4
+ =item B<TotalTime> B<true|false>
+ Total time of the transfer, including name resolving, TCP connect, etc.
+ =item B<NamelookupTime> B<true|false>
+ Time it took from the start until name resolving was completed.
+ =item B<ConnectTime> B<true|false>
+ Time it took from the start until the connect to the remote host (or proxy)
+ was completed.
+ =item B<AppconnectTime> B<true|false>
+ Time it took from the start until the SSL/SSH connect/handshake to the remote
+ host was completed.
+ =item B<PretransferTime> B<true|false>
+ Time it took from the start until just before the transfer begins.
+ =item B<StarttransferTime> B<true|false>
+ Time it took from the start until the first byte was received.
+ =item B<RedirectTime> B<true|false>
+ Time it took for all redirection steps include name lookup, connect,
+ pre-transfer and transfer before final transaction was started.
+ =item B<RedirectCount> B<true|false>
+ The total number of redirections that were actually followed.
+ =item B<SizeUpload> B<true|false>
+ The total amount of bytes that were uploaded.
+ =item B<SizeDownload> B<true|false>
+ The total amount of bytes that were downloaded.
+ =item B<SpeedDownload> B<true|false>
+ The average download speed that curl measured for the complete download.
+ =item B<SpeedUpload> B<true|false>
+ The average upload speed that curl measured for the complete upload.
+ =item B<HeaderSize> B<true|false>
+ The total size of all the headers received.
+ =item B<RequestSize> B<true|false>
+ The total size of the issued requests.
+ =item B<ContentLengthDownload> B<true|false>
+ The content-length of the download.
+ =item B<ContentLengthUpload> B<true|false>
+ The specified size of the upload.
+ =item B<NumConnects> B<true|false>
+ The number of new connections that were created to achieve the transfer.
+ =back
  =head2 Plugin C<curl>
  
  The curl plugin uses the B<libcurl> (L<http://curl.haxx.se/>) to read web pages
@@@ -1560,11 -1663,21 +1672,21 @@@ Beware that requests will get aborted i
  B<Timeout> accordingly if you expect B<MeasureResponseTime> to report such slow
  requests.
  
+ This option is similar to enabling the B<TotalTime> statistic but it's
+ measured by collectd instead of cURL.
  =item B<MeasureResponseCode> B<true>|B<false>
  
  Measure response code for the request. If this setting is enabled, B<Match>
  blocks (see below) are optional. Disabled by default.
  
+ =item B<E<lt>StatisticsE<gt>>
+ One B<Statistics> block can be used to specify cURL statistics to be collected
+ for each request to the remote web site. See the section "cURL Statistics"
+ above for details. If this setting is enabled, B<Match> blocks (see below) are
+ optional.
  =item B<E<lt>MatchE<gt>>
  
  One or more B<Match> blocks that define how to match information in the data
@@@ -1677,6 -1790,12 +1799,12 @@@ URL. By default the global B<Interval> 
  These options behave exactly equivalent to the appropriate options of the
  I<cURL> plugin. Please see there for a detailed description.
  
+ =item B<E<lt>StatisticsE<gt>>
+ One B<Statistics> block can be used to specify cURL statistics to be collected
+ for each request to the remote URL. See the section "cURL Statistics" above
+ for details.
  =back
  
  The following options are valid within B<Key> blocks:
@@@ -1779,6 -1898,12 +1907,12 @@@ Examples
  These options behave exactly equivalent to the appropriate options of the
  I<cURL plugin>. Please see there for a detailed description.
  
+ =item B<E<lt>StatisticsE<gt>>
+ One B<Statistics> block can be used to specify cURL statistics to be collected
+ for each request to the remote URL. See the section "cURL Statistics" above
+ for details.
  =item E<lt>B<XPath> I<XPath-expression>E<gt>
  
  Within each B<URL> block, there must be one or more B<XPath> blocks. Each
@@@ -2506,6 -2631,51 +2640,51 @@@ source, this is optional. Otherwise th
  
  =back
  
+ =head2 Plugin C<grpc>
+ The I<grpc> plugin provides an RPC interface to submit values to or query
+ values from collectd based on the open source gRPC framework. It exposes an
+ end-point for dispatching values to the daemon.
+ The B<gRPC> homepage can be found at L<https://grpc.io/>.
+ =over 4
+ =item B<Listen> I<Host> I<Port>
+ The B<Listen> statement sets the network address to bind to. When multiple
+ statements are specified, the daemon will bind to all of them. If none are
+ specified, it defaults to B<0.0.0.0:50051>.
+ The argument I<Host> may be a hostname, an IPv4 address, or an IPv6 address.
+ Optionally, B<Listen> may be specified as a configuration block which
+ supports the following options:
+ =over 4
+ =item B<EnableSSL> I<true>|I<false>
+ Whether to enable SSL for incoming connections. Default: false.
+ =item B<SSLRootCerts> I<Filename>
+ =item B<SSLServerKey> I<Filename>
+ =item B<SSLServerCert> I<Filename>
+ Filenames specifying SSL certificate and key material to be used with SSL
+ connections.
+ =back
+ =item B<WorkerThreads> I<Num>
+ Number of threads to start for handling incoming connections. The default
+ value is B<5>.
+ =back
  =head2 Plugin C<hddtemp>
  
  To get values from B<hddtemp> collectd connects to B<localhost> (127.0.0.1),
@@@ -4509,11 -4679,11 +4688,11 @@@ Sets the I<command file> to write to. D
  
  =head2 Plugin C<ntpd>
  
- The C<ntpd> plugin collects per-peer ntpd data such as time offset and time
+ The C<ntpd> plugin collects per-peer ntp data such as time offset and time
  dispersion.
  
  For talking to B<ntpd>, it mimics what the B<ntpdc> control program does on
- wire - using B<mode 7> specific requests. This mode is deprecated with
the wire - using B<mode 7> specific requests. This mode is deprecated with
  newer B<ntpd> releases (4.2.7p230 and later). For the C<ntpd> plugin to work
  correctly with them, the ntp daemon must be explicitly configured to
  enable B<mode 7> (which is disabled by default). Refer to the I<ntp.conf(5)>
@@@ -5140,13 -5310,12 +5319,12 @@@ The B<Query> block defines one databas
  database definition. It accepts a single mandatory argument which specifies
  the name of the query. The names of all queries have to be unique (see the
  B<MinVersion> and B<MaxVersion> options below for an exception to this
- rule). The following configuration options are available to define the query:
+ rule).
  
- In each B<Query> block, there is one or more B<Result> blocks. B<Result>
- blocks define how to handle the values returned from the query. They define
- which column holds which value and how to dispatch that value to the daemon.
- Multiple B<Result> blocks may be used to extract multiple values from a single
- query.
+ In each B<Query> block, there is one or more B<Result> blocks. Multiple
+ B<Result> blocks may be used to extract multiple values from a single query.
+ The following configuration options are available to define the query:
  
  =over 4
  
@@@ -5164,7 -5333,7 +5342,7 @@@ allowed as long as a single non-empty c
  
  The returned lines will be handled separately one after another.
  
- =item B<Param> I<hostname>|I<database>|I<username>|I<interval>
+ =item B<Param> I<hostname>|I<database>|I<instance>|I<username>|I<interval>
  
  Specify the parameters which should be passed to the SQL query. The parameters
  are referred to in the SQL query as B<$1>, B<$2>, etc. in the same order as
@@@ -5201,6 -5370,34 +5379,34 @@@ specific or global B<Interval> options)
  Please note that parameters are only supported by PostgreSQL's protocol
  version 3 and above which was introduced in version 7.4 of PostgreSQL.
  
+ =item B<PluginInstanceFrom> I<column>
+ Specify how to create the "PluginInstance" for reporting this query results.
+ Only one column is supported. You may concatenate fields and string values in
+ the query statement to get the required results.
+ =item B<MinVersion> I<version>
+ =item B<MaxVersion> I<version>
+ Specify the minimum or maximum version of PostgreSQL that this query should be
+ used with. Some statistics might only be available with certain versions of
+ PostgreSQL. This allows you to specify multiple queries with the same name but
+ which apply to different versions, thus allowing you to use the same
+ configuration in a heterogeneous environment.
+ The I<version> has to be specified as the concatenation of the major, minor
+ and patch-level versions, each represented as two-decimal-digit numbers. For
+ example, version 8.2.3 will become 80203.
+ =back
+ The B<Result> block defines how to handle the values returned from the query.
+ It defines which column holds which value and how to dispatch that value to
+ the daemon.
+ =over 4
  =item B<Type> I<type>
  
  The I<type> name to be used when dispatching the values. The type describes
@@@ -5208,7 -5405,7 +5414,7 @@@ how to handle the data and where to sto
  details on types and their configuration. The number and type of values (as
  selected by the B<ValuesFrom> option) has to match the type of the given name.
  
- This option is required inside a B<Result> block.
+ This option is mandatory.
  
  =item B<InstancePrefix> I<prefix>
  
@@@ -5244,20 -5441,6 +5450,6 @@@ This option is required inside a B<Resu
  times. If multiple B<ValuesFrom> options are specified, the columns are read
  in the given order.
  
- =item B<MinVersion> I<version>
- =item B<MaxVersion> I<version>
- Specify the minimum or maximum version of PostgreSQL that this query should be
- used with. Some statistics might only be available with certain versions of
- PostgreSQL. This allows you to specify multiple queries with the same name but
- which apply to different versions, thus allowing you to use the same
- configuration in a heterogeneous environment.
- The I<version> has to be specified as the concatenation of the major, minor
- and patch-level versions, each represented as two-decimal-digit numbers. For
- example, version 8.2.3 will become 80203.
  =back
  
  The following predefined queries are available (the definitions can be found
@@@ -5427,6 -5610,8 +5619,8 @@@ Specify the plugin instance name that s
  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).
+ The plugin instance name can also be set from the query result using
+ the B<PluginInstanceFrom> option in B<Query> block.
  
  =item B<Host> I<hostname>
  
@@@ -6271,6 -6456,22 +6465,22 @@@ collected. If at least one B<Disk> opti
  set to B<false>, B<only> matching disks will be collected. If B<IgnoreSelected>
  is set to B<true>, all disks are collected B<except> the ones matched.
  
+ =item B<IgnoreSleepMode> B<true>|B<false>
+ Normally, the C<smart> plugin will ignore disks that are reported to be asleep.
+ This option disables the sleep mode check and allows the plugin to collect data
+ from these disks anyway. This is useful in cases where libatasmart mistakenly
+ reports disks as asleep because it has not been updated to incorporate support
+ for newer idle states in the ATA spec.
+ =item B<UseSerial> B<true>|B<false>
+ A disk's kernel name (e.g., sda) can change from one boot to the next. If this
+ option is enabled, the C<smart> plugin will use the disk's serial number (e.g.,
+ HGST_HUH728080ALE600_2EJ8VH8X) instead of the kernel name as the key for
+ storing data. This ensures that the data for a given disk will be kept together
+ even if the kernel name changes.
  =back
  
  =head2 Plugin C<snmp>
@@@ -7008,20 -7209,20 +7218,20 @@@ The following methods are used to find 
  
  =over 4
  
- =item
+ =item *
  
  Check I</etc/uuid> (or I<UUIDFile>).
  
- =item
+ =item *
  
  Check for UUID from HAL (L<http://www.freedesktop.org/wiki/Software/hal>) if
  present.
  
- =item
+ =item *
  
  Check for UUID from C<dmidecode> / SMBIOS.
  
- =item
+ =item *
  
  Check for UUID from Xen hypervisor.
  
diff --combined src/types.db
@@@ -21,6 -21,13 +21,13 @@@ ceph_latency            value:GAUGE:U:
  ceph_rate               value:DERIVE:0:U
  changes_since_last_save value:GAUGE:0:U
  charge                  value:GAUGE:0:U
+ clock_last_meas         value:GAUGE:0:U
+ clock_last_update       value:GAUGE:U:U
+ clock_mode              value:GAUGE:0:U
+ clock_reachability      value:GAUGE:0:U
+ clock_skew_ppm          value:GAUGE:-2:2
+ clock_state             value:GAUGE:0:U
+ clock_stratum           value:GAUGE:0:U
  compression             uncompressed:DERIVE:0:U, compressed:DERIVE:0:U
  compression_ratio       value:GAUGE:0:2
  connections             value:DERIVE:0:U
@@@ -30,7 -37,6 +37,7 @@@ count                   value:GAUGE:0:
  counter                 value:COUNTER:U:U
  cpu                     value:DERIVE:0:U
  cpufreq                 value:GAUGE:0:U
 +cpusleep                value:DERIVE:0:U
  current                 value:GAUGE:U:U
  current_connections     value:GAUGE:0:U
  current_sessions        value:GAUGE:0:U
@@@ -77,6 -83,7 +84,7 @@@ files                   value:GAUGE:0:
  flow                    value:GAUGE:0:U
  fork_rate               value:DERIVE:0:U
  frequency               value:GAUGE:0:U
+ frequency_error         value:GAUGE:-2:2 
  frequency_offset        value:GAUGE:-1000000:1000000
  fscache_stat            value:DERIVE:0:U
  gauge                   value:GAUGE:U:U
@@@ -133,6 -140,7 +141,7 @@@ mysql_select            value:DERIVE:0:
  mysql_sort              value:DERIVE:0:U
  mysql_sort_merge_passes value:DERIVE:0:U
  mysql_sort_rows         value:DERIVE:0:U
+ mysql_slow_queries      value:DERIVE:0:U
  nfs_procedure           value:DERIVE:0:U
  nginx_connections       value:GAUGE:0:U
  nginx_requests          value:DERIVE:0:U
@@@ -183,6 -191,8 +192,8 @@@ records                 value:GAUGE:0:
  requests                value:GAUGE:0:U
  response_code           value:GAUGE:0:U
  response_time           value:GAUGE:0:U
+ root_delay              value:GAUGE:U:U
+ root_dispersion         value:GAUGE:U:U
  route_etx               value:GAUGE:0:U
  route_metric            value:GAUGE:0:U
  routes                  value:GAUGE:0:U
@@@ -207,6 -217,9 +218,9 @@@ temperature             value:GAUGE:U:
  threads                 value:GAUGE:0:U
  time_dispersion         value:GAUGE:-1000000:1000000
  time_offset             value:GAUGE:-1000000:1000000
+ time_offset_ntp         value:GAUGE:-1000000:1000000
+ time_offset_rms         value:GAUGE:-1000000:1000000
+ time_ref                value:GAUGE:0:U
  timeleft                value:GAUGE:0:U
  total_bytes             value:DERIVE:0:U
  total_connections       value:DERIVE:0:U