From: Marc Fournier Date: Tue, 9 Aug 2016 11:14:04 +0000 (+0200) Subject: Merge remote-tracking branch 'origin/pr/1346' X-Git-Tag: collectd-5.6.0~73 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=1bdfcf9791729310f75857d0e002c40ef659a89b Merge remote-tracking branch 'origin/pr/1346' Conflicts: README configure.ac src/Makefile.am src/collectd.conf.in src/collectd.conf.pod src/types.db --- 1bdfcf9791729310f75857d0e002c40ef659a89b diff --cc README index e5d5c371,a55b2a2b..f2df12cd --- a/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 1bc02bc1,08496dc9..1bacddd1 --- a/configure.ac +++ b/configure.ac @@@ -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 ( 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::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" @@@ -5868,6 -5593,11 +5919,11 @@@ the 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 @@@ -6316,233 -6015,224 +6373,235 @@@ the with_perl_bindings="yes ($PERL_BINDINGS_OPTIONS)" fi -cat < # + # + # Host "127.0.0.1" + # Port "2947" + # Timeout 0.015 + # PauseConnect 5 + # + +# +# WorkerThreads 5 +# +# EnableSSL true +# SSLRootCerts "/path/to/root.pem" +# SSLServerCert "/path/to/server.pem" +# SSLServerKey "/path/to/server.key" +# +# + # # Host "127.0.0.1" # Port "7634" diff --cc src/collectd.conf.pod index 088ec5d0,bbee6b13..6ada5f16 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@@ -2641,51 -2482,78 +2641,123 @@@ source, this is optional. Otherwise th =back + =head2 Plugin C + + The C 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 + + Number of satellites used for fix (type instance "used") and in view (type + instance "visible"). 0 means no GPS satellites are visible. + + =item B + + 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 + + # 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 + + + Available configuration options: + + =over 4 + + =item B I + + The host on which gpsd daemon runs. Defaults to B. + + =item B I + + Port to connect to gpsd on the host machine. Defaults to B<2947>. + + =item B I + + Timeout in seconds (default 0.015 sec). + + The GPS data stream is fetch by the plugin form the daemon. -It waits for data to be available, if none arrives it times out ++It waits for data to be available, if none arrives it times out + and loop for another reading. -Mind to put a low value gpsd expects value in the micro-seconds area ++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 ++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 I + + Pause to apply between attempts of connection to gpsd in seconds (default 5 sec). + + =back + +=head2 Plugin C + +The I 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 homepage can be found at L. + +=over 4 + +=item B I I + +The B 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 may be a hostname, an IPv4 address, or an IPv6 address. + +Optionally, B may be specified as a configuration block which +supports the following options: + +=over 4 + +=item B I|I + +Whether to enable SSL for incoming connections. Default: false. + +=item B I + +=item B I + +=item B I + +Filenames specifying SSL certificate and key material to be used with SSL +connections. + +=back + +=item B I + +Number of threads to start for handling incoming connections. The default +value is B<5>. + +=back + =head2 Plugin C To get values from B collectd connects to B (127.0.0.1), diff --cc src/gps.c index 00000000,e43af4a4..04de5aa9 mode 000000,100644..100644 --- a/src/gps.c +++ 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 + * Florian octo Forster + * Marc Fournier + **/ + + #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 + #include + + 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 8c6a9956,e722ce6d..cc79af07 --- a/src/types.db +++ b/src/types.db @@@ -1,252 -1,235 +1,254 @@@ -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