Code

Merge remote-tracking branch 'origin/pr/1346'
authorMarc Fournier <marc.fournier@camptocamp.com>
Tue, 9 Aug 2016 11:14:04 +0000 (13:14 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Tue, 9 Aug 2016 11:14:04 +0000 (13:14 +0200)
 Conflicts:
README
configure.ac
src/Makefile.am
src/collectd.conf.in
src/collectd.conf.pod
src/types.db

1  2 
AUTHORS
README
configure.ac
src/Makefile.am
src/collectd.conf.in
src/collectd.conf.pod
src/gps.c
src/types.db

diff --cc AUTHORS
Simple merge
diff --cc README
index e5d5c37193163dcc58b9c578036e096f8388168e,a55b2a2beb76efd2ea1959028ba5099ae57417b3..f2df12cdd34c253dc31d15a30533d90204d64ad9
--- 1/README
--- 2/README
+++ b/README
@@@ -125,9 -119,9 +125,12 @@@ Feature
      - gmond
        Receive multicast traffic from Ganglia instances.
  
+     - gps
+       Monitor gps related data through gpsd.
 +    - grpc
 +      Receive values over the network using the gRPC framework.
 +
      - hddtemp
        Hard disk temperatures using hddtempd.
  
diff --cc configure.ac
index 1bc02bc15098da90be74a43ad76604ee4f258a0b,08496dc9ecf4713bbf1ae5fdd946f9692a32396c..1bacddd1b482af00dbe8b15bc103f68176b7d2df
@@@ -2284,92 -2082,58 +2284,142 @@@ AC_SUBST(GCRYPT_LIBS
  AM_CONDITIONAL(BUILD_WITH_LIBGCRYPT, test "x$with_libgcrypt" = "xyes")
  # }}}
  
 -
 -###
+ # --with-libgps {{{
+ with_libgps_cflags=""
+ with_libgps_ldflags=""
+ AC_ARG_WITH(libgps, [AS_HELP_STRING([--with-libgps@<:@=PREFIX@:>@], [Path to libgps.])],
+ [
+       if test "x$withval" != "xno" && test "x$withval" != "xyes"
+       then
+               with_libgps_cflags="-I$withval/include"
+               with_libgps_ldflags="-L$withval/lib"
+               with_libgps="yes"
+       else
+               with_libgps="$withval"
+       fi
+ ],
+ [
+       with_libgps="yes"
+ ])
+ if test "x$with_libgps" = "xyes"
+ then
+       SAVE_CFLAGS="$CFLAGS"
+       CFLAGS="$CFLAGS $with_libgps_cflags"
+       AC_CHECK_HEADERS(gps.h, [with_libgps="yes"], [with_libgps="no (gps.h not found)"])
+       CFLAGS="$SAVE_CFLAGS"
+ fi
+ if test "x$with_libgps" = "xyes"
+ then
+       SAVE_CFLAGS="$CFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+       CFLAGS="$CFLAGS $with_libgps_cflags"
+       LDFLAGS="$LDFLAGS $with_libgps_ldflags"
+       AC_CHECK_LIB(gps, gps_open, [with_libgps="yes"], [with_libgps="no (symbol gps_open not found)"])
+       CFLAGS="$SAVE_CFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
+ fi
+ if test "x$with_libgps" = "xyes"
+ then
+       BUILD_WITH_LIBGPS_CFLAGS="$with_libgps_cflags"
+       BUILD_WITH_LIBGPS_LDFLAGS="$with_libgps_ldflags"
+       BUILD_WITH_LIBGPS_LIBS="-lgps"
+       AC_SUBST(BUILD_WITH_LIBGPS_CFLAGS)
+       AC_SUBST(BUILD_WITH_LIBGPS_LDFLAGS)
+       AC_SUBST(BUILD_WITH_LIBGPS_LIBS)
+ fi
+ AM_CONDITIONAL(BUILD_WITH_LIBGPS, test "x$with_libgps" = "xyes")
+ # }}}
 +# --with-libgrpc++ {{{
 +with_libgrpcpp_cppflags=""
 +with_libgrpcpp_ldflags=""
 +AC_ARG_WITH([libgrpc++], [AS_HELP_STRING([--with-libgrpc++@<:@=PREFIX@:>@], [Path to libgrpc++.])],
 +  [
 +    with_grpcpp="$withval"
 +    if test "x$withval" != "xno" && test "x$withval" != "xyes"
 +    then
 +      with_libgrpcpp_cppflags="-I$withval/include"
 +      with_libgrpcpp_ldflags="-L$withval/lib"
 +      with_libgrpcpp="yes"
 +    fi
 +    if test "x$withval" = "xno"
 +    then
 +      with_libgrpcpp="no (disabled on command line)"
 +    fi
 +  ],
 +  [withval="yes"]
 +)
 +if test "x$withval" = "xyes"
 +then
 +PKG_CHECK_MODULES([GRPCPP], [grpc++],
 +  [with_libgrpcpp="yes"],
 +  [with_libgrpcpp="no (pkg-config could not find libgrpc++)"]
 +)
 +fi
 +
 +if test "x$withval" != "xno"
 +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_libgrpcpp="no (requires C++11 support)"
 +  fi
 +fi
 +
 +if test "x$with_libgrpcpp" = "xyes"
 +then
 +  AC_LANG_PUSH(C++)
 +  SAVE_CPPFLAGS="$CPPFLAGS"
 +  CPPFLAGS="$with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS -std=c++11"
 +  AC_CHECK_HEADERS([grpc++/grpc++.h], [],
 +    [with_libgrpcpp="no (<grpc++/grpc++.h> not found)"]
 +  )
 +  CPPFLAGS="$SAVE_CPPFLAGS"
 +  AC_LANG_POP(C++)
 +fi
 +if test "x$with_libgrpcpp" = "xyes"
 +then
 +  AC_LANG_PUSH(C++)
 +  SAVE_LDFLAGS="$LDFLAGS"
 +  SAVE_LIBS="$LIBS"
 +  LDFLAGS="$with_libgrpcpp_ldflags"
 +  if test "x$GRPCPP_LIBS" = "x"
 +  then
 +    LIBS="-lgrpc++"
 +  else
 +    LIBS="$GRPCPP_LIBS"
 +  fi
 +  AC_LINK_IFELSE(
 +    [AC_LANG_PROGRAM(
 +      [[#include <grpc++/grpc++.h>]],
 +      [[grpc::ServerBuilder sb;]]
 +    )],
 +    [
 +      with_libgrpcpp="yes"
 +      if test "x$GRPCPP_LIBS" = "x"
 +      then
 +        GRPCPP_LIBS="-lgrpc++"
 +      fi
 +    ],
 +    [with_libgrpcpp="no (libgrpc++ not found)"]
 +  )
 +  LDFLAGS="$SAVE_LDFLAGS"
 +  LIBS="$SAVE_LIBS"
 +  AC_LANG_POP(C++)
 +fi
 +BUILD_WITH_LIBGRPCPP_CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS"
 +BUILD_WITH_LIBGRPCPP_LDFLAGS="$with_libgrpcpp_ldflags"
 +BUILD_WITH_LIBGRPCPP_LIBS="$GRPCPP_LIBS"
 +AC_SUBST([BUILD_WITH_LIBGRPCPP_CPPFLAGS])
 +AC_SUBST([BUILD_WITH_LIBGRPCPP_LDFLAGS])
 +AC_SUBST([BUILD_WITH_LIBGRPCPP_LIBS])
 +# }}}
  
  # --with-libiptc {{{
  AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])],
@@@ -5575,7 -5328,7 +5625,8 @@@ plugin_entropy="no
  plugin_ethstat="no"
  plugin_fhcount="no"
  plugin_fscache="no"
+ plugin_gps="no"
 +plugin_grpc="no"
  plugin_interface="no"
  plugin_ipmi="no"
  plugin_ipvs="no"
        plugin_interface="yes"
  fi
  
 -if test "x$with_libgps" = "xyes" && test "x$with_libpthread" = "xyes"
++if test "x$with_libgps" = "xyes"
+ then
+       plugin_gps="yes"
+ fi
  if test "x$have_getloadavg" = "xyes"
  then
        plugin_load="yes"
@@@ -5987,148 -5693,144 +6043,149 @@@ AC_ARG_ENABLE([all-plugins]
  
  m4_divert_once([HELP_ENABLE], [])
  
 -AC_PLUGIN([aggregation], [yes],                [Aggregation plugin])
 -AC_PLUGIN([amqp],        [$with_librabbitmq],  [AMQP output plugin])
 -AC_PLUGIN([apache],      [$with_libcurl],      [Apache httpd statistics])
 -AC_PLUGIN([apcups],      [yes],                [Statistics of UPSes by APC])
 -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])
 -AC_PLUGIN([cpu],         [$plugin_cpu],        [CPU usage 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])
 -AC_PLUGIN([curl_xml],   [$plugin_curl_xml],    [CURL generic xml statistics])
 -AC_PLUGIN([cgroups],     [$plugin_cgroups],    [CGroups CPU usage accounting])
 -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([gps],         [$plugin_gps],        [GPS 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([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])
 -AC_PLUGIN([match_empty_counter], [yes],        [The empty counter match])
 -AC_PLUGIN([match_hashed], [yes],               [The hashed match])
 -AC_PLUGIN([match_regex], [yes],                [The regex match])
 -AC_PLUGIN([match_timediff], [yes],             [The timediff match])
 -AC_PLUGIN([match_value], [yes],                [The value match])
 -AC_PLUGIN([mbmon],       [yes],                [Query mbmond])
 -AC_PLUGIN([md],          [$have_linux_raid_md_u_h], [md (Linux software RAID) devices])
 -AC_PLUGIN([memcachec],   [$with_libmemcached], [memcachec statistics])
 -AC_PLUGIN([memcached],   [yes],                [memcached statistics])
 -AC_PLUGIN([memory],      [$plugin_memory],     [Memory usage])
 -AC_PLUGIN([mic],         [$with_mic],          [Intel Many Integrated Core stats])
 -AC_PLUGIN([modbus],      [$with_libmodbus],    [Modbus plugin])
 -AC_PLUGIN([mqtt],        [$with_libmosquitto], [MQTT output plugin])
 -AC_PLUGIN([multimeter],  [$plugin_multimeter], [Read multimeter values])
 -AC_PLUGIN([mysql],       [$with_libmysql],     [MySQL statistics])
 -AC_PLUGIN([netapp],      [$with_libnetapp],    [NetApp plugin])
 -AC_PLUGIN([netlink],     [$with_libmnl],       [Enhanced Linux network statistics])
 -AC_PLUGIN([network],     [yes],                [Network communication plugin])
 -AC_PLUGIN([nfs],         [$plugin_nfs],        [NFS statistics])
 -AC_PLUGIN([nginx],       [$with_libcurl],      [nginx statistics])
 -AC_PLUGIN([notify_desktop], [$with_libnotify], [Desktop notifications])
 -AC_PLUGIN([notify_email], [$with_libesmtp],    [Email notifier])
 -AC_PLUGIN([ntpd],        [yes],                [NTPd statistics])
 -AC_PLUGIN([numa],        [$plugin_numa],       [NUMA virtual memory statistics])
 -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])
 -AC_PLUGIN([pf],          [$have_net_pfvar_h],  [BSD packet filter (PF) statistics])
 +AC_PLUGIN([aggregation],         [yes],                     [Aggregation plugin])
 +AC_PLUGIN([amqp],                [$with_librabbitmq],       [AMQP output plugin])
 +AC_PLUGIN([apache],              [$with_libcurl],           [Apache httpd statistics])
 +AC_PLUGIN([apcups],              [yes],                     [Statistics of UPSes by APC])
 +AC_PLUGIN([apple_sensors],       [$with_libiokit],          [Apple hardware sensors])
 +AC_PLUGIN([aquaero],             [$with_libaquaero5],       [Aquaero 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([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])
 +AC_PLUGIN([curl_xml],            [$plugin_curl_xml],        [CURL generic xml statistics])
 +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([dns],                 [$with_libpcap],           [DNS traffic analysis])
 +AC_PLUGIN([drbd],                [$plugin_drbd],            [DRBD statistics])
 +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([gps],                 [$plugin_gps],             [GPS plugin])
 +AC_PLUGIN([grpc],                [$plugin_grpc],            [gRPC 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([load],                [$plugin_load],            [System load])
 +AC_PLUGIN([log_logstash],        [$plugin_log_logstash],    [Logstash json_event compatible logging])
 +AC_PLUGIN([logfile],             [yes],                     [File logging plugin])
 +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])
 +AC_PLUGIN([match_empty_counter], [yes],                     [The empty counter match])
 +AC_PLUGIN([match_hashed],        [yes],                     [The hashed match])
 +AC_PLUGIN([match_regex],         [yes],                     [The regex match])
 +AC_PLUGIN([match_timediff],      [yes],                     [The timediff match])
 +AC_PLUGIN([match_value],         [yes],                     [The value match])
 +AC_PLUGIN([mbmon],               [yes],                     [Query mbmond])
 +AC_PLUGIN([md],                  [$have_linux_raid_md_u_h], [md (Linux software RAID) devices])
 +AC_PLUGIN([memcachec],           [$with_libmemcached],      [memcachec statistics])
 +AC_PLUGIN([memcached],           [yes],                     [memcached statistics])
 +AC_PLUGIN([memory],              [$plugin_memory],          [Memory usage])
 +AC_PLUGIN([mic],                 [$with_mic],               [Intel Many Integrated Core stats])
 +AC_PLUGIN([modbus],              [$with_libmodbus],         [Modbus plugin])
 +AC_PLUGIN([mqtt],                [$with_libmosquitto],      [MQTT output plugin])
 +AC_PLUGIN([multimeter],          [$plugin_multimeter],      [Read multimeter values])
 +AC_PLUGIN([mysql],               [$with_libmysql],          [MySQL statistics])
 +AC_PLUGIN([netapp],              [$with_libnetapp],         [NetApp plugin])
 +AC_PLUGIN([netlink],             [$with_libmnl],            [Enhanced Linux network statistics])
 +AC_PLUGIN([network],             [yes],                     [Network communication plugin])
 +AC_PLUGIN([nfs],                 [$plugin_nfs],             [NFS statistics])
 +AC_PLUGIN([nginx],               [$with_libcurl],           [nginx statistics])
 +AC_PLUGIN([notify_desktop],      [$with_libnotify],         [Desktop notifications])
 +AC_PLUGIN([notify_email],        [$with_libesmtp],          [Email notifier])
 +AC_PLUGIN([notify_nagios],       [yes],                     [Nagios notification plugin])
 +AC_PLUGIN([ntpd],                [yes],                     [NTPd statistics])
 +AC_PLUGIN([numa],                [$plugin_numa],            [NUMA virtual memory statistics])
 +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])
 +AC_PLUGIN([pf],                  [$have_net_pfvar_h],       [BSD packet filter (PF) statistics])
  # FIXME: Check for libevent, too.
 -AC_PLUGIN([pinba],       [$have_protoc_c],     [Pinba statistics])
 -AC_PLUGIN([ping],        [$with_liboping],     [Network latency statistics])
 -AC_PLUGIN([postgresql],  [$with_libpq],        [PostgreSQL database statistics])
 -AC_PLUGIN([powerdns],    [yes],                [PowerDNS statistics])
 -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_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])
 -AC_PLUGIN([syslog],      [$have_syslog],       [Syslog logging plugin])
 -AC_PLUGIN([table],       [yes],                [Parsing of tabular data])
 -AC_PLUGIN([tail],        [yes],                [Parsing of logfiles])
 -AC_PLUGIN([tail_csv],    [yes],                [Parsing of CSV files])
 -AC_PLUGIN([tape],        [$plugin_tape],       [Tape drive statistics])
 -AC_PLUGIN([target_notification], [yes],        [The notification target])
 -AC_PLUGIN([target_replace], [yes],             [The replace target])
 -AC_PLUGIN([target_scale],[yes],                [The scale target])
 -AC_PLUGIN([target_set],  [yes],                [The set target])
 -AC_PLUGIN([target_v5upgrade], [yes],           [The v5upgrade target])
 -AC_PLUGIN([tcpconns],    [$plugin_tcpconns],   [TCP connection statistics])
 -AC_PLUGIN([teamspeak2],  [yes],                [TeamSpeak2 server statistics])
 -AC_PLUGIN([ted],         [$plugin_ted],        [Read The Energy Detective values])
 -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_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([zone],        [$plugin_zone],       [Solaris container statistics])
 -AC_PLUGIN([zookeeper],   [yes],              [Zookeeper statistics])
 +AC_PLUGIN([pinba],               [$plugin_pinba],           [Pinba statistics])
 +AC_PLUGIN([ping],                [$with_liboping],          [Network latency statistics])
 +AC_PLUGIN([postgresql],          [$with_libpq],             [PostgreSQL database statistics])
 +AC_PLUGIN([powerdns],            [yes],                     [PowerDNS statistics])
 +AC_PLUGIN([processes],           [$plugin_processes],       [Process statistics])
 +AC_PLUGIN([protocols],           [$plugin_protocols],       [Protocol (IP, TCP, ...) statistics])
 +AC_PLUGIN([python],              [$plugin_python],          [Embed a Python interpreter])
 +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],               [$plugin_smart],           [SMART statistics])
 +AC_PLUGIN([snmp],                [$with_libnetsnmp],        [SNMP querying plugin])
 +AC_PLUGIN([statsd],              [yes],                     [StatsD plugin])
 +AC_PLUGIN([swap],                [$plugin_swap],            [Swap usage statistics])
 +AC_PLUGIN([syslog],              [$have_syslog],            [Syslog logging plugin])
 +AC_PLUGIN([table],               [yes],                     [Parsing of tabular data])
 +AC_PLUGIN([tail],                [yes],                     [Parsing of logfiles])
 +AC_PLUGIN([tail_csv],            [yes],                     [Parsing of CSV files])
 +AC_PLUGIN([tape],                [$plugin_tape],            [Tape drive statistics])
 +AC_PLUGIN([target_notification], [yes],                     [The notification target])
 +AC_PLUGIN([target_replace],      [yes],                     [The replace target])
 +AC_PLUGIN([target_scale],        [yes],                     [The scale target])
 +AC_PLUGIN([target_set],          [yes],                     [The set target])
 +AC_PLUGIN([target_v5upgrade],    [yes],                     [The v5upgrade target])
 +AC_PLUGIN([tcpconns],            [$plugin_tcpconns],        [TCP connection statistics])
 +AC_PLUGIN([teamspeak2],          [yes],                     [TeamSpeak2 server statistics])
 +AC_PLUGIN([ted],                 [$plugin_ted],             [Read The Energy Detective values])
 +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_libhiredis],        [Redis output plugin])
 +AC_PLUGIN([write_riemann],       [$with_libriemann_client], [Riemann output plugin])
 +AC_PLUGIN([write_sensu],         [yes],                     [Sensu output plugin])
 +AC_PLUGIN([write_tsdb],          [yes],                     [TSDB output plugin])
 +AC_PLUGIN([xencpu],              [$plugin_xencpu],          [Xen Host CPU usage])
 +AC_PLUGIN([xmms],                [$with_libxmms],           [XMMS statistics])
 +AC_PLUGIN([zfs_arc],             [$plugin_zfs_arc],         [ZFS ARC statistics])
 +AC_PLUGIN([zone],                [$plugin_zone],            [Solaris container statistics])
 +AC_PLUGIN([zookeeper],           [yes],                     [Zookeeper statistics])
  
  dnl Default configuration file
  # Load either syslog or logfile
        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
 -    libgps  . . . . . . . $with_libgps
 -    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
 -    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
 -    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
 -    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
 -    gps . . . . . . . . . $enable_gps
 -    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
 -    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
 -    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([    libgps  . . . . . . . $with_libgps])
 +AC_MSG_RESULT([    libgrpc++ . . . . . . $with_libgrpcpp])
 +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([    libprotobuf . . . . . $with_libprotobuf])
 +AC_MSG_RESULT([    libprotobuf-c . . . . $with_libprotobuf_c])
 +AC_MSG_RESULT([    libpython . . . . . . $with_libpython])
 +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  . . . . . . $have_protoc3])
 +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([    gps . . . . . . . . . $enable_gps])
 +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 --cc src/Makefile.am
