merge upstream
authorEvgeny Naumov <evgeny.a.naumov@gmail.com>
Mon, 22 Oct 2018 15:24:20 +0000 (11:24 -0400)
committerEvgeny Naumov <evgeny.a.naumov@gmail.com>
Mon, 22 Oct 2018 15:24:20 +0000 (11:24 -0400)
1  2 
Makefile.am
configure.ac
src/collectd.conf.in
src/collectd.conf.pod

diff --combined Makefile.am
@@@ -127,7 -127,7 +127,7 @@@ bin_PROGRAMS = 
  endif # BUILD_WIN32
  
  
EXTRA_LTLIBRARIES = \
noinst_LTLIBRARIES = \
        libavltree.la \
        libcmds.la \
        libcommon.la \
@@@ -574,6 -574,68 +574,68 @@@ liboconfig_la_SOURCES = 
  liboconfig_la_CPPFLAGS = -I$(srcdir)/src/liboconfig $(AM_CPPFLAGS)
  liboconfig_la_LDFLAGS = -avoid-version $(LEXLIB)
  
+ if BUILD_WITH_LIBCURL
+ if BUILD_WITH_LIBSSL
+ if BUILD_WITH_LIBYAJL2
+ noinst_LTLIBRARIES += liboauth.la
+ liboauth_la_SOURCES = \
+       src/utils_oauth.c \
+       src/utils_oauth.h
+ liboauth_la_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       $(BUILD_WITH_LIBCURL_CFLAGS) \
+       $(BUILD_WITH_LIBSSL_CFLAGS) \
+       $(BUILD_WITH_LIBYAJL_CPPFLAGS)
+ liboauth_la_LIBADD = \
+       $(BUILD_WITH_LIBCURL_LIBS) \
+       $(BUILD_WITH_LIBSSL_LIBS) \
+       $(BUILD_WITH_LIBYAJL_LIBS)
+ check_PROGRAMS += test_utils_oauth
+ TESTS += test_utils_oauth
+ test_utils_oauth_SOURCES = \
+       src/utils_oauth_test.c
+ test_utils_oauth_LDADD = \
+       liboauth.la \
+       libcommon.la \
+       libplugin_mock.la
+ noinst_LTLIBRARIES += libgce.la
+ libgce_la_SOURCES = \
+       src/utils_gce.c \
+       src/utils_gce.h
+ libgce_la_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       $(BUILD_WITH_LIBCURL_CFLAGS)
+ libgce_la_LIBADD = \
+       $(BUILD_WITH_LIBCURL_LIBS)
+ endif
+ endif
+ endif
+ if BUILD_WITH_LIBYAJL2
+ noinst_LTLIBRARIES += libformat_stackdriver.la
+ libformat_stackdriver_la_SOURCES = \
+       src/utils_format_stackdriver.c \
+       src/utils_format_stackdriver.h
+ libformat_stackdriver_la_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       $(BUILD_WITH_LIBYAJL_CPPFLAGS)
+ libformat_stackdriver_la_LIBADD = \
+       libavltree.la \
+       $(BUILD_WITH_LIBSSL_LIBS) \
+       $(BUILD_WITH_LIBYAJL_LIBS)
+ check_PROGRAMS += test_format_stackdriver
+ TESTS += test_format_stackdriver
+ test_format_stackdriver_SOURCES = \
+       src/utils_format_stackdriver_test.c \
+       src/testing.h
+ test_format_stackdriver_LDADD = \
+       libformat_stackdriver.la \
+       libplugin_mock.la \
+       -lm
+ endif
  
  if BUILD_PLUGIN_AGGREGATION
  pkglib_LTLIBRARIES += aggregation.la
@@@ -952,13 -1014,6 +1014,13 @@@ gps_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BU
  gps_la_LIBADD = -lpthread $(BUILD_WITH_LIBGPS_LIBS)
  endif
  
 +if BUILD_PLUGIN_GPU_NVML
 +pkglib_LTLIBRARIES += gpu_nvml.la
 +gpu_nvml_la_SOURCES = src/gpu_nvml.c
 +gpu_nvml_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_GPU_CUDA_LDFLAGS)
 +gpu_nvml_la_LIBADD = $(BUILD_WITH_CUDA_LIBS)
 +endif
 +
  if BUILD_PLUGIN_GRPC
  pkglib_LTLIBRARIES += grpc.la
  grpc_la_SOURCES = src/grpc.cc