index b1fe3c55c7ddc0d79f609eb43191a2af79888d14,68ee552d1ff5f9c33ec657da3d355a654114d98e..12c7730cc95a5779a170ec9eb42de0a6b492bfe3
@@@ -442,15 -408,14 +442,23 @@@ gmond_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(
  gmond_la_LIBADD = $(GANGLIA_LIBS)
  endif
  
 -gps_la_LDFLAGS = -module -avoid-version $(BUILD_WITH_LIBGPS_LDFLAGS)
+ if BUILD_PLUGIN_GPS
+ pkglib_LTLIBRARIES += gps.la
+ gps_la_SOURCES = gps.c
+ gps_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBGPS_CFLAGS)
++gps_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBGPS_LDFLAGS)
+ gps_la_LIBADD = -lpthread $(BUILD_WITH_LIBGPS_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) $(BUILD_WITH_LIBGRPCPP_CPPFLAGS) $(BUILD_WITH_LIBPROTOBUF_CPPFLAGS)
 +grpc_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBGRPCPP_LDFLAGS) $(BUILD_WITH_LIBPROTOBUF_LDFLAGS)
 +grpc_la_LIBADD = $(BUILD_WITH_LIBGRPCPP_LIBS) $(BUILD_WITH_LIBPROTOBUF_LIBS)
 +endif
 +
  if BUILD_PLUGIN_HDDTEMP
  pkglib_LTLIBRARIES += hddtemp.la
  hddtemp_la_SOURCES = hddtemp.c
index c66669205068bb781bdef948a1bbef918d594869,21cb1111b290dbf0f3dcc7474e6b61ff1503857c..e3f2aa33505432fe405e996a17a75b6aa4c15fa2
  #@BUILD_PLUGIN_FILECOUNT_TRUE@LoadPlugin filecount
  #@BUILD_PLUGIN_FSCACHE_TRUE@LoadPlugin fscache
  #@BUILD_PLUGIN_GMOND_TRUE@LoadPlugin gmond
+ #@BUILD_PLUGIN_GPS_TRUE@LoadPlugin gps
 +#@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@@BUILD_PLUGIN_IPC_TRUE@LoadPlugin ipc
 +#@BUILD_PLUGIN_IPC_TRUE@LoadPlugin ipc
  #@BUILD_PLUGIN_IPMI_TRUE@LoadPlugin ipmi
  #@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
  #@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
  #  </Metric>
  #</Plugin>
  
+ #<Plugin gps>
+ #  Host "127.0.0.1"
+ #  Port "2947"
+ #  Timeout 0.015
+ #  PauseConnect 5
+ #</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"
index 088ec5d0231b32d97049df1a9b47ee45fec7ec1c,bbee6b130e61f3010ef9ff9dd0d9b86c1d850536..6ada5f16981629f0c34e416421c2f63d5539758c
@@@ -2641,51 -2482,78 +2641,123 @@@ source, this is optional. Otherwise th
  
  =back
  
 -It waits for data to be available, if none arrives it times out 