@@@ -1524,7 -1579,7 +1586,7 @@@ python_la_LDFLAGS = $(PLUGIN_LDFLAGS) $
  endif
  
  if HAVE_LIBMNL
EXTRA_LTLIBRARIES += libtaskstats.la
noinst_LTLIBRARIES += libtaskstats.la
  libtaskstats_la_SOURCES = \
        src/utils_taskstats.c \
        src/utils_taskstats.h
@@@ -1984,6 -2039,15 +2046,15 @@@ write_sensu_la_SOURCES = src/write_sens
  write_sensu_la_LDFLAGS = $(PLUGIN_LDFLAGS)
  endif
  
+ if BUILD_PLUGIN_WRITE_STACKDRIVER
+ pkglib_LTLIBRARIES += write_stackdriver.la
+ write_stackdriver_la_SOURCES = src/write_stackdriver.c
+ write_stackdriver_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ write_stackdriver_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
+ write_stackdriver_la_LIBADD = libformat_stackdriver.la libgce.la liboauth.la \
+                      $(BUILD_WITH_LIBCURL_LIBS)
+ endif
  if BUILD_PLUGIN_WRITE_TSDB
  pkglib_LTLIBRARIES += write_tsdb.la
  write_tsdb_la_SOURCES = src/write_tsdb.c