+ =head2 Plugin C<gps>
+ The C<gps plugin> connects to gpsd on the host machine.
+ The host, port, timeout and pause are configurable.
+ This is useful if you run an NTP server using a GPS for source and you want to
+ monitor it.
+ Mind your GPS must send $--GSA for having the data reported!
+ The following elements are collected:
+ =over 4
+ =item B<satellites>
+ Number of satellites used for fix (type instance "used") and in view (type
+ instance "visible"). 0 means no GPS satellites are visible.
+ =item B<dilution_of_precision>
+ Vertical and horizontal dilution (type instance "horizontal" or "vertical").
+ It should be between 0 and 3.
+ Look at the documentation of your GPS to know more.
+ =back
+ Synopsis:
+  LoadPlugin gps
+  <Plugin "gps">
+    # Connect to localhost on gpsd regular port:
+    Host "127.0.0.1"
+    Port "2947"
+    # 15 ms timeout
+    Timeout 0.015
+    # PauseConnect of 5 sec. between connection attempts.
+    PauseConnect 5
+  </Plugin>
+ Available configuration options:
+ =over 4
+ =item B<Host> I<Host>
+ The host on which gpsd daemon runs. Defaults to B<localhost>.
+ =item B<Port> I<Port>
+ Port to connect to gpsd on the host machine. Defaults to B<2947>.
+ =item B<Timeout> I<Seconds>
+ Timeout in seconds (default 0.015 sec).
+ The GPS data stream is fetch by the plugin form the daemon.
 -Mind to put a low value gpsd expects value in the micro-seconds area 
++It waits for data to be available, if none arrives it times out
+ and loop for another reading.
 -Value must be between 500 us and 5 sec., if outside that range the 
++Mind to put a low value gpsd expects value in the micro-seconds area
+ (recommended is 500 us) since the waiting function is blocking.
++Value must be between 500 us and 5 sec., if outside that range the
+ default value is applied.
+ This only applies from gpsd release-2.95.
+ =item B<PauseConnect> I<Seconds>
+ Pause to apply between attempts of connection to gpsd in seconds (default 5 sec).
+ =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),
diff --cc src/gps.c
index 0000000000000000000000000000000000000000,e43af4a4e55b2256af5846f81c3f0a8d9f157ef4..04de5aa9ccf3a7994c182dae7a710f23dbcb881e
mode 000000,100644..100644
--- /dev/null
+++ b/src/gps.c
@@@ -1,0 -1,368 +1,368 @@@
 -  ) 
+ /**
+  * collectd - src/gps.c
+  * Copyright (C) 2015  Nicolas JOURDEN
+  *
+  * Permission is hereby granted, free of charge, to any person obtaining a
+  * copy of this software and associated documentation files (the "Software"),
+  * to deal in the Software without restriction, including without limitation
+  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  * and/or sell copies of the Software, and to permit persons to whom the
+  * Software is furnished to do so, subject to the following conditions:
+  *
+  * The above copyright notice and this permission notice shall be included in
+  * all copies or substantial portions of the Software.
+  *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  * DEALINGS IN THE SOFTWARE.
+  *
+  * Authors:
+  *   Nicolas JOURDEN <nicolas.jourden at laposte.net>
+  *   Florian octo Forster <octo at collectd.org>
+  *   Marc Fournier <marc.fournier at camptocamp.com>
+  **/
+ #include "collectd.h"
+ #include "common.h"
+ #include "plugin.h"
+ #include "utils_time.h"
+ #include "configfile.h"
+ #define CGPS_TRUE                  1
+ #define CGPS_FALSE                 0
+ #define CGPS_DEFAULT_HOST          "localhost"
+ #define CGPS_DEFAULT_PORT          "2947" /* DEFAULT_GPSD_PORT */
+ #define CGPS_DEFAULT_TIMEOUT       MS_TO_CDTIME_T (15)
+ #define CGPS_DEFAULT_PAUSE_CONNECT TIME_T_TO_CDTIME_T (5)
+ #define CGPS_MAX_ERROR             100
+ #define CGPS_CONFIG                "?WATCH={\"enable\":true,\"json\":true,\"nmea\":false}\r\n"
+ #include <gps.h>
+ #include <pthread.h>
+ typedef struct {
+   char *host;
+   char *port;
+   cdtime_t timeout;
+   cdtime_t pause_connect;
+ } cgps_config_t;
+ typedef struct {
+   gauge_t sats_used;
+   gauge_t sats_visible;
+   gauge_t hdop;
+   gauge_t vdop;
+ } cgps_data_t;
+ static cgps_config_t cgps_config_data;
+ static cgps_data_t cgps_data = {NAN, NAN, NAN, NAN};
+ static pthread_t cgps_thread_id;
+ static pthread_mutex_t  cgps_data_lock = PTHREAD_MUTEX_INITIALIZER;
+ static pthread_mutex_t  cgps_thread_lock = PTHREAD_MUTEX_INITIALIZER;
+ static int cgps_thread_shutdown = CGPS_FALSE;
+ static int cgps_thread_running = CGPS_FALSE;
+ /**
+  * Non blocking pause for the thread.
+  */
+ static int cgps_thread_pause(cdtime_t pTime)
+ {
+   cdtime_t now;
+   now = cdtime ();
+   struct timespec pause_th;
+   CDTIME_T_TO_TIMESPEC (MS_TO_CDTIME_T(10), &pause_th);
+   while (CGPS_TRUE)
+   {
+     if ( (cdtime () - now) > pTime )
+     {
+       break;
+     }
+     pthread_mutex_lock (&cgps_thread_lock);
+     if (cgps_thread_shutdown == CGPS_TRUE)
+     {
+       return CGPS_FALSE;
+     }
+     pthread_mutex_unlock (&cgps_thread_lock);
+     nanosleep (&pause_th, NULL);
+  }
+  return CGPS_TRUE;
+ }
+ /**
+  * Thread reading from gpsd.
+  */
+ static void * cgps_thread (void * pData)
+ {
+   struct gps_data_t gpsd_conn;
+   unsigned int err_count;
+   cgps_thread_running = CGPS_TRUE;
+   while (CGPS_TRUE)
+   {
+     pthread_mutex_lock (&cgps_thread_lock);
+     if (cgps_thread_shutdown == CGPS_TRUE)
+     {
+       goto quit;
+     }
+     pthread_mutex_unlock (&cgps_thread_lock);
+     err_count = 0;
+ #if GPSD_API_MAJOR_VERSION > 4
+     int status = gps_open (cgps_config_data.host, cgps_config_data.port, &gpsd_conn);
+ #else
+     int status = gps_open_r (cgps_config_data.host, cgps_config_data.port, &gpsd_conn);
+ #endif
+     if (status < 0)
+     {
+       WARNING ("gps plugin: connecting to %s:%s failed: %s",
+                cgps_config_data.host, cgps_config_data.port, gps_errstr (status));
+       // Here we make a pause until a new tentative to connect, we check also if
+       // the thread does not need to stop.
+       if (cgps_thread_pause(cgps_config_data.pause_connect) == CGPS_FALSE)
+       {
+         goto quit;
+       }
+       continue;
+     }
+     gps_stream (&gpsd_conn, WATCH_ENABLE | WATCH_JSON | WATCH_NEWSTYLE, NULL);
+     gps_send (&gpsd_conn, CGPS_CONFIG);
+     while (CGPS_TRUE)
+     {
+       pthread_mutex_lock (&cgps_thread_lock);
+       if (cgps_thread_shutdown == CGPS_TRUE)
+       {
+         goto stop;
+       }
+       pthread_mutex_unlock (&cgps_thread_lock);
+ #if GPSD_API_MAJOR_VERSION > 4
+       long timeout_us = CDTIME_T_TO_US (cgps_config_data.timeout);
+       if (!gps_waiting (&gpsd_conn, (int) timeout_us ))
+ #else
+       if (!gps_waiting (&gpsd_conn))
+ #endif
+       {
+         continue;
+       }
+       if (gps_read (&gpsd_conn) == -1)
+       {
+         WARNING ("gps plugin: incorrect data! (err_count: %d)", err_count);
+         err_count++;
+         if (err_count > CGPS_MAX_ERROR)
+         {
+           // Server is not responding ...
+           if (gps_send (&gpsd_conn, CGPS_CONFIG) == -1)
+           {
+             WARNING ("gps plugin: gpsd seems to be down, reconnecting");
+             gps_close (&gpsd_conn);
+             break;
+           }
+           // Server is responding ...
+           else
+           {
+             err_count = 0;
+           }
+         }
+         continue;
+       }
+       pthread_mutex_lock (&cgps_data_lock);
+       // Number of sats in view:
+       cgps_data.sats_used = (gauge_t) gpsd_conn.satellites_used;
+       cgps_data.sats_visible = (gauge_t) gpsd_conn.satellites_visible;
+       // dilution of precision:
+       cgps_data.vdop = NAN;
+       cgps_data.hdop = NAN;
+       if (cgps_data.sats_used > 0)
+       {
+         cgps_data.hdop = gpsd_conn.dop.hdop;
+         cgps_data.vdop = gpsd_conn.dop.vdop;
+       }
+       DEBUG ("gps plugin: %.0f sats used (of %.0f visible), hdop = %.3f, vdop = %.3f",
+              cgps_data.sats_used, cgps_data.sats_visible, cgps_data.hdop, cgps_data.vdop);
+       pthread_mutex_unlock (&cgps_data_lock);
+     }
+   }
+ stop:
+   DEBUG ("gps plugin: thread closing gpsd connection ... ");
+   gps_stream (&gpsd_conn, WATCH_DISABLE, NULL);
+   gps_close (&gpsd_conn);
+ quit:
+   DEBUG ("gps plugin: thread shutting down ... ");
+   cgps_thread_running = CGPS_FALSE;
+   pthread_mutex_unlock (&cgps_thread_lock);
+   pthread_exit (NULL);
+ }
+ /**
+  * Submit a piece of the data.
+  */
+ static void cgps_submit (const char *type, gauge_t value, const char *type_instance)
+ {
+   value_t values[1];
+   value_list_t vl = VALUE_LIST_INIT;
+   values[0].gauge = value;
+   vl.values = values;
+   vl.values_len = 1;
+   sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+   sstrncpy (vl.plugin, "gps", sizeof (vl.plugin));
+   sstrncpy (vl.type, type, sizeof (vl.type));
+   sstrncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
+   plugin_dispatch_values (&vl);
+ }
+ /**
+  * Read the data and submit by piece.
+  */
+ static int cgps_read ()
+ {
+   cgps_data_t data_copy;
+   pthread_mutex_lock (&cgps_data_lock);
+   data_copy = cgps_data;
+   pthread_mutex_unlock (&cgps_data_lock);
+   cgps_submit ("dilution_of_precision", data_copy.hdop, "horizontal");
+   cgps_submit ("dilution_of_precision", data_copy.vdop, "vertical");
+   cgps_submit ("satellites", data_copy.sats_used, "used");
+   cgps_submit ("satellites", data_copy.sats_visible, "visible");
+   return (0);
+ }
+ /**
+  * Read configuration.
+  */
+ static int cgps_config (oconfig_item_t *ci)
+ {
+   int i;
+   for (i = 0; i < ci->children_num; i++)
+   {
+     oconfig_item_t *child = ci->children + i;
+     if (strcasecmp ("Host", child->key) == 0)
+       cf_util_get_string (child, &cgps_config_data.host);
+     else if (strcasecmp ("Port", child->key) == 0)
+       cf_util_get_service (child, &cgps_config_data.port);
+     else if (strcasecmp ("Timeout", child->key) == 0)
+       cf_util_get_cdtime (child, &cgps_config_data.timeout);
+     else if (strcasecmp ("PauseConnect", child->key) == 0)
+       cf_util_get_cdtime (child, &cgps_config_data.pause_connect);
+     else
+       WARNING ("gps plugin: Ignoring unknown config option \"%s\".", child->key);
+   }
+   // Controlling the value for timeout:
+   // If set too high it blocks the reading (> 5 s), too low it gets not reading (< 500 us).
+   // To avoid any issues we replace "out of range" value by the default value.
+   if (
+     cgps_config_data.timeout > TIME_T_TO_CDTIME_T(5)
+     ||
+     cgps_config_data.timeout < US_TO_CDTIME_T(500)
 -    WARNING ("gps plugin: timeout set to %.6f sec. setting to default (%.6f).", 
++  )
+   {
 -  } 
++    WARNING ("gps plugin: timeout set to %.6f sec. setting to default (%.6f).",
+       CDTIME_T_TO_DOUBLE(cgps_config_data.timeout),
+       CDTIME_T_TO_DOUBLE(CGPS_DEFAULT_TIMEOUT)
+     );
+     cgps_config_data.timeout = CGPS_DEFAULT_TIMEOUT;
++  }
+   return (0);
+ }
+ /**
+  * Init.
+  */
+ static int cgps_init (void)
+ {
+   int status;
+   if (cgps_thread_running == CGPS_TRUE)
+   {
+     DEBUG ("gps plugin: error gps thread already running ... ");
+     return 0;
+   }
+   DEBUG ("gps plugin: config{host: \"%s\", port: \"%s\", timeout: %.6f sec., pause connect: %.3f sec.}",
+          cgps_config_data.host, cgps_config_data.port,
+          CDTIME_T_TO_DOUBLE (cgps_config_data.timeout),
+          CDTIME_T_TO_DOUBLE (cgps_config_data.pause_connect));
+   status = plugin_thread_create (&cgps_thread_id, NULL, cgps_thread, NULL);
+   if (status != 0)
+   {
+     ERROR ("gps plugin: pthread_create() failed.");
+     return (-1);
+   }
+   return (0);
+ }
+ /**
+  * Shutdown.
+  */
+ static int cgps_shutdown (void)
+ {
+   void * res;
+   pthread_mutex_lock (&cgps_thread_lock);
+   cgps_thread_shutdown = CGPS_TRUE;
+   pthread_mutex_unlock (&cgps_thread_lock);
+   pthread_join(cgps_thread_id, &res);
+   free(res);
+   // Clean mutex:
+   pthread_mutex_unlock(&cgps_thread_lock);
+   pthread_mutex_destroy(&cgps_thread_lock);
+   pthread_mutex_unlock(&cgps_data_lock);
+   pthread_mutex_destroy(&cgps_data_lock);
+   sfree (cgps_config_data.port);
+   sfree (cgps_config_data.host);
+   return (0);
+ }
+ /**
+  * Register the module.
+  */
+ void module_register (void)
+ {
+   cgps_config_data.host = sstrdup (CGPS_DEFAULT_HOST);
+   cgps_config_data.port = sstrdup (CGPS_DEFAULT_PORT);
+   cgps_config_data.timeout = CGPS_DEFAULT_TIMEOUT;
+   cgps_config_data.pause_connect = CGPS_DEFAULT_PAUSE_CONNECT;
+   plugin_register_complex_config ("gps", cgps_config);
+   plugin_register_init ("gps", cgps_init);
+   plugin_register_read ("gps", cgps_read);
+   plugin_register_shutdown ("gps", cgps_shutdown);
+ }
diff --cc src/types.db
index 8c6a99560a4f51cb8a3972463f5975b0439deb17,e722ce6ddaed1f25f15a2237a989b411df29ee67..cc79af07f26d50cdcf92a304242a032f357ea522
 -absolute              value:ABSOLUTE:0:U
 -apache_bytes          value:DERIVE:0:U
 -apache_connections    value:GAUGE:0:65535
 -apache_idle_workers   value:GAUGE:0:65535
 -apache_requests               value:DERIVE:0:U
 -apache_scoreboard     value:GAUGE:0:65535
 -ath_nodes             value:GAUGE:0:65535
 -ath_stat              value:DERIVE:0:U
 -backends              value:GAUGE:0:65535
 -bitrate                       value:GAUGE:0:4294967295
 -blocked_clients value:GAUGE:0:U
 -bytes                 value:GAUGE:0:U
 -cache_eviction                value:DERIVE:0:U
 -cache_operation               value:DERIVE:0:U
 -cache_ratio           value:GAUGE:0:100
 -cache_result          value:DERIVE:0:U
 -cache_size            value:GAUGE:0:1125899906842623
 -capacity      value:GAUGE:0:U
 -ceph_bytes            value:GAUGE:U:U
 -ceph_latency  value:GAUGE:U:U
 -ceph_rate                     value:DERIVE:0:U
 -changes_since_last_save   value:GAUGE:0:U
 -charge                        value:GAUGE:0:U
 -compression_ratio     value:GAUGE:0:2
 -compression           uncompressed:DERIVE:0:U, compressed:DERIVE:0:U
 -connections           value:DERIVE:0:U
 -conntrack             value:GAUGE:0:4294967295
 -contextswitch         value:DERIVE:0:U
 -count                 value:GAUGE:0:U
 -counter                       value:COUNTER:U:U
 -cpufreq                       value:GAUGE:0:U
 -cpu                   value:DERIVE:0:U
 -current_connections   value:GAUGE:0:U
 -current_sessions      value:GAUGE:0:U
 -current                       value:GAUGE:U:U
 -delay                 value:GAUGE:-1000000:1000000
 -derive                        value:DERIVE:0:U
 -df_complex            value:GAUGE:0:U
 -df_inodes             value:GAUGE:0:U
 -df                    used:GAUGE:0:1125899906842623, free:GAUGE:0:1125899906842623
 -disk_latency          read:GAUGE:0:U, write:GAUGE:0:U
 -disk_merged           read:DERIVE:0:U, write:DERIVE:0:U
 -disk_octets           read:DERIVE:0:U, write:DERIVE:0:U
 -disk_ops_complex      value:DERIVE:0:U
 -disk_ops              read:DERIVE:0:U, write:DERIVE:0:U
 -disk_time             read:DERIVE:0:U, write:DERIVE:0:U
 -disk_io_time          io_time:DERIVE:0:U, weighted_io_time:DERIVE:0:U
 -dns_answer            value:DERIVE:0:U
 -dns_notify            value:DERIVE:0:U
 -dns_octets            queries:DERIVE:0:U, responses:DERIVE:0:U
 -dns_opcode            value:DERIVE:0:U
 -dns_qtype_cached      value:GAUGE:0:4294967295
 -dns_qtype             value:DERIVE:0:U
 -dns_query             value:DERIVE:0:U
 -dns_question          value:DERIVE:0:U
 -dns_rcode             value:DERIVE:0:U
 -dns_reject            value:DERIVE:0:U
 -dns_request           value:DERIVE:0:U
 -dns_resolver          value:DERIVE:0:U
 -dns_response          value:DERIVE:0:U
 -dns_transfer          value:DERIVE:0:U
 -dns_update            value:DERIVE:0:U
 -dns_zops              value:DERIVE:0:U
 -drbd_resource value:DERIVE:0:U
 -duration              seconds:GAUGE:0:U
 -email_check           value:GAUGE:0:U
 -email_count           value:GAUGE:0:U
 -email_size            value:GAUGE:0:U
 -entropy                       value:GAUGE:0:4294967295
 -expired_keys    value:GAUGE:0:U
 -fanspeed              value:GAUGE:0:U
 -file_handles          value:GAUGE:0:U
 -file_size             value:GAUGE:0:U
 -files                 value:GAUGE:0:U
 -flow                  value:GAUGE:0:U
 -fork_rate             value:DERIVE:0:U
 -frequency_offset      value:GAUGE:-1000000:1000000
 -frequency             value:GAUGE:0:U
 -fscache_stat          value:DERIVE:0:U
 -gauge                 value:GAUGE:U:U
 -satellites            value:GAUGE:0:U
 -dilution_of_precision value:GAUGE:0:U
 -hash_collisions               value:DERIVE:0:U
 -http_request_methods  value:DERIVE:0:U
 -http_requests         value:DERIVE:0:U
 -http_response_codes   value:DERIVE:0:U
 -humidity              value:GAUGE:0:100
 -if_collisions         value:DERIVE:0:U
 -if_dropped            rx:DERIVE:0:U, tx:DERIVE:0:U
 -if_errors             rx:DERIVE:0:U, tx:DERIVE:0:U
 -if_multicast          value:DERIVE:0:U
 -if_octets             rx:DERIVE:0:U, tx:DERIVE:0:U
 -if_packets            rx:DERIVE:0:U, tx:DERIVE:0:U
 -if_rx_errors          value:DERIVE:0:U
 -if_rx_octets          value:DERIVE:0:U
 -if_tx_errors          value:DERIVE:0:U
 -if_tx_octets          value:DERIVE:0:U
 -invocations           value:DERIVE:0:U
 -io_octets             rx:DERIVE:0:U, tx:DERIVE:0:U
 -io_packets            rx:DERIVE:0:U, tx:DERIVE:0:U
 -ipt_bytes             value:DERIVE:0:U
 -ipt_packets           value:DERIVE:0:U
 -irq                   value:DERIVE:0:U
 -latency                       value:GAUGE:0:U
 -links                 value:GAUGE:0:U
 -load                  shortterm:GAUGE:0:5000, midterm:GAUGE:0:5000, longterm:GAUGE:0:5000
 -md_disks              value:GAUGE:0:U
 -memcached_command     value:DERIVE:0:U
 -memcached_connections value:GAUGE:0:U
 -memcached_items               value:GAUGE:0:U
 -memcached_octets      rx:DERIVE:0:U, tx:DERIVE:0:U
 -memcached_ops         value:DERIVE:0:U
 -memory                        value:GAUGE:0:281474976710656
 -memory_lua            value:GAUGE:0:281474976710656
 -multimeter            value:GAUGE:U:U
 -mutex_operations      value:DERIVE:0:U
 -mysql_commands                value:DERIVE:0:U
 -mysql_handler         value:DERIVE:0:U
 -mysql_locks           value:DERIVE:0:U
 -mysql_log_position    value:DERIVE:0:U
 -mysql_octets          rx:DERIVE:0:U, tx:DERIVE:0:U
 -mysql_bpool_pages     value:GAUGE:0:U
 -mysql_bpool_bytes     value:GAUGE:0:U
 -mysql_bpool_counters  value:DERIVE:0:U
 -mysql_innodb_data     value:DERIVE:0:U
 -mysql_innodb_dblwr    value:DERIVE:0:U
 -mysql_innodb_log      value:DERIVE:0:U
 -mysql_innodb_pages    value:DERIVE:0:U
 -mysql_innodb_row_lock value:DERIVE:0:U
 -mysql_innodb_rows     value:DERIVE:0:U
 -mysql_select          value:DERIVE:0:U
 -mysql_sort            value:DERIVE:0:U
 -nfs_procedure         value:DERIVE:0:U
 -nginx_connections     value:GAUGE:0:U
 -nginx_requests                value:DERIVE:0:U
 -node_octets           rx:DERIVE:0:U, tx:DERIVE:0:U
 -node_rssi             value:GAUGE:0:255
 -node_stat             value:DERIVE:0:U
 -node_tx_rate          value:GAUGE:0:127
 -objects                       value:GAUGE:0:U
 -operations            value:DERIVE:0:U
 -packets                       value:DERIVE:0:U
 -pending_operations    value:GAUGE:0:U
 -percent                       value:GAUGE:0:100.1
 -percent_bytes         value:GAUGE:0:100.1
 -percent_inodes                value:GAUGE:0:100.1
 -pf_counters           value:DERIVE:0:U
 -pf_limits             value:DERIVE:0:U
 -pf_source             value:DERIVE:0:U
 -pf_states             value:GAUGE:0:U
 -pf_state              value:DERIVE:0:U
 -pg_blks                       value:DERIVE:0:U
 -pg_db_size            value:GAUGE:0:U
 -pg_n_tup_c            value:DERIVE:0:U
 -pg_n_tup_g            value:GAUGE:0:U
 -pg_numbackends                value:GAUGE:0:U
 -pg_scan                       value:DERIVE:0:U
 -pg_xact                       value:DERIVE:0:U
 -ping_droprate         value:GAUGE:0:100
 -ping_stddev           value:GAUGE:0:65535
 -ping                  value:GAUGE:0:65535
 -players                       value:GAUGE:0:1000000
 -power                 value:GAUGE:0:U
 -pressure                      value:GAUGE:0:U
 -protocol_counter      value:DERIVE:0:U
 -ps_code                       value:GAUGE:0:9223372036854775807
 -ps_count              processes:GAUGE:0:1000000, threads:GAUGE:0:1000000
 -ps_cputime            user:DERIVE:0:U, syst:DERIVE:0:U
 -ps_data                       value:GAUGE:0:9223372036854775807
 -ps_disk_octets                read:DERIVE:0:U, write:DERIVE:0:U
 -ps_disk_ops           read:DERIVE:0:U, write:DERIVE:0:U
 -ps_pagefaults         minflt:DERIVE:0:U, majflt:DERIVE:0:U
 -ps_rss                        value:GAUGE:0:9223372036854775807
 -ps_stacksize          value:GAUGE:0:9223372036854775807
 -ps_state              value:GAUGE:0:65535
 -ps_vm                 value:GAUGE:0:9223372036854775807
 -pubsub        value:GAUGE:0:U
 -queue_length          value:GAUGE:0:U
 -records                       value:GAUGE:0:U
 -requests              value:GAUGE:0:U
 -response_time         value:GAUGE:0:U
 -response_code         value:GAUGE:0:U
 -route_etx             value:GAUGE:0:U
 -route_metric          value:GAUGE:0:U
 -routes                        value:GAUGE:0:U
 -segments              value:GAUGE:0:65535
 -serial_octets         rx:DERIVE:0:U, tx:DERIVE:0:U
 -signal_noise          value:GAUGE:U:0
 -signal_power          value:GAUGE:U:0
 -signal_quality                value:GAUGE:0:U
 -smart_poweron         value:GAUGE:0:U
 -smart_powercycles     value:GAUGE:0:U
 -smart_badsectors      value:GAUGE:0:U
 -smart_temperature     value:GAUGE:-300:300
 +absolute                value:ABSOLUTE:0:U
 +apache_bytes            value:DERIVE:0:U
 +apache_connections      value:GAUGE:0:65535
 +apache_idle_workers     value:GAUGE:0:65535
 +apache_requests         value:DERIVE:0:U
 +apache_scoreboard       value:GAUGE:0:65535
 +ath_nodes               value:GAUGE:0:65535
 +ath_stat                value:DERIVE:0:U
 +backends                value:GAUGE:0:65535
 +bitrate                 value:GAUGE:0:4294967295
 +blocked_clients         value:GAUGE:0:U
 +bytes                   value:GAUGE:0:U
 +cache_eviction          value:DERIVE:0:U
 +cache_operation         value:DERIVE:0:U
 +cache_ratio             value:GAUGE:0:100
 +cache_result            value:DERIVE:0:U
 +cache_size              value:GAUGE:0:1125899906842623
 +capacity                value:GAUGE:0:U
 +ceph_bytes              value:GAUGE:U:U
 +ceph_latency            value:GAUGE:U: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
 +conntrack               value:GAUGE:0:4294967295
 +contextswitch           value:DERIVE:0:U
 +count                   value:GAUGE:0:U
 +counter                 value:COUNTER:U:U
 +cpu                     value:DERIVE:0:U
 +cpufreq                 value:GAUGE:0:U
 +current                 value:GAUGE:U:U
 +current_connections     value:GAUGE:0:U
 +current_sessions        value:GAUGE:0:U
 +delay                   value:GAUGE:-1000000:1000000
 +derive                  value:DERIVE:0:U
 +df                      used:GAUGE:0:1125899906842623, free:GAUGE:0:1125899906842623
 +df_complex              value:GAUGE:0:U
 +df_inodes               value:GAUGE:0:U
++dilution_of_precision   value:GAUGE:0:U
 +disk_io_time            io_time:DERIVE:0:U, weighted_io_time:DERIVE:0:U
 +disk_latency            read:GAUGE:0:U, write:GAUGE:0:U
 +disk_merged             read:DERIVE:0:U, write:DERIVE:0:U
 +disk_octets             read:DERIVE:0:U, write:DERIVE:0:U
 +disk_ops                read:DERIVE:0:U, write:DERIVE:0:U
 +disk_ops_complex        value:DERIVE:0:U
 +disk_time               read:DERIVE:0:U, write:DERIVE:0:U
 +dns_answer              value:DERIVE:0:U
 +dns_notify              value:DERIVE:0:U
 +dns_octets              queries:DERIVE:0:U, responses:DERIVE:0:U
 +dns_opcode              value:DERIVE:0:U
 +dns_qtype               value:DERIVE:0:U
 +dns_qtype_cached        value:GAUGE:0:4294967295
 +dns_query               value:DERIVE:0:U
 +dns_question            value:DERIVE:0:U
 +dns_rcode               value:DERIVE:0:U
 +dns_reject              value:DERIVE:0:U
 +dns_request             value:DERIVE:0:U
 +dns_resolver            value:DERIVE:0:U
 +dns_response            value:DERIVE:0:U
 +dns_transfer            value:DERIVE:0:U
 +dns_update              value:DERIVE:0:U
 +dns_zops                value:DERIVE:0:U
 +drbd_resource           value:DERIVE:0:U
 +duration                seconds:GAUGE:0:U
 +email_check             value:GAUGE:0:U
 +email_count             value:GAUGE:0:U
 +email_size              value:GAUGE:0:U
 +entropy                 value:GAUGE:0:4294967295
 +evicted_keys            value:DERIVE:0:U
 +expired_keys            value:DERIVE:0:U
 +fanspeed                value:GAUGE:0:U
 +file_handles            value:GAUGE:0:U
 +file_size               value:GAUGE:0:U
 +files                   value:GAUGE:0:U
 +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
 +hash_collisions         value:DERIVE:0:U
 +http_request_methods    value:DERIVE:0:U
 +http_requests           value:DERIVE:0:U
 +http_response_codes     value:DERIVE:0:U
 +humidity                value:GAUGE:0:100
 +if_collisions           value:DERIVE:0:U
 +if_dropped              rx:DERIVE:0:U, tx:DERIVE:0:U
 +if_errors               rx:DERIVE:0:U, tx:DERIVE:0:U
 +if_multicast            value:DERIVE:0:U
 +if_octets               rx:DERIVE:0:U, tx:DERIVE:0:U
 +if_packets              rx:DERIVE:0:U, tx:DERIVE:0:U
 +if_rx_errors            value:DERIVE:0:U
 +if_rx_octets            value:DERIVE:0:U
 +if_tx_errors            value:DERIVE:0:U
 +if_tx_octets            value:DERIVE:0:U
 +invocations             value:DERIVE:0:U
 +io_octets               rx:DERIVE:0:U, tx:DERIVE:0:U
 +io_packets              rx:DERIVE:0:U, tx:DERIVE:0:U
 +ipt_bytes               value:DERIVE:0:U
 +ipt_packets             value:DERIVE:0:U
 +irq                     value:DERIVE:0:U
 +latency                 value:GAUGE:0:U
 +links                   value:GAUGE:0:U
 +load                    shortterm:GAUGE:0:5000, midterm:GAUGE:0:5000, longterm:GAUGE:0:5000
 +md_disks                value:GAUGE:0:U
 +memcached_command       value:DERIVE:0:U
 +memcached_connections   value:GAUGE:0:U
 +memcached_items         value:GAUGE:0:U
 +memcached_octets        rx:DERIVE:0:U, tx:DERIVE:0:U
 +memcached_ops           value:DERIVE:0:U
 +memory                  value:GAUGE:0:281474976710656
 +memory_lua              value:GAUGE:0:281474976710656
 +memory_throttle_count   value:DERIVE:0:U
 +multimeter              value:GAUGE:U:U
 +mutex_operations        value:DERIVE:0:U
 +mysql_bpool_bytes       value:GAUGE:0:U
 +mysql_bpool_counters    value:DERIVE:0:U
 +mysql_bpool_pages       value:GAUGE:0:U
 +mysql_commands          value:DERIVE:0:U
 +mysql_handler           value:DERIVE:0:U
 +mysql_innodb_data       value:DERIVE:0:U
 +mysql_innodb_dblwr      value:DERIVE:0:U
 +mysql_innodb_log        value:DERIVE:0:U
 +mysql_innodb_pages      value:DERIVE:0:U
 +mysql_innodb_row_lock   value:DERIVE:0:U
 +mysql_innodb_rows       value:DERIVE:0:U
 +mysql_locks             value:DERIVE:0:U
 +mysql_log_position      value:DERIVE:0:U
 +mysql_octets            rx:DERIVE:0:U, tx:DERIVE:0:U
 +mysql_select            value:DERIVE:0:U
 +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
 +node_octets             rx:DERIVE:0:U, tx:DERIVE:0:U
 +node_rssi               value:GAUGE:0:255
 +node_stat               value:DERIVE:0:U
 +node_tx_rate            value:GAUGE:0:127
 +objects                 value:GAUGE:0:U
 +operations              value:DERIVE:0:U
 +operations_per_second   value:GAUGE:0:U
 +packets                 value:DERIVE:0:U
 +pending_operations      value:GAUGE:0:U
 +percent                 value:GAUGE:0:100.1
 +percent_bytes           value:GAUGE:0:100.1
 +percent_inodes          value:GAUGE:0:100.1
 +pf_counters             value:DERIVE:0:U
 +pf_limits               value:DERIVE:0:U
 +pf_source               value:DERIVE:0:U
 +pf_state                value:DERIVE:0:U
 +pf_states               value:GAUGE:0:U
 +pg_blks                 value:DERIVE:0:U
 +pg_db_size              value:GAUGE:0:U
 +pg_n_tup_c              value:DERIVE:0:U
 +pg_n_tup_g              value:GAUGE:0:U
 +pg_numbackends          value:GAUGE:0:U
 +pg_scan                 value:DERIVE:0:U
 +pg_xact                 value:DERIVE:0:U
 +ping                    value:GAUGE:0:65535
 +ping_droprate           value:GAUGE:0:100
 +ping_stddev             value:GAUGE:0:65535
 +players                 value:GAUGE:0:1000000
 +power                   value:GAUGE:0:U
 +pressure                value:GAUGE:0:U
 +protocol_counter        value:DERIVE:0:U
 +ps_code                 value:GAUGE:0:9223372036854775807
 +ps_count                processes:GAUGE:0:1000000, threads:GAUGE:0:1000000
 +ps_cputime              user:DERIVE:0:U, syst:DERIVE:0:U
 +ps_data                 value:GAUGE:0:9223372036854775807
 +ps_disk_octets          read:DERIVE:0:U, write:DERIVE:0:U
 +ps_disk_ops             read:DERIVE:0:U, write:DERIVE:0:U
 +ps_pagefaults           minflt:DERIVE:0:U, majflt:DERIVE:0:U
 +ps_rss                  value:GAUGE:0:9223372036854775807
 +ps_stacksize            value:GAUGE:0:9223372036854775807
 +ps_state                value:GAUGE:0:65535
 +ps_vm                   value:GAUGE:0:9223372036854775807
 +pubsub                  value:GAUGE:0:U
 +queue_length            value:GAUGE:0:U
 +records                 value:GAUGE:0:U
 +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