diff --combined configure.ac
@@@ -2074,58 -2074,6 +2074,58 @@@ if test "x$with_kvm_openfiles" = "xyes"
    with_libkvm="yes"
  fi
  
 +# --with-cuda {{{
 +# only CUDA provides the nvml.h header
 +AC_ARG_WITH([cuda],
 +  [AS_HELP_STRING([--with-cuda@<:@=PREFIX@:>@], [Path to cuda.])],
 +  [
 +    if test "x$withval" = "xyes"; then
 +      with_cuda="yes"
 +    else if test "x$withval" = "xno"; then
 +      with_cuda="no"
 +    else
 +      with_cuda="yes"
 +      CUDA_CFLAGS="$CUDA_CFLAGS -I$withval/include"
 +      CUDA_LDFLAGS="$CUDA_LDFLAGS -L$withval/lib"
 +    fi; fi
 +  ],
 +  [ with_cuda="yes"
 +    CUDA_CFLAGS="$CUDA_CFLAGS -I/opt/cuda/include"
 +    CUDA_LDFLAGS="$CUDA_LDFLAGS -L/opt/cuda/lib64"
 +  ]
 +)
 +
 +SAVE_CFLAGS="$CFLAGS"
 +SAVE_LDFLAGS="$LDFLAGS"
 +CFLAGS="$CFLAGS $CUDA_CFLAGS"
 +LDFLAGS="$LDFLAGS $CUDA_LDFLAGS"
 +
 +if test "x$with_cuda" = "xyes"; then
 +  AC_CHECK_HEADERS([nvml.h],
 +    [with_cuda="yes"],
 +    [with_cuda="no (header file missing)"]
 +  )
 +fi
 +
 +if test "x$with_cuda" = "xpkgconfig"; then
 +  AC_CHECK_HEADERS([nvml.h],
 +    [],
 +    [with_cuda="no (header file missing)"]
 +  )
 +fi
 +
 +if test "x$with_cuda" = "xyes"; then
 +  BUILD_WITH_CUDA_CFLAGS="$CUDA_CFLAGS"
 +  BUILD_WITH_CUDA_LDFLAGS="$CUDA_LDFLAGS"
 +  BUILD_WITH_CUDA_LIBS="-lnvidia-ml"
 +fi
 +
 +AC_SUBST([BUILD_WITH_CUDA_CFLAGS])
 +AC_SUBST([BUILD_WITH_CUDA_LDFLAGS])
 +AC_SUBST([BUILD_WITH_CUDA_LIBS])
 +
 +# }}}
 +
  # --with-libaquaero5 {{{
  AC_ARG_WITH([libaquaero5],
    [AS_HELP_STRING([--with-libaquaero5@<:@=PREFIX@:>@], [Path to aquatools-ng source code.])],
  
  AC_SUBST(BUILD_WITH_LIBCURL_CFLAGS)
  AC_SUBST(BUILD_WITH_LIBCURL_LIBS)
+ AM_CONDITIONAL([BUILD_WITH_LIBCURL], [test "x$with_libcurl" = "xyes"])
  # }}}
  
  # --with-libdbi {{{
@@@ -5286,6 -5236,55 +5288,55 @@@ PKG_CHECK_MODULES([LIBSIGROK], [libsigr
  )
  # }}}
  
+ # --with-libssl {{{
+ with_libssl_cflags=""
+ with_libssl_ldflags=""
+ AC_ARG_WITH([libssl], [AS_HELP_STRING([--with-libssl@<:@=PREFIX@:>@], [Path to libssl.])],
+ [
+       if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
+               with_libssl_cppflags="-I$withval/include"
+               with_libssl_ldflags="-L$withval/lib"
+               with_libssl="yes"
+       else
+               with_libssl="$withval"
+       fi
+ ],
+ [
+       with_libssl="yes"
+ ])
+ if test "x$with_libssl" = "xyes"; then
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS $with_libssl_cppflags"
+   AC_CHECK_HEADERS([openssl/sha.h openssl/blowfish.h openssl/rand.h],
+     [with_libssl="yes"],
+     [with_libssl="no (ssl header not found)"])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+ fi
+ if test "x$with_libssl" = "xyes"; then
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+       CPPFLAGS="$CPPFLAGS $with_libssl_cppflags"
+       LDFLAGS="$LDFLAGS $with_libssl_ldflags"
+       AC_CHECK_LIB([ssl], [OPENSSL_init_ssl], [with_libssl="yes"], [with_libssl="no (Symbol 'SSL_library_init' not found)"])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
+ fi
+ if test "x$with_libssl" = "xyes"; then
+       BUILD_WITH_LIBSSL_CFLAGS="$with_libssl_cflags"
+       BUILD_WITH_LIBSSL_LDFLAGS="$with_libssl_ldflags"
+       BUILD_WITH_LIBSSL_LIBS="-lssl -lcrypto"
+       AC_SUBST([BUILD_WITH_LIBSSL_CFLAGS])
+       AC_SUBST([BUILD_WITH_LIBSSL_LDFLAGS])
+       AC_SUBST([BUILD_WITH_LIBSSL_LIBS])
+       AC_DEFINE([HAVE_LIBSSL], [1], [Define if libssl is present and usable.])
+ fi
+ AM_CONDITIONAL(BUILD_WITH_LIBSSL, test "x$with_libssl" = "xyes")
+ # }}}
  # --with-libstatgrab {{{
  AC_ARG_WITH([libstatgrab],
    [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [Path to libstatgrab.])],
@@@ -5841,6 -5840,7 +5892,7 @@@ AC_SUBST([BUILD_WITH_LIBYAJL_LDFLAGS]
  AC_SUBST([BUILD_WITH_LIBYAJL_LIBS])
  
  AM_CONDITIONAL([BUILD_WITH_LIBYAJL], [test "x$with_libyajl" = "xyes"])
+ AM_CONDITIONAL([BUILD_WITH_LIBYAJL2], [test "x$with_libyajl$with_libyajl2" = "xyesyes"])
  # }}}
  
  # --with-mic {{{
@@@ -6362,7 -6362,6 +6414,7 @@@ plugin_ethstat="no
  plugin_fhcount="no"
  plugin_fscache="no"
  plugin_gps="no"
 +plugin_gpu_nvml="no"
  plugin_grpc="no"
  plugin_hugepages="no"
  plugin_intel_pmu="no"
@@@ -6403,6 -6402,7 +6455,7 @@@ plugin_vmem="no
  plugin_vserver="no"
  plugin_wireless="no"
  plugin_write_prometheus="no"
+ plugin_write_stackdriver="no"
  plugin_xencpu="no"
  plugin_zfs_arc="no"
  plugin_zone="no"
@@@ -6561,6 -6561,10 +6614,10 @@@ if test "x$with_libcurl" = "xyes" && te
    plugin_curl_json="yes"
  fi
  
+ if test "x$with_libcurl" = "xyes" && test "x$with_libssl" = "xyes" && test "x$with_libyajl" = "xyes" && test "x$with_libyajl2" = "xyes"; then
+   plugin_write_stackdriver="yes"
+ fi
  if test "x$with_libcurl" = "xyes" && test "x$with_libxml2" = "xyes"; then
    plugin_curl_xml="yes"
  fi
@@@ -6749,164 -6753,164 +6806,165 @@@ 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([amqp1],               [$with_libqpid_proton],    [AMQP 1.0 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([dpdkevents],          [$plugin_dpdkevents],      [Events from DPDK])
- AC_PLUGIN([dpdkstat],            [$plugin_dpdkstat],        [Stats from DPDK])
- 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([gpu_nvml],            [$with_cuda],              [NVIDIA GPU plugin])
- AC_PLUGIN([grpc],                [$plugin_grpc],            [gRPC plugin])
- AC_PLUGIN([hddtemp],             [yes],                     [Query hddtempd])
- AC_PLUGIN([hugepages],           [$plugin_hugepages],       [Hugepages statistics])
- AC_PLUGIN([intel_pmu],           [$with_libjevents],        [Intel performance monitor plugin])
- AC_PLUGIN([intel_rdt],           [$with_libpqos],           [Intel RDT monitor plugin])
- 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([lua],                 [$with_liblua],            [Lua plugin])
- 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([mcelog],              [$plugin_mcelog],          [Machine Check Exceptions notifications])
- 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([ovs_events],          [$plugin_ovs_events],      [OVS events plugin])
- AC_PLUGIN([ovs_stats],           [$plugin_ovs_stats],       [OVS statistics plugin])
- AC_PLUGIN([pcie_errors],         [$plugin_pcie_errors],     [PCIe errors 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([amqp1],               [$with_libqpid_proton],      [AMQP 1.0 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([dpdkevents],          [$plugin_dpdkevents],        [Events from DPDK])
+ AC_PLUGIN([dpdkstat],            [$plugin_dpdkstat],          [Stats from DPDK])
+ 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([gpu_nvml],            [$with_cuda],                [NVIDIA GPU plugin])
+ AC_PLUGIN([grpc],                [$plugin_grpc],              [gRPC plugin])
+ AC_PLUGIN([hddtemp],             [yes],                       [Query hddtempd])
+ AC_PLUGIN([hugepages],           [$plugin_hugepages],         [Hugepages statistics])
+ AC_PLUGIN([intel_pmu],           [$with_libjevents],          [Intel performance monitor plugin])
+ AC_PLUGIN([intel_rdt],           [$with_libpqos],             [Intel RDT monitor plugin])
+ 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([lua],                 [$with_liblua],              [Lua plugin])
+ 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([mcelog],              [$plugin_mcelog],            [Machine Check Exceptions notifications])
+ 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([ovs_events],          [$plugin_ovs_events],        [OVS events plugin])
+ AC_PLUGIN([ovs_stats],           [$plugin_ovs_stats],         [OVS statistics plugin])
+ AC_PLUGIN([pcie_errors],         [$plugin_pcie_errors],       [PCIe errors 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],               [$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([snmp_agent],          [$with_libnetsnmpagent],   [SNMP agent plugin])
- AC_PLUGIN([statsd],              [yes],                     [StatsD plugin])
- AC_PLUGIN([swap],                [$plugin_swap],            [Swap usage statistics])
- AC_PLUGIN([synproxy],            [$plugin_synproxy],        [Synproxy stats plugin])
- 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_prometheus],    [$plugin_write_prometheus], [Prometheus write 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])
+ 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([snmp_agent],          [$with_libnetsnmpagent],     [SNMP agent plugin])
+ AC_PLUGIN([statsd],              [yes],                       [StatsD plugin])
+ AC_PLUGIN([swap],                [$plugin_swap],              [Swap usage statistics])
+ AC_PLUGIN([synproxy],            [$plugin_synproxy],          [Synproxy stats plugin])
+ 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_stackdriver],   [$plugin_write_stackdriver], [Google Stackdriver Monitoring 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_prometheus],    [$plugin_write_prometheus],  [Prometheus write 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
@@@ -7098,7 -7102,6 +7156,7 @@@ AC_MSG_RESULT([    YACC  . . . . . . . 
  AC_MSG_RESULT([    YFLAGS  . . . . . . . $YFLAGS])
  AC_MSG_RESULT()
  AC_MSG_RESULT([  Libraries:])
 +AC_MSG_RESULT([    cuda  . . . . . . . . $with_cuda])
  AC_MSG_RESULT([    intel mic . . . . . . $with_mic])
  AC_MSG_RESULT([    libaquaero5 . . . . . $with_libaquaero5])
  AC_MSG_RESULT([    libatasmart . . . . . $with_libatasmart])
@@@ -7151,6 -7154,7 +7209,7 @@@ AC_MSG_RESULT([    librouteros . . . . 
  AC_MSG_RESULT([    librrd  . . . . . . . $with_librrd])
  AC_MSG_RESULT([    libsensors  . . . . . $with_libsensors])
  AC_MSG_RESULT([    libsigrok   . . . . . $with_libsigrok])
+ AC_MSG_RESULT([    libssl  . . . . . . . $with_libssl])
  AC_MSG_RESULT([    libstatgrab . . . . . $with_libstatgrab])
  AC_MSG_RESULT([    libtokyotyrant  . . . $with_libtokyotyrant])
  AC_MSG_RESULT([    libudev . . . . . . . $with_libudev])
@@@ -7212,7 -7216,6 +7271,7 @@@ AC_MSG_RESULT([    filecount . . . . . 
  AC_MSG_RESULT([    fscache . . . . . . . $enable_fscache])
  AC_MSG_RESULT([    gmond . . . . . . . . $enable_gmond])
  AC_MSG_RESULT([    gps . . . . . . . . . $enable_gps])
 +AC_MSG_RESULT([    gpu_nvml  . . . . . . $enable_gpu_nvml])
  AC_MSG_RESULT([    grpc  . . . . . . . . $enable_grpc])
  AC_MSG_RESULT([    hddtemp . . . . . . . $enable_hddtemp])
  AC_MSG_RESULT([    hugepages . . . . . . $enable_hugepages])
@@@ -7324,6 -7327,7 +7383,7 @@@ AC_MSG_RESULT([    write_prometheus. . 
  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_stackdriver . . $enable_write_stackdriver])
  AC_MSG_RESULT([    write_tsdb  . . . . . $enable_write_tsdb])
  AC_MSG_RESULT([    xencpu  . . . . . . . $enable_xencpu])
  AC_MSG_RESULT([    xmms  . . . . . . . . $enable_xmms])
diff --combined src/collectd.conf.in
  #@BUILD_PLUGIN_WRITE_REDIS_TRUE@LoadPlugin write_redis
  #@BUILD_PLUGIN_WRITE_RIEMANN_TRUE@LoadPlugin write_riemann
  #@BUILD_PLUGIN_WRITE_SENSU_TRUE@LoadPlugin write_sensu
+ #@BUILD_PLUGIN_WRITE_STACKDRIVER_TRUE@LoadPlugin write_stackdriver
  #@BUILD_PLUGIN_WRITE_TSDB_TRUE@LoadPlugin write_tsdb
  #@BUILD_PLUGIN_XENCPU_TRUE@LoadPlugin xencpu
  #@BUILD_PLUGIN_XMMS_TRUE@LoadPlugin xmms
  #  PauseConnect 5
  #</Plugin>
  
 +#<Plugin gpu_nvml>
 +#   GPUIndex 0
 +#   GPUIndex 2
 +#   IgnoreSelected 0
 +#</Plugin>
 +
  #<Plugin grpc>
  #     <Server "example.com" "50051">
  #             EnableSSL true
  #     Attribute "foo" "bar"
  #</Plugin>
  
+ #<Plugin write_stackdriver>
+ #  Project "stackdriver-account"
+ #  CredentialFile "/path/to/gcp-project-id-12345.json"
+ #  Email "123456789012@developer.gserviceaccount.com"
+ #  <Resource "global">
+ #    Label "project_id" "gcp-project-id"
+ #  </Resource>
+ #  Url "https://monitoring.googleapis.com/v3"
+ #</Plugin>
  #<Plugin write_tsdb>
  #     <Node>
  #             Host "localhost"
diff --combined src/collectd.conf.pod
@@@ -1662,6 -1662,10 +1662,10 @@@ installed) to get the current CPU frequ
  sure B<cpufreqd> (L<http://cpufreqd.sourceforge.net/>) or a similar tool is
  installed and an "cpu governor" (that's a kernel module) is loaded.
  
+ If the system has the I<cpufreq-stats> kernel module loaded, this plugin reports
+ the rate of p-state (cpu frequency) transitions and the percentage of time spent
+ in each p-state.
  =head2 Plugin C<cpusleep>
  
  This plugin doesn't have any options. It reads CLOCK_BOOTTIME and
@@@ -3206,30 -3210,6 +3210,30 @@@ Pause to apply between attempts of conn
  
  =back
  
 +=head2 Plugin C<gpu_nvml>
 +
 +Efficiently collects various statistics from the system's NVIDIA GPUs using the
 +NVML library. Currently collected are fan speed, core temperature, percent
 +load, percent memory used, compute and memory frequencies, and power
 +consumption.
 +
 +=over 4
 +
 +=item B<GPUIndex>
 +
 +If one or more of these options is specified, only GPUs at that index (as
 +determined by nvidia-utils through I<nvidia-smi>) have statistics collected.
 +If no instance of this option is specified, all GPUs are monitored.
 +
 +=item B<IgnoreSelected>
 +
 +If set to true, all detected GPUs B<except> the ones at indices specified by
 +B<GPUIndex> entries are collected. For greater clarity, setting IgnoreSelected
 +without any GPUIndex directives will result in B<no> statistics being
 +collected.
 +
 +=back
 +
  =head2 Plugin C<grpc>
  
  The I<grpc> plugin provides an RPC interface to submit values to or query
@@@ -9130,6 -9110,40 +9134,40 @@@ only on the host system
  
  Only I<Connection> is required.
  
+ Consider the following example config:
+  <Plugin "virt">
+    Connection "qemu:///system"
+    HostnameFormat "hostname"
+    InterfaceFormat "address"
+    PluginInstanceFormat "name"
+  </Plugin>
+ It will generate the following values:
+   node42.example.com/virt-instance-0006f26c/disk_octets-vda
+   node42.example.com/virt-instance-0006f26c/disk_ops-vda
+   node42.example.com/virt-instance-0006f26c/if_dropped-ca:fe:ca:fe:ca:fe
+   node42.example.com/virt-instance-0006f26c/if_errors-ca:fe:ca:fe:ca:fe
+   node42.example.com/virt-instance-0006f26c/if_octets-ca:fe:ca:fe:ca:fe
+   node42.example.com/virt-instance-0006f26c/if_packets-ca:fe:ca:fe:ca:fe
+   node42.example.com/virt-instance-0006f26c/memory-actual_balloon
+   node42.example.com/virt-instance-0006f26c/memory-available
+   node42.example.com/virt-instance-0006f26c/memory-last_update
+   node42.example.com/virt-instance-0006f26c/memory-major_fault
+   node42.example.com/virt-instance-0006f26c/memory-minor_fault
+   node42.example.com/virt-instance-0006f26c/memory-rss
+   node42.example.com/virt-instance-0006f26c/memory-swap_in
+   node42.example.com/virt-instance-0006f26c/memory-swap_out
+   node42.example.com/virt-instance-0006f26c/memory-total
+   node42.example.com/virt-instance-0006f26c/memory-unused
+   node42.example.com/virt-instance-0006f26c/memory-usable
+   node42.example.com/virt-instance-0006f26c/virt_cpu_total
+   node42.example.com/virt-instance-0006f26c/virt_vcpu-0
+ You can get information on the metric's units from the online libvirt documentation.
+ For instance, I<virt_cpu_total> is in nanoseconds.
  =over 4
  
  =item B<Connection> I<uri>
@@@ -9232,7 -9246,8 +9270,8 @@@ B<uuid> means use the guest's UUID. Thi
  same guest across migrations.
  
  B<hostname> means to use the global B<Hostname> setting, which is probably not
- useful on its own because all guests will appear to have the same name.
+ useful on its own because all guests will appear to have the same name. This is
+ useful in conjunction with B<PluginInstanceFormat> though.
  
  You can also specify combinations of these fields. For example B<name uuid>
  means to concatenate the guest name and UUID (with a literal colon character
@@@ -10331,6 -10346,133 +10370,133 @@@ attribute for each metric being sent ou
  
  =back
  
+ =head2 Plugin C<write_stackdriver>
+ The C<write_stackdriver> plugin writes metrics to the
+ I<Google Stackdriver Monitoring> service.
+ This plugin supports two authentication methods: When configured, credentials
+ are read from the JSON credentials file specified with B<CredentialFile>.
+ Alternatively, when running on
+ I<Google Compute Engine> (GCE), an I<OAuth> token is retrieved from the
+ I<metadata server> and used to authenticate to GCM.
+ B<Synopsis:>
+  <Plugin write_stackdriver>
+    CredentialFile "/path/to/service_account.json"
+    <Resource "global">
+      Label "project_id" "monitored_project"
+    </Resource>
+  </Plugin>
+ =over 4
+ =item B<CredentialFile> I<file>
+ Path to a JSON credentials file holding the credentials for a GCP service
+ account.
+ If B<CredentialFile> is not specified, the plugin uses I<Application Default
+ Credentials>. That means which credentials are used depends on the environment:
+ =over 4
+ =item
+ The environment variable C<GOOGLE_APPLICATION_CREDENTIALS> is checked. If this
+ variable is specified it should point to a JSON file that defines the
+ credentials.
+ =item
+ The path C<${HOME}/.config/gcloud/application_default_credentials.json> is
+ checked. This where credentials used by the I<gcloud> command line utility are
+ stored. You can use C<gcloud auth application-default login> to create these
+ credentials.
+ Please note that these credentials are often of your personal account, not a
+ service account, and are therefore unfit to be used in a production
+ environment.
+ =item
+ When running on GCE, the built-in service account associated with the virtual
+ machine instance is used.
+ See also the B<Email> option below.
+ =back
+ =item B<Project> I<Project>
+ The I<Project ID> or the I<Project Number> of the I<Stackdriver Account>. The
+ I<Project ID> is a string identifying the GCP project, which you can chose
+ freely when creating a new project. The I<Project Number> is a 12-digit decimal
+ number. You can look up both on the I<Developer Console>.
+ This setting is optional. If not set, the project ID is read from the
+ credentials file or determined from the GCE's metadata service.
+ =item B<Email> I<Email> (GCE only)
+ Choses the GCE I<Service Account> used for authentication.
+ Each GCE instance has a C<default> I<Service Account> but may also be
+ associated with additional I<Service Accounts>. This is often used to restrict
+ the permissions of services running on the GCE instance to the required
+ minimum. The I<write_stackdriver plugin> requires the
+ C<https://www.googleapis.com/auth/monitoring> scope. When multiple I<Service
+ Accounts> are available, this option selects which one is used by
+ I<write_stackdriver plugin>.
+ =item B<Resource> I<ResourceType>
+ Configures the I<Monitored Resource> to use when storing metrics.
+ More information on I<Monitored Resources> and I<Monitored Resource Types> are
+ available at L<https://cloud.google.com/monitoring/api/resources>.
+ This block takes one string argument, the I<ResourceType>. Inside the block are
+ one or more B<Label> options which configure the resource labels.
+ This block is optional. The default value depends on the runtime environment:
+ on GCE, the C<gce_instance> resource type is used, otherwise the C<global>
+ resource type ist used:
+ =over 4
+ =item
+ B<On GCE>, defaults to the equivalent of this config:
+   <Resource "gce_instance">
+     Label "project_id" "<project_id>"
+     Label "instance_id" "<instance_id>"
+     Label "zone" "<zone>"
+   </Resource>
+ The values for I<project_id>, I<instance_id> and I<zone> are read from the GCE
+ metadata service.
+ =item
+ B<Elsewhere>, i.e. not on GCE, defaults to the equivalent of this config:
+   <Resource "global">
+     Label "project_id" "<Project>"
+   </Resource>
+ Where I<Project> refers to the value of the B<Project> option or the project ID
+ inferred from the B<CredentialFile>.
+ =back
+ =item B<Url> I<Url>
+ URL of the I<Stackdriver Monitoring> API. Defaults to
+ C<https://monitoring.googleapis.com/v3>.
+ =back
  =head2 Plugin C<xencpu>
  
  This plugin collects metrics of hardware CPU load for machine running Xen