++satellites              value:GAUGE:0:U
 +segments                value:GAUGE:0:65535
 +serial_octets           rx:DERIVE:0:U, tx:DERIVE:0:U
 +signal_noise            value:GAUGE:U:0
 +signal_power            value:GAUGE:U:0
 +signal_quality          value:GAUGE:0:U
  smart_attribute         current:GAUGE:0:255, worst:GAUGE:0:255, threshold:GAUGE:0:255, pretty:GAUGE:0:U
 -snr                   value:GAUGE:0:U
 -spam_check            value:GAUGE:0:U
 -spam_score            value:GAUGE:U:U
 -spl                   value:GAUGE:U:U
 -swap_io                       value:DERIVE:0:U
 -swap                  value:GAUGE:0:1099511627776
 -tcp_connections               value:GAUGE:0:4294967295
 -temperature           value:GAUGE:U:U
 -threads                       value:GAUGE:0:U
 -time_dispersion               value:GAUGE:-1000000:1000000
 -timeleft              value:GAUGE:0:U
 -time_offset           value:GAUGE:-1000000:1000000
 -total_bytes           value:DERIVE:0:U
 -total_connections     value:DERIVE:0:U
 -total_objects         value:DERIVE:0:U
 -total_operations      value:DERIVE:0:U
 -total_requests                value:DERIVE:0:U
 -total_sessions                value:DERIVE:0:U
 -total_threads         value:DERIVE:0:U
 -total_time_in_ms      value:DERIVE:0:U
 -total_values          value:DERIVE:0:U
 -uptime                        value:GAUGE:0:4294967295
 -users                 value:GAUGE:0:65535
 -vcl                   value:GAUGE:0:65535
 -vcpu                  value:GAUGE:0:U
 -virt_cpu_total                value:DERIVE:0:U
 -virt_vcpu             value:DERIVE:0:U
 -vmpage_action         value:DERIVE:0:U
 -vmpage_faults         minflt:DERIVE:0:U, majflt:DERIVE:0:U
 -vmpage_io             in:DERIVE:0:U, out:DERIVE:0:U
 -vmpage_number         value:GAUGE:0:4294967295
 -volatile_changes      value:GAUGE:0:U
 -voltage_threshold     value:GAUGE:U:U, threshold:GAUGE:U:U
 -voltage                       value:GAUGE:U:U
 -vs_memory             value:GAUGE:0:9223372036854775807
 -vs_processes          value:GAUGE:0:65535
 -vs_threads            value:GAUGE:0:65535
 +smart_badsectors        value:GAUGE:0:U
 +smart_powercycles       value:GAUGE:0:U
 +smart_poweron           value:GAUGE:0:U
 +smart_temperature       value:GAUGE:-300:300
 +snr                     value:GAUGE:0:U
 +spam_check              value:GAUGE:0:U
 +spam_score              value:GAUGE:U:U
 +spl                     value:GAUGE:U:U
 +swap                    value:GAUGE:0:1099511627776
 +swap_io                 value:DERIVE:0:U
 +tcp_connections         value:GAUGE:0:4294967295
 +temperature             value:GAUGE:U: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
 +total_objects           value:DERIVE:0:U
 +total_operations        value:DERIVE:0:U
 +total_requests          value:DERIVE:0:U
 +total_sessions          value:DERIVE:0:U
 +total_threads           value:DERIVE:0:U
 +total_time_in_ms        value:DERIVE:0:U
 +total_values            value:DERIVE:0:U
 +uptime                  value:GAUGE:0:4294967295
 +users                   value:GAUGE:0:65535
 +vcl                     value:GAUGE:0:65535
 +vcpu                    value:GAUGE:0:U
 +virt_cpu_total          value:DERIVE:0:U
 +virt_vcpu               value:DERIVE:0:U
 +vmpage_action           value:DERIVE:0:U
 +vmpage_faults           minflt:DERIVE:0:U, majflt:DERIVE:0:U
 +vmpage_io               in:DERIVE:0:U, out:DERIVE:0:U
 +vmpage_number           value:GAUGE:0:4294967295
 +volatile_changes        value:GAUGE:0:U
 +voltage                 value:GAUGE:U:U
 +voltage_threshold       value:GAUGE:U:U, threshold:GAUGE:U:U
 +vs_memory               value:GAUGE:0:9223372036854775807
 +vs_processes            value:GAUGE:0:65535
 +vs_threads              value:GAUGE:0:65535
  
  #
  # Legacy types