Merge remote-tracking branch 'origin/pr/693'
authorMarc Fournier <marc.fournier@camptocamp.com>
Wed, 8 Apr 2015 22:06:25 +0000 (00:06 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Wed, 8 Apr 2015 22:06:25 +0000 (00:06 +0200)
Conflicts:
src/collectd.conf.pod

1  2 
README
src/collectd.conf.pod

diff --combined README
--- 1/README
--- 2/README
+++ b/README
@@@ -16,26 -16,25 +16,26 @@@ Feature
    * collectd is able to collect the following data:
  
      - apache
 -      Apache server utilization: Number of bytes transfered, number of
 +      Apache server utilization: Number of bytes transferred, number of
        requests handled and detailed scoreboard statistics
  
      - apcups
        APC UPS Daemon: UPS charge, load, input/output/battery voltage, etc.
  
      - apple_sensors
 -      Sensors in Macs running Mac OS X / Darwin: Temperature, fanspeed and
 +      Sensors in Macs running Mac OS X / Darwin: Temperature, fan speed and
        voltage sensors.
  
      - aquaero
 -      Various sensors in the Aquaero 5 watercooling board made by Aquacomputer.
 +      Various sensors in the Aquaero 5 water cooling board made by Aquacomputer.
  
      - ascent
        Statistics about Ascent, a free server for the game `World of Warcraft'.
  
      - barometer
-       Using digital barometer sensor MPL115A2 or MPL3115 from Freescale
-       provides absolute barometric pressure, air pressure reduced to sea level
-       and temperature.
 -      Reads absolute barometric pressure, air pressure reduced to sea level and temperature.
 -      Supported sensors are MPL115A2 and MPL3115 from Freescale and BMP085 from Bosch.
++      Reads absolute barometric pressure, air pressure reduced to sea level and
++      temperature.  Supported sensors are MPL115A2 and MPL3115 from Freescale
++      and BMP085 from Bosch.
  
      - battery
        Batterycharge, -current and voltage of ACPI and PMU based laptop
@@@ -45,9 -44,6 +45,9 @@@
        Name server and resolver statistics from the `statistics-channel'
        interface of BIND 9.5, 9,6 and later.
  
 +    - ceph
 +      Statistics from the Ceph distributed storage system.
 +
      - cgroups
        CPU accounting information for process groups under Linux.
  
  
      - dns
        DNS traffic: Query types, response codes, opcodes and traffic/octets
 -      transfered.
 +      transferred.
 +
 +    - drbd
 +      Collect individual drbd resource statistics.
  
      - email
        Email statistics: Count, traffic, spam scores and checks.
        Receive multicast traffic from Ganglia instances.
  
      - hddtemp
 -      Harddisk temperatures using hddtempd.
 +      Hard disk temperatures using hddtempd.
  
      - interface
        Interface traffic: Number of octets, packets and errors for each
        Detailed CPU statistics of the “Logical Partitions” virtualization
        technique built into IBM's POWER processors.
  
 -    - libvirt
 -      CPU, memory, disk and network I/O statistics from virtual machines.
 -
      - lvm
        Size of “Logical Volumes” (LV) and “Volume Groups” (VG) of Linux'
        “Logical Volume Manager” (LVM).
        interfaces that use the Atheros chipset and the MadWifi driver.
  
      - mbmon
 -      Motherboard sensors: temperature, fanspeed and voltage information,
 +      Motherboard sensors: temperature, fan speed and voltage information,
        using mbmon(1).
  
      - md
        Read onewire sensors using the owcapu library of the owfs project.
        Please read in collectd.conf(5) why this plugin is experimental.
  
 +    - openldap
 +      Read monitoring information from OpenLDAP's cn=Monitor subtree.
 +
      - openvpn
        RX and TX of each client in openvpn-status.log (status-version 2).
        <http://openvpn.net/index.php/documentation/howto.html>
        See collectd-python(5) for details.
  
      - redis
 -      The redis plugin gathers information from a redis server, including:
 +      The redis plugin gathers information from a Redis server, including:
        uptime, used memory, total connections etc.
  
      - routeros
        to have its measurements fed to collectd. This includes multimeters,
        sound level meters, thermometers, and much more.
  
 +    - smart
 +      Collect SMART statistics, notably load cycle count, temperature
 +      and bad sectors.
 +
      - snmp
        Read values from SNMP (Simple Network Management Protocol) enabled
        network devices such as switches, routers, thermometers, rack monitoring
        clients and calculating rates and other aggregates out of these values.
  
      - swap
 -      Pages swapped out onto harddisk or whatever is called `swap' by the OS..
 +      Pages swapped out onto hard disk or whatever is called `swap' by the OS..
  
      - table
        Parse table-like structured files.
  
      - tail
 -      Follows (tails) logfiles, parses them by lines and submits matched
 +      Follows (tails) log files, parses them by lines and submits matched
        values.
  
      - tail_csv
      - varnish
        Various statistics from Varnish, an HTTP accelerator.
  
 +    - virt
 +      CPU, memory, disk and network I/O statistics from virtual machines.
 +
      - vmem
        Virtual memory statistics, e. g. the number of page-ins/-outs or the
        number of pagefaults.
      - zfs_arc
        Statistics for ZFS' “Adaptive Replacement Cache” (ARC).
  
 +    - zookeeper
 +      Read data from Zookeeper's MNTR command.
 +
    * Output can be written or sent to various destinations by the following
      plugins:
  
        can be configured to avoid logging send errors (especially useful when
        using UDP).
  
 +    - write_tsdb
 +      Sends data OpenTSDB, a scalable no master, no shared state time series
 +      database.
 +
      - write_http
        Sends the values collected by collectd to a web-server using HTTP POST
        requests. The transmitted data is either in a form understood by the
      - write_kafka
        Sends data to Apache Kafka, a distributed queue.
  
 +    - write_log
 +      Writes data to the log
 +
      - write_mongodb
        Sends data to MongoDB, a NoSQL database.
  
        values are out of bounds. See collectd-threshold(5) for details.
  
      - uuid
 -      Sets the hostname to an unique identifier. This is meant for setups
 +      Sets the hostname to a unique identifier. This is meant for setups
        where each client may migrate to another physical host, possibly going
        through one or more name changes in the process.
  
      time starting up again and again. With the exception of the exec plugin no
      processes are forked. Caching in output plugins, such as the rrdtool and
      network plugins, makes sure your resources are used efficiently. Also,
 -    since collectd is programmed multithreaded it benefits from hyperthreading
 +    since collectd is programmed multithreaded it benefits from hyper-threading
      and multicore processors and makes sure that the daemon isn't idle if only
      one plugin waits for an IO-operation to complete.
  
@@@ -559,7 -535,7 +559,7 @@@ Operatio
  ---------
  
    * collectd's configuration file can be found at `sysconfdir'/collectd.conf.
 -    Run `collectd -h' for a list of builtin defaults. See `collectd.conf(5)'
 +    Run `collectd -h' for a list of built-in defaults. See `collectd.conf(5)'
      for a list of options and a syntax description.
  
    * When the `csv' or `rrdtool' plugins are loaded they'll write the values to
@@@ -620,16 -596,12 +620,16 @@@ Prerequisite
      particular.
      <http://developer.apple.com/corefoundation/>
  
 +  * libatasmart (optional)
 +    Used by the `smart' plugin.
 +    <http://git.0pointer.de/?p=libatasmart.git>
 +
    * libclntsh (optional)
      Used by the `oracle' plugin.
  
 -  * libcredis (optional)
 -    Used by the `redis' plugin. Please note that you require a 0.2.2 version
 -    or higher. <http://code.google.com/p/credis/>
 +  * libhiredis (optional)
 +    Used by the redis plugin. Please note that you require a 0.10.0 version
 +    or higher. <https://github.com/redis/hiredis>
  
    * libcurl (optional)
      If you want to use the `apache', `ascent', `bind', `curl', `curl_json',
      libjvm” below.
      <http://openjdk.java.net/> (and others)
  
 +  * libldap (optional)
 +    Used by the `openldap' plugin.
 +    <http://www.openldap.org/>
 +
    * liblvm2 (optional)
      Used by the `lvm' plugin.
      <ftp://sources.redhat.com/pub/lvm2/>
  
    * libxml2 (optional)
      Parse XML data. This is needed for the `ascent', `bind', `curl_xml' and
 -    `libvirt' plugins.
 +    `virt' plugins.
      <http://xmlsoft.org/>
  
    * libxmms (optional)
      <http://www.xmms.org/>
  
    * libyajl (optional)
 -    Parse JSON data. This is needed for the `curl_json' and `log_logstash'
 -    plugins.
 +    Parse JSON data. This is needed for the `ceph', `curl_json' and
 +    `log_logstash' plugins.
      <http://github.com/lloyd/yajl>
  
    * libvarnish (optional)
@@@ -882,23 -850,6 +882,23 @@@ Configuring with libjv
    Adding "-ljvm" to the JAVA_LDFLAGS is done automatically, you don't have to
    do that.
  
 +Generating the configure script
 +-------------------------------
 +
 +Collectd ships with a `build.sh' script to generate the `configure'
 +script shipped with releases.
 +
 +To generate the `configure` script, you'll need the following dependencies:
 +
 +- autoconf
 +- automake
 +- flex
 +- bison
 +- libtool
 +- libtool-ltdl
 +
 +The `build.sh' script takes no arguments.
 +
  Crosscompiling
  --------------
  
diff --combined src/collectd.conf.pod
@@@ -1,4 -1,4 +1,4 @@@
 -encoding UTF-8
 +=encoding UTF-8
  
  =head1 NAME
  
@@@ -6,9 -6,9 +6,9 @@@ collectd.conf - Configuration for the s
  
  =head1 SYNOPSIS
  
 -  BaseDir "/path/to/data/"
 -  PIDFile "/path/to/pidfile/collectd.pid"
 -  Server  "123.123.123.123" 12345
 +  BaseDir "/var/lib/collectd"
 +  PIDFile "/run/collectd.pid"
 +  Interval 10.0
  
    LoadPlugin cpu
    LoadPlugin load
@@@ -16,9 -16,6 +16,9 @@@
    <LoadPlugin df>
      Interval 3600
    </LoadPlugin>
 +  <Plugin df>
 +    ValuesPercentage true
 +  </Plugin>
  
    LoadPlugin ping
    <Plugin ping>
@@@ -31,9 -28,7 +31,9 @@@
  This config file controls how the system statistics collection daemon
  B<collectd> behaves. The most significant option is B<LoadPlugin>, which
  controls which plugins to load. These plugins ultimately define collectd's
 -behavior.
 +behavior. If the B<AutoLoadPlugin> option has been enabled, the explicit
 +B<LoadPlugin> lines may be omitted for all plugins with a configuration block,
 +i.e. a C<E<lt>PluginE<nbsp>...E<gt>> block.
  
  The syntax of this config file is similar to the config file of the famous
  I<Apache> webserver. Each line contains either an option (a key and a list of
@@@ -60,9 -55,8 +60,9 @@@ indenting the wrapped lines
  The configuration is read and processed in order, i.e. from top to bottom. So
  the plugins are loaded in the order listed in this config file. It is a good
  idea to load any logging plugins first in order to catch messages from plugins
 -during configuration. Also, the C<LoadPlugin> option B<must> occur B<before>
 -the appropriate C<E<lt>Plugin ...E<gt>> block.
 +during configuration. Also, unless B<AutoLoadPlugin> is enabled, the
 +B<LoadPlugin> option I<must> occur I<before> the appropriate
 +C<E<lt>B<Plugin> ...E<gt>> block.
  
  =head1 GLOBAL OPTIONS
  
@@@ -146,18 -140,6 +146,18 @@@ B<E<lt>PluginE<nbsp>...E<gt>> block act
  B<LoadPlugin> statement. B<LoadPlugin> statements are still required for
  plugins that don't provide any configuration, e.g. the I<Load plugin>.
  
 +=item B<CollectInternalStats> B<false>|B<true>
 +
 +When set to B<true>, various statistics about the I<collectd> daemon will be
 +collected, with "collectd" as the I<plugin name>. Defaults to B<false>.
 +
 +The "write_queue" I<plugin instance> reports the number of elements currently
 +queued and the number of elements dropped off the queue by the
 +B<WriteQueueLimitLow>/B<WriteQueueLimitHigh> mechanism.
 +
 +The "cache" I<plugin instance> reports the number of elements in the value list
 +cache (the cache you can interact with using L<collectd-unixsock(5)>).
 +
  =item B<Include> I<Path> [I<pattern>]
  
  If I<Path> points to a file, includes that file. If I<Path> points to a
@@@ -230,14 -212,6 +230,14 @@@ B<Warning:> You should set this once an
  I<you will have to delete all your RRD files> or know some serious RRDtool
  magic! (Assuming you're using the I<RRDtool> or I<RRDCacheD> plugin.)
  
 +=item B<MaxReadInterval> I<Seconds>
 +
 +Read plugin doubles interval between queries after each failed attempt
 +to get data.
 +
 +This options limits the maximum value of the interval. The default value is
 +B<86400>.
 +
  =item B<Timeout> I<Iterations>
  
  Consider a value list "missing" when no update has been read or received for
@@@ -288,11 -262,8 +288,11 @@@ If B<WriteQueueLimitHigh> is set to non
  unset, the latter will default to half of B<WriteQueueLimitHigh>.
  
  If you do not want to randomly drop values when the queue size is between
 -I<LowNum> and I<HighNum>, set If B<WriteQueueLimitHigh> and
 -B<WriteQueueLimitLow> to same value.
 +I<LowNum> and I<HighNum>, set B<WriteQueueLimitHigh> and B<WriteQueueLimitLow>
 +to the same value.
 +
 +Enabling the B<CollectInternalStats> option is of great help to figure out the
 +values to set B<WriteQueueLimitHigh> and B<WriteQueueLimitLow> to.
  
  =item B<Hostname> I<Name>
  
@@@ -519,13 -490,10 +519,13 @@@ possibly filtering or messages
   #   ExchangeType "fanout"
   #   RoutingKey "collectd"
   #   Persistent false
 + #   ConnectionRetryDelay 0
   #   Format "command"
   #   StoreRates false
   #   GraphitePrefix "collectd."
   #   GraphiteEscapeChar "_"
 + #   GraphiteSeparateInstances false
 + #   GraphiteAlwaysAppendDS false
     </Publish>
  
     # Receive values from an AMQP broker
   #   QueueDurable false
   #   QueueAutoDelete true
   #   RoutingKey "collectd.#"
 + #   ConnectionRetryDelay 0
     </Subscribe>
   </Plugin>
  
@@@ -632,13 -599,6 +632,13 @@@ mode will be used, i.e. delivery is gua
  default), the I<transient> delivery mode will be used, i.e. messages may be
  lost due to high load, overflowing queues or similar issues.
  
 +=item B<ConnectionRetryDelay> I<Delay>
 +
 +When the connection to the AMQP broker is lost, defines the time in seconds to
 +wait before attempting to reconnect. Defaults to 0, which implies collectd will
 +attempt to reconnect at each read interval (in Subscribe mode) or each time
 +values are ready for submission (in Publish mode).
 +
  =item B<Format> B<Command>|B<JSON>|B<Graphite> (Publish only)
  
  Selects the format in which messages are sent to the broker. If set to
@@@ -687,19 -647,6 +687,19 @@@ In I<Graphite> metric name, dots are us
  metric parts (host, plugin, type).
  Default is "_" (I<Underscore>).
  
 +=item B<GraphiteSeparateInstances> B<true>|B<false>
 +
 +If set to B<true>, the plugin instance and type instance will be in their own
 +path component, for example C<host.cpu.0.cpu.idle>. If set to B<false> (the
 +default), the plugin and plugin instance (and likewise the type and type
 +instance) are put into one component, for example C<host.cpu-0.cpu-idle>.
 +
 +=item B<GraphiteAlwaysAppendDS> B<true>|B<false>
 +
 +If set to B<true>, append the name of the I<Data Source> (DS) to the "metric"
 +identifier. If set to B<false> (the default), this is only done when there is
 +more than one DS.
 +
  =back
  
  =head2 Plugin C<apache>
@@@ -867,14 -814,28 +867,28 @@@ and are checked by default depends on t
  
  =head2 Plugin C<barometer>
  
- This plugin reads absolute air pressure using digital barometer sensor MPL115A2
- or MPL3115 from Freescale (sensor attached to any I2C bus available in
- the computer, for HW details see
- I<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL115A> or
- I<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL3115A2>).
- The sensor type - one fo these two - is detected automatically by the plugin
- and indicated in the plugin_instance (typically you will see subdirectory
- "barometer-mpl115" or "barometer-mpl3115").
+ This plugin reads absolute air pressure using digital barometer sensor on a I2C
+ bus. Supported sensors are:
+ =over 5
+ =item I<MPL115A2> from Freescale,
+ see L<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL115A>.
+ =item I<MPL3115> from Freescale
+ see L<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL3115A2>.
+ =item I<BMP085> from Bosch Sensortec
+ =back
+ The sensor type - one of the above - is detected automatically by the plugin
+ and indicated in the plugin_instance (you will see subdirectory
+ "barometer-mpl115" or "barometer-mpl3115", or "barometer-bmp085"). The order of
+ detection is BMP085 -> MPL3115 -> MPL115A2, the first one found will be used
+ (only one sensor can be used by the plugin).
  
  The plugin provides absolute barometric pressure, air pressure reduced to sea
  level (several possible approximations) and as an auxiliary value also internal
@@@ -885,11 -846,11 +899,11 @@@ It was developed and tested under Linu
  the standard Linux i2c-dev interface (the particular bus driver has to
  support the SM Bus command subset).
  
- The reduction or normalization to mean sea level pressure requires (depedning on
 -The reduction or normalization to mean sea level pressure requires (depending on
--selected method/approximation) also altitude and reference to temperature sensor(s).
--When multiple temperature sensors are configured the minumum of their values is
--always used (expecting that the warmer ones are affected by e.g. direct sun light
--at that moment).
++The reduction or normalization to mean sea level pressure requires (depending
++on selected method/approximation) also altitude and reference to temperature
++sensor(s).  When multiple temperature sensors are configured the minumum of
++their values is always used (expecting that the warmer ones are affected by
++e.g. direct sun light at that moment).
  
  Synopsis:
  
  
  =item B<Device> I<device>
  
- Device name of the I2C bus to which the sensor is connected. Note that typically
- you need to have loaded the i2c-dev module.
+ The only mandatory configuration parameter.
 -Device name of the I2C bus to which the sensor is connected. Note that typically
 -you need to have loaded the i2c-dev module.
++Device name of the I2C bus to which the sensor is connected. Note that
++typically you need to have loaded the i2c-dev module.
  Using i2c-tools you can check/list i2c buses available on your system by:
  
    i2cdetect -l
@@@ -922,52 -885,66 +938,69 @@@ connected and detected on address 0x60
  
  =item B<Oversampling> I<value>
  
- For MPL115 this is the size of the averaging window. To filter out sensor noise
- a simple averaging using floating window of configurable size is used. The plugin
- will use average of the last C<value> measurements (value of 1 means no averaging).
- Minimal size is 1, maximal 1024.
+ Optional parameter controlling the oversampling/accuracy. Default value
+ is 1 providing fastest and least accurate reading.
 -For I<MPL115> this is the size of the averaging window. To filter out sensor noise
 -a simple averaging using floating window of this configurable size is used. The plugin
 -will use average of the last C<value> measurements (value of 1 means no averaging).
 -Minimal size is 1, maximal 1024.
 -
 -For I<MPL3115> this is the oversampling value. The actual oversampling is performed
 -by the sensor and the higher value the higher accuracy and longer conversion time
 -(although nothing to worry about in the collectd context). Supported values are:
 -1, 2, 4, 8, 16, 32, 64 and 128. Any other value is adjusted by the plugin to
++For I<MPL115> this is the size of the averaging window. To filter out sensor
++noise a simple averaging using floating window of this configurable size is
++used. The plugin will use average of the last C<value> measurements (value of 1
++means no averaging).  Minimal size is 1, maximal 1024.
 +
- For MPL3115 this is the oversampling value. The actual oversampling is performed
- by the sensor and the higher value the higher accuracy and longer conversion time
- (although nothing to worry about in the collectd context). Supported values are:
- 1, 2, 4, 8, 16, 32, 64 and 128. Any other value is adjusted by the plugin to
- the closest supported one. Default is 128.
++For I<MPL3115> this is the oversampling value. The actual oversampling is
++performed by the sensor and the higher value the higher accuracy and longer
++conversion time (although nothing to worry about in the collectd context).
++Supported values are: 1, 2, 4, 8, 16, 32, 64 and 128. Any other value is
++adjusted by the plugin to the closest supported one.
++
++For I<BMP085> this is the oversampling value. The actual oversampling is
++performed by the sensor and the higher value the higher accuracy and longer
++conversion time (although nothing to worry about in the collectd context).
++Supported values are: 1, 2, 4, 8. Any other value is adjusted by the plugin to
+ the closest supported one.
  
 -For I<BMP085> this is the oversampling value. The actual oversampling is performed
 -by the sensor and the higher value the higher accuracy and longer conversion time
 -(although nothing to worry about in the collectd context). Supported values are:
 -1, 2, 4, 8. Any other value is adjusted by the plugin to the closest supported one.
 -
  =item B<PressureOffset> I<offset>
  
- You can further calibrate the sensor by supplying pressure and/or temperature offsets.
- This is added to the measured/caclulated value (i.e. if the measured value is too high
- then use negative offset).
+ Optional parameter for MPL3115 only.
 -You can further calibrate the sensor by supplying pressure and/or temperature offsets.
 -This is added to the measured/caclulated value (i.e. if the measured value is too high
 -then use negative offset).
++You can further calibrate the sensor by supplying pressure and/or temperature
++offsets.  This is added to the measured/caclulated value (i.e. if the measured
++value is too high then use negative offset).
  In hPa, default is 0.0.
  
  =item B<TemperatureOffset> I<offset>
  
- You can further calibrate the sensor by supplying pressure and/or temperature offsets.
- This is added to the measured/caclulated value (i.e. if the measured value is too high
- then use negative offset).
+ Optional parameter for MPL3115 only.
 -You can further calibrate the sensor by supplying pressure and/or temperature offsets.
 -This is added to the measured/caclulated value (i.e. if the measured value is too high
 -then use negative offset).
++You can further calibrate the sensor by supplying pressure and/or temperature
++offsets.  This is added to the measured/caclulated value (i.e. if the measured
++value is too high then use negative offset).
  In C, default is 0.0.
  
  =item B<Normalization> I<method>
  
- Normalization method - what approximation/model is used to compute mean sea
+ Optional parameter, default value is 0.
+ Normalization method - what approximation/model is used to compute the mean sea
  level pressure from the air absolute pressure.
  
  Supported values of the C<method> (integer between from 0 to 2) are:
  
  =over 5
  
- =item B<0> - no conversion, absolute pressrure is simply copied over. For this method you
+ =item B<0> - no conversion, absolute pressure is simply copied over. For this method you
         do not need to configure C<Altitude> or C<TemperatureSensor>.
  
  =item B<1> - international formula for conversion ,
- See I<http://en.wikipedia.org/wiki/Atmospheric_pressure#Altitude_atmospheric_pressure_variation>.
 -See L<http://en.wikipedia.org/wiki/Atmospheric_pressure#Altitude_atmospheric_pressure_variation>.
--For this method you have to configure C<Altitude> but do not need C<TemperatureSensor>
--(uses fixed global temperature average instead).
++See
++L<http://en.wikipedia.org/wiki/Atmospheric_pressure#Altitude_atmospheric_pressure_variation>.
++For this method you have to configure C<Altitude> but do not need
++C<TemperatureSensor> (uses fixed global temperature average instead).
  
  =item B<2> - formula as recommended by the Deutsche Wetterdienst (German
  Meteorological Service).
- See I<http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel#Theorie>
- For this method you have to configure both  C<Altitude> and C<TemperatureSensor>.
+ See L<http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel#Theorie>
 -For this method you have to configure both  C<Altitude> and C<TemperatureSensor>.
++For this method you have to configure both  C<Altitude> and
++C<TemperatureSensor>.
  
  =back
  
@@@ -978,49 -955,16 +1011,49 @@@ The altitude (in meters) of the locatio
  
  =item B<TemperatureSensor> I<reference>
  
- Temperature sensor which should be used as a reference when normalizing the pressure.
- When specified more sensors a minumum is found and uses each time.
 -Temperature sensor(s) which should be used as a reference when normalizing the pressure
 -using C<Normalization> method 2.
 -When specified more sensors a minumum is found and used each time.
--The temperature reading directly from this pressure sensor/plugin
--is typically not suitable as the pressure sensor
- will be probably inside while we want outside temperature.
 -will be probably inside while we want outside temperature. 
--The collectd reference name is something like
++Temperature sensor(s) which should be used as a reference when normalizing the
++pressure using C<Normalization> method 2.
++When specified more sensors a minumum is found and used each time.  The
++temperature reading directly from this pressure sensor/plugin is typically not
++suitable as the pressure sensor will be probably inside while we want outside
++temperature.  The collectd reference name is something like
  <hostname>/<plugin_name>-<plugin_instance>/<type>-<type_instance>
--(<type_instance> is usually omitted when there is just single value type).
--Or you can figure it out from the path of the output data files.
++(<type_instance> is usually omitted when there is just single value type). Or
++you can figure it out from the path of the output data files.
 +
 +=back
 +
 +=head2 Plugin C<battery>
 +
 +The I<battery plugin> reports the remaining capacity, power and voltage of
 +laptop batteries.
 +
 +=over 4
 +
 +=item B<ValuesPercentage> B<false>|B<true>
 +
 +When enabled, remaining capacity is reported as a percentage, e.g. "42%
 +capacity remaining". Otherwise the capacity is stored as reported by the
 +battery, most likely in "Wh". This option does not work with all input methods,
 +in particular when only C</proc/pmu> is available on an old Linux system.
 +Defaults to B<false>.
 +
 +=item B<ReportDegraded> B<false>|B<true>
 +
 +Typical laptop batteries degrade over time, meaning the capacity decreases with
 +recharge cycles. The maximum charge of the previous charge cycle is tracked as
 +"last full capacity" and used to determine that a battery is "fully charged".
 +
 +When this option is set to B<false>, the default, the I<battery plugin> will
 +only report the remaining capacity. If the B<ValuesPercentage> option is
 +enabled, the relative remaining capacity is calculated as the ratio of the
 +"remaining capacity" and the "last full capacity". This is what most tools,
 +such as the status bar of desktop environments, also do.
 +
 +When set to B<true>, the battery plugin will report three values: B<charged>
 +(remaining capacity), B<discharged> (difference between "last full capacity"
 +and "remaining capacity") and B<degraded> (difference between "design capacity"
 +and "last full capacity").
  
  =back
  
@@@ -1178,74 -1122,6 +1211,74 @@@ By default no detailed zone informatio
  
  =back
  
 +=head2 Plugin C<ceph>
 +
 +The ceph plugin collects values from JSON data to be parsed by B<libyajl>
 +(L<https://lloyd.github.io/yajl/>) retrieved from ceph daemon admin sockets.
 +
 +A separate B<Daemon> block must be configured for each ceph daemon to be
 +monitored. The following example will read daemon statistics from four
 +separate ceph daemons running on the same device (two OSDs, one MON, one MDS) :
 +
 +  <Plugin ceph>
 +    LongRunAvgLatency false
 +    ConvertSpecialMetricTypes true
 +    <Daemon "osd.0">
 +      SocketPath "/var/run/ceph/ceph-osd.0.asok"
 +    </Daemon>
 +    <Daemon "osd.1">
 +      SocketPath "/var/run/ceph/ceph-osd.1.asok"
 +    </Daemon>
 +    <Daemon "mon.a">
 +      SocketPath "/var/run/ceph/ceph-mon.ceph1.asok"
 +    </Daemon>
 +    <Daemon "mds.a">
 +      SocketPath "/var/run/ceph/ceph-mds.ceph1.asok"
 +    </Daemon>
 +  </Plugin>
 +
 +The ceph plugin accepts the following configuration options:
 +
 +=over 4
 +
 +=item B<LongRunAvgLatency> B<true>|B<false>
 +
 +If enabled, latency values(sum,count pairs) are calculated as the long run
 +average - average since the ceph daemon was started = (sum / count).
 +When disabled, latency values are calculated as the average since the last
 +collection = (sum_now - sum_last) / (count_now - count_last).
 +
 +Default: Disabled
 +
 +=item B<ConvertSpecialMetricTypes> B<true>|B<false>
 +
 +If enabled, special metrics (metrics that differ in type from similar counters)
 +are converted to the type of those similar counters. This currently only
 +applies to filestore.journal_wr_bytes which is a counter for OSD daemons. The
 +ceph schema reports this metric type as a sum,count pair while similar counters
 +are treated as derive types. When converted, the sum is used as the counter
 +value and is treated as a derive type.
 +When disabled, all metrics are treated as the types received from the ceph schema.
 +
 +Default: Enabled
 +
 +=back
 +
 +Each B<Daemon> block must have a string argument for the plugin instance name.
 +A B<SocketPath> is also required for each B<Daemon> block:
 +
 +=over 4
 +
 +=item B<Daemon> I<DaemonName>
 +
 +Name to be used as the instance name for this daemon.
 +
 +=item B<SocketPath> I<SocketPath>
 +
 +Specifies the path to the UNIX admin socket of the ceph daemon.
 +
 +=back
 +
  =head2 Plugin C<cgroups>
  
  This plugin collects the CPU user/system time for each I<cgroup> by reading the
@@@ -1284,53 -1160,29 +1317,53 @@@ F</proc/sys/net/ipv4/netfilter> instea
  
  =head2 Plugin C<cpu>
  
 -The I<CPU plugin> collects CPU usage metrics.
 +The I<CPU plugin> collects CPU usage metrics. By default, CPU usage is reported
 +as Jiffies, using the C<cpu> type. Two aggregations are available:
 +
 +=over 4
 +
 +=item
 +
 +Sum, per-state, over all CPUs installed in the system; and
 +
 +=item
 +
 +Sum, per-CPU, over all non-idle states of a CPU, creating an "active" state.
 +
 +=back
 +
 +The two aggregations can be combined, leading to I<collectd> only emitting a
 +single "active" metric for the entire system. As soon as one of these
 +aggregations (or both) is enabled, the I<cpu plugin> will report a percentage,
 +rather than Jiffies. In addition, you can request individual, per-state,
 +per-CPU metrics to be reported as percentage.
  
  The following configuration options are available:
  
  =over 4
  
 -=item B<ReportActive> B<false>|B<true>
 +=item B<ReportByState> B<true>|B<false>
  
 -Reports non-idle CPU usage as the "active" value. Defaults to false.
 +When set to B<true>, the default, reports per-state metrics, e.g. "system",
 +"user" and "idle".
 +When set to B<false>, aggregates (sums) all I<non-idle> states into one
 +"active" metric.
  
 -=item B<ReportByCpu> B<false>|B<true>
 +=item B<ReportByCpu> B<true>|B<false>
  
 -When true reports usage for all cores. When false, reports cpu usage
 -aggregated over all cores.
 -Defaults to true.
 +When set to B<true>, the default, reports per-CPU (per-core) metrics.
 +When set to B<false>, instead of reporting metrics for individual CPUs, only a
 +global sum of CPU states is emitted.
  
  =item B<ValuesPercentage> B<false>|B<true>
  
 -When true report percentage usage instead of tick values. Defaults to false.
 +This option is only considered when both, B<ReportByCpu> and B<ReportByState>
 +are set to B<true>. In this case, by default, metrics will be reported as
 +Jiffies. By setting this option to B<true>, you can request percentage values
 +in the un-aggregated (per-CPU, per-state) mode as well.
  
  =back
  
 -
  =head2 Plugin C<cpufreq>
  
  This plugin doesn't have any options. It reads
@@@ -1373,16 -1225,6 +1406,16 @@@ finance page and dispatch the value to 
        URL "http://finance.google.com/finance?q=NYSE%3AAMD"
        User "foo"
        Password "bar"
 +      Digest false
 +      VerifyPeer true
 +      VerifyHost true
 +      CACert "/path/to/ca.crt"
 +      Header "X-Custom-Header: foobar"
 +      Post "foo=bar"
 +
 +      MeasureResponseTime false
 +      MeasureResponseCode false
 +
        <Match>
          Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>"
          DSType "GaugeAverage"
@@@ -1455,19 -1297,13 +1488,19 @@@ C<application/x-www-form-urlencoded>)
  Measure response time for the request. If this setting is enabled, B<Match>
  blocks (see below) are optional. Disabled by default.
  
 +=item B<MeasureResponseCode> B<true>|B<false>
 +
 +Measure response code for the request. If this setting is enabled, B<Match>
 +blocks (see below) are optional. Disabled by default.
 +
  =item B<E<lt>MatchE<gt>>
  
  One or more B<Match> blocks that define how to match information in the data
  returned by C<libcurl>. The C<curl> plugin uses the same infrastructure that's
  used by the C<tail> plugin, so please see the documentation of the C<tail>
 -plugin below on how matches are defined. If the B<MeasureResponseTime> option
 -is set to B<true>, B<Match> blocks are optional.
 +plugin below on how matches are defined. If the B<MeasureResponseTime> or
 +B<MeasureResponseCode> options are set to B<true>, B<Match> blocks are
 +optional.
  
  =back
  
@@@ -1590,8 -1426,6 +1623,8 @@@ The B<curl_xml plugin> uses B<libcurl> 
       VerifyPeer true
       VerifyHost true
       CACert "/path/to/ca.crt"
 +     Header "X-Custom-Header: foobar"
 +     Post "foo=bar"
  
       <XPath "table[@id=\"magic_level\"]/tr">
         Type "magic_level"
@@@ -1887,7 -1721,7 +1920,7 @@@ There must be at least one B<ValuesFrom
  =item B<MetadataFrom> [I<column0> I<column1> ...]
  
  Names the columns whose content is used as metadata for the data sets
 -that are dispatched to the daemon. 
 +that are dispatched to the daemon.
  
  The actual data type in the columns is not that important. The plugin will
  automatically cast the values to the right type if it know how to do that. So
@@@ -2531,7 -2365,102 +2564,7 @@@ independent from the I<JavaClass> argum
  
  =back
  
 -=head2 Plugin C<libvirt>
 -
 -This plugin allows CPU, disk and network load to be collected for virtualized
 -guests on the machine. This means that these characteristics can be collected
 -for guest systems without installing any software on them - collectd only runs
 -on the hosting system. The statistics are collected through libvirt
 -(L<http://libvirt.org/>).
 -
 -Only I<Connection> is required.
 -
 -=over 4
 -
 -=item B<Connection> I<uri>
 -
 -Connect to the hypervisor given by I<uri>. For example if using Xen use:
 -
 - Connection "xen:///"
 -
 -Details which URIs allowed are given at L<http://libvirt.org/uri.html>.
 -
 -=item B<RefreshInterval> I<seconds>
 -
 -Refresh the list of domains and devices every I<seconds>. The default is 60
 -seconds. Setting this to be the same or smaller than the I<Interval> will cause
 -the list of domains and devices to be refreshed on every iteration.
 -
 -Refreshing the devices in particular is quite a costly operation, so if your
 -virtualization setup is static you might consider increasing this. If this
 -option is set to 0, refreshing is disabled completely.
 -
 -=item B<Domain> I<name>
 -
 -=item B<BlockDevice> I<name:dev>
 -
 -=item B<InterfaceDevice> I<name:dev>
 -
 -=item B<IgnoreSelected> I<true>|I<false>
 -
 -Select which domains and devices are collected.
 -
 -If I<IgnoreSelected> is not given or I<false> then only the listed domains and
 -disk/network devices are collected.
 -
 -If I<IgnoreSelected> is I<true> then the test is reversed and the listed
 -domains and disk/network devices are ignored, while the rest are collected.
 -
 -The domain name and device names may use a regular expression, if the name is
 -surrounded by I</.../> and collectd was compiled with support for regexps.
 -
 -The default is to collect statistics for all domains and all their devices.
 -
 -Example:
 -
 - BlockDevice "/:hdb/"
 - IgnoreSelected "true"
 -
 -Ignore all I<hdb> devices on any domain, but other block devices (eg. I<hda>)
 -will be collected.
 -
 -=item B<HostnameFormat> B<name|uuid|hostname|...>
 -
 -When the libvirt plugin logs data, it sets the hostname of the collected data
 -according to this setting. The default is to use the guest name as provided by
 -the hypervisor, which is equal to setting B<name>.
 -
 -B<uuid> means use the guest's UUID. This is useful if you want to track the
 -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.
 -
 -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
 -between, thus I<"foo:1234-1234-1234-1234">).
 -
 -=item B<InterfaceFormat> B<name>|B<address>
 -
 -When the libvirt plugin logs interface data, it sets the name of the collected
 -data according to this setting. The default is to use the path as provided by
 -the hypervisor (the "dev" property of the target node), which is equal to
 -setting B<name>.
 -
 -B<address> means use the interface's mac address. This is useful since the
 -interface path might change between reboots of a guest or across migrations.
 -
 -=item B<PluginInstanceFormat> B<name|uuid>
 -
 -When the libvirt plugin logs data, it sets the plugin_instance of the collected 
 -data according to this setting. The default is to use the guest name as provided 
 -by the hypervisor, which is equal to setting B<name>.
 -
 -B<uuid> means use the guest's UUID.
 -
 -=back
 -
 -+=head2 Plugin C<load>
 +=head2 Plugin C<load>
  
  The I<Load plugin> collects the system load. These numbers give a rough overview
  over the utilization of a machine. The system load is defined as the number of
@@@ -2957,8 -2886,8 +2990,8 @@@ which the sizes of physical memory vary
  
  =head2 Plugin C<modbus>
  
 -The B<modbus plugin> connects to a Modbus "slave" via Modbus/TCP and reads
 -register values. It supports reading single registers (unsigned 16E<nbsp>bit
 +The B<modbus plugin> connects to a Modbus "slave" via Modbus/TCP or Modbus/RTU and
 +reads register values. It supports reading single registers (unsigned 16E<nbsp>bit
  values), large integer values (unsigned 32E<nbsp>bit values) and floating point
  values (two registers interpreted as IEEE floats in big endian notation).
  
@@@ -2967,7 -2896,6 +3000,7 @@@ B<Synopsis:
   <Data "voltage-input-1">
     RegisterBase 0
     RegisterType float
 +   RegisterCmd ReadHolding
     Type voltage
     Instance "input-1"
   </Data>
   <Data "voltage-input-2">
     RegisterBase 2
     RegisterType float
 +   RegisterCmd ReadHolding
     Type voltage
     Instance "input-2"
   </Data>
  
 + <Data "supply-temperature-1">
 +   RegisterBase 0
 +   RegisterType Int16
 +   RegisterCmd ReadHolding
 +   Type temperature
 +   Instance "temp-1"
 + </Data>
 +
   <Host "modbus.example.com">
     Address "192.168.0.42"
     Port    "502"
     </Slave>
   </Host>
  
 + <Host "localhost">
 +   Device "/dev/ttyUSB0"
 +   Baudrate 38400
 +   Interval 20
 +
 +   <Slave 1>
 +     Instance "temperature"
 +     Collect  "supply-temperature-1"
 +   </Slave>
 + </Host>
 +
  =over 4
  
  =item E<lt>B<Data> I<Name>E<gt> blocks
@@@ -3034,11 -2942,6 +3067,11 @@@ Specifies what kind of data is returne
  B<Uint32> or B<Float>, two 16E<nbsp>bit registers will be read and the data is
  combined into one value. Defaults to B<Uint16>.
  
 +=item B<RegisterCmd> B<ReadHolding>|B<ReadInput>
 +
 +Specifies register type to be collected from device. Works only with libmodbus
 +2.9.2 or higher. Defaults to B<ReadHolding>.
 +
  =item B<Type> I<Type>
  
  Specifies the "type" (data set) to use when dispatching the value to
@@@ -3064,25 -2967,15 +3097,25 @@@ Within E<lt>HostE<nbsp>/E<gt> blocks, t
  
  =item B<Address> I<Hostname>
  
 -Specifies the node name (the actual network address) used to connect to the
 -host. This may be an IP address or a hostname. Please note that the used
 -I<libmodbus> library only supports IPv4 at the moment.
 +For Modbus/TCP, specifies the node name (the actual network address) used to
 +connect to the host. This may be an IP address or a hostname. Please note that
 +the used I<libmodbus> library only supports IPv4 at the moment.
  
  =item B<Port> I<Service>
  
 -Specifies the port used to connect to the host. The port can either be given as
 -a number or as a service name. Please note that the I<Service> argument must be
 -a string, even if ports are given in their numerical form. Defaults to "502".
 +for Modbus/TCP, specifies the port used to connect to the host. The port can
 +either be given as a number or as a service name. Please note that the
 +I<Service> argument must be a string, even if ports are given in their numerical
 +form. Defaults to "502".
 +
 +=item B<Device> I<Devicenode>
 +
 +For Modbus/RTU, specifies the path to the serial device being used.
 +
 +=item B<Baudrate> I<Baudrate>
 +
 +For Modbus/RTU, specifies the baud rate of the serial device.
 +Note, connections currently support only 8/N/1.
  
  =item B<Interval> I<Interval>
  
@@@ -3091,7 -2984,7 +3124,7 @@@ host. By default the global B<Interval
  
  =item E<lt>B<Slave> I<ID>E<gt>
  
 -Over each TCP connection, multiple Modbus devices may be reached. The slave ID
 +Over each connection, multiple Modbus devices may be reached. The slave ID
  is used to specify which device should be addressed. For each device you want
  to query, one B<Slave> block must be given.
  
@@@ -3211,23 -3104,18 +3244,23 @@@ only has any effect, if B<Host> is set 
  Otherwise, use the B<Port> option above. See the documentation for the
  C<mysql_real_connect> function for details.
  
 +=item B<InnodbStats> I<true|false>
 +
 +If enabled, metrics about the InnoDB storage engine are collected.
 +Disabled by default.
 +
  =item B<MasterStats> I<true|false>
  
  =item B<SlaveStats> I<true|false>
  
  Enable the collection of master / slave statistics in a replication setup. In
  order to be able to get access to these statistics, the user needs special
 -privileges. See the B<User> documentation above.
 +privileges. See the B<User> documentation above. Defaults to B<false>.
  
  =item B<SlaveNotifications> I<true|false>
  
  If enabled, the plugin sends a notification if the replication slave I/O and /
 -or SQL threads are not running.
 +or SQL threads are not running. Defaults to B<false>.
  
  =item B<ConnectTimeout> I<Seconds>
  
@@@ -3932,12 -3820,6 +3965,12 @@@ behavior is to let the kernel choose th
  that the manual selection of an interface for unicast traffic is only
  necessary in rare cases.
  
 +=item B<ResolveInterval> I<Seconds>
 +
 +Sets the interval at which to re-resolve the DNS for the I<Host>. This is
 +useful to force a regular DNS lookup to support a high availability setup. If
 +not specified, re-resolves are never attempted.
 +
  =back
  
  =item B<E<lt>Listen> I<Host> [I<Port>]B<E<gt>>
@@@ -4358,70 -4240,6 +4391,70 @@@ short: If it works for you: Great! But 
  change, though this is unlikely. Oh, and if you want to help improving this
  plugin, just send a short notice to the mailing list. ThanksE<nbsp>:)
  
 +=head2 Plugin C<openldap>
 +
 +To use the C<openldap> plugin you first need to configure the I<OpenLDAP>
 +server correctly. The backend database C<monitor> needs to be loaded and
 +working. See slapd-monitor(5) for the details.
 +
 +The configuration of the C<openldap> plugin consists of one or more B<Instance>
 +blocks. Each block requires one string argument as the instance name. For
 +example:
 +
 + <Plugin "openldap">
 +   <Instance "foo">
 +     URL "ldap://localhost/"
 +   </Instance>
 +   <Instance "bar">
 +     URL "ldaps://localhost/"
 +   </Instance>
 + </Plugin>
 +
 +The instance name will be used as the I<plugin instance>. To emulate the old
 +(versionE<nbsp>4) behavior, you can use an empty string (""). In order for the
 +plugin to work correctly, each instance name must be unique. This is not
 +enforced by the plugin and it is your responsibility to ensure it is.
 +
 +The following options are accepted within each B<Instance> block:
 +
 +=over 4
 +
 +=item B<URL> I<ldap://host/binddn>
 +
 +Sets the URL to use to connect to the I<OpenLDAP> server. This option is
 +I<mandatory>.
 +
 +=item B<StartTLS> B<true|false>
 +
 +Defines whether TLS must be used when connecting to the I<OpenLDAP> server.
 +Disabled by default.
 +
 +=item B<VerifyHost> B<true|false>
 +
 +Enables or disables peer host name verification. If enabled, the plugin checks
 +if the C<Common Name> or a C<Subject Alternate Name> field of the SSL
 +certificate matches the host name provided by the B<URL> option. If this
 +identity check fails, the connection is aborted. Enabled by default.
 +
 +=item B<CACert> I<File>
 +
 +File that holds one or more SSL certificates. If you want to use TLS/SSL you
 +may possibly need this option. What CA certificates are checked by default
 +depends on the distribution you use and can be changed with the usual ldap
 +client configuration mechanisms. See ldap.conf(5) for the details.
 +
 +=item B<Timeout> I<Seconds>
 +
 +Sets the timeout value for ldap operations. Defaults to B<-1> which results in
 +an infinite timeout.
 +
 +=item B<Version> I<Version>
 +
 +An integer which sets the LDAP protocol version number to use when connecting
 +to the I<OpenLDAP> server. Defaults to B<3> for using I<LDAPv3>.
 +
 +=back
 +
  =head2 Plugin C<openvpn>
  
  The OpenVPN plugin reads a status file maintained by OpenVPN and gathers
@@@ -5075,10 -4893,6 +5108,10 @@@ Specify the username to be used when co
  
  Specify the password to be used when connecting to the server.
  
 +=item B<ExpireDelay> I<delay>
 +
 +Skip expired values in query output.
 +
  =item B<SSLMode> I<disable>|I<allow>|I<prefer>|I<require>
  
  Specify whether to use an SSL connection when contacting the server. The
@@@ -5450,10 -5264,6 +5483,10 @@@ which configures the connection paramet
          Host "localhost"
          Port "6379"
          Timeout 2000
 +        <Query "LLEN myqueue">
 +          Type "queue_length"
 +          Instance "myqueue"
 +        <Query>
      </Node>
    </Plugin>
  
@@@ -5491,22 -5301,6 +5524,22 @@@ read function is blocking, you should k
  in mind that the sum of all B<Timeout> values for all B<Nodes> should be lower
  than B<Interval> defined globally.
  
 +=item B<Query> I<Querystring>
 +
 +The B<Query> block identifies a query to execute against the redis server.
 +There may be an arbitrary number of queries to execute.
 +
 +=item B<Type> I<Collectd type>
 +
 +Within a query definition, a valid collectd type to use as when submitting
 +the result of the query. When not supplied, will default to B<gauge>.
 +
 +=item B<Instance> I<Type instance>
 +
 +Within a query definition, an optional type instance to use when submitting
 +the result of the query. When not supplied will default to the escaped
 +command, up to 64 chars.
 +
  =back
  
  =head2 Plugin C<rrdcached>
@@@ -5611,14 -5405,6 +5644,14 @@@ Set the "XFiles Factor". The default i
  I<Factor> must be in the range C<[0.0-1.0)>, i.e. between zero (inclusive) and
  one (exclusive).
  
 +=item B<CollectStatistics> B<false>|B<true>
 +
 +When set to B<true>, various statistics about the I<rrdcached> daemon will be
 +collected, with "rrdcached" as the I<plugin name>. Defaults to B<false>.
 +
 +Statistics are read via I<rrdcached>s socket using the STATS command.
 +See L<rrdcached(1)> for details.
 +
  =back
  
  =head2 Plugin C<rrdtool>
@@@ -5848,40 -5634,6 +5881,40 @@@ measurements are discarded
  
  =back
  
 +=head2 Plugin C<smart>
 +
 +The C<smart> plugin collects SMART information from physical
 +disks. Values collectd include temperature, power cycle count, poweron
 +time and bad sectors. Also, all SMART attributes are collected along
 +with the normalized current value, the worst value, the threshold and
 +a human readable value.
 +
 +Using the following two options you can ignore some disks or configure the
 +collection only of specific disks.
 +
 +=over 4
 +
 +=item B<Disk> I<Name>
 +
 +Select the disk I<Name>. Whether it is collected or ignored depends on the
 +B<IgnoreSelected> setting, see below. As with other plugins that use the
 +daemon's ignorelist functionality, a string that starts and ends with a slash
 +is interpreted as a regular expression. Examples:
 +
 +  Disk "sdd"
 +  Disk "/hda[34]/"
 +
 +=item B<IgnoreSelected> B<true>|B<false>
 +
 +Sets whether selected disks, i.E<nbsp>e. the ones matches by any of the B<Disk>
 +statements, are ignored or if all other disks are ignored. The behavior
 +(hopefully) is intuitive: If no B<Disk> option is configured, all disks are
 +collected. If at least one B<Disk> option is given and no B<IgnoreSelected> or
 +set to B<false>, B<only> matching disks will be collected. If B<IgnoreSelected>
 +is set to B<true>, all disks are collected B<except> the ones matched.
 +
 +=back
 +
  =head2 Plugin C<snmp>
  
  Since the configuration of the C<snmp plugin> is a little more complicated than
@@@ -5933,20 -5685,7 +5966,20 @@@ that I<Percent> of all reported timers 
  computed latency. This is useful for cutting off the long tail latency, as it's
  often done in I<Service Level Agreements> (SLAs).
  
 -If not specified, no percentile is calculated / dispatched.
 +Different percentiles can be calculated by setting this option several times.
 +If none are specified, no percentiles are calculated / dispatched.
 +
 +=item B<TimerLower> B<false>|B<true>
 +
 +=item B<TimerUpper> B<false>|B<true>
 +
 +=item B<TimerSum> B<false>|B<true>
 +
 +=item B<TimerCount> B<false>|B<true>
 +
 +Calculate and dispatch various values out of I<Timer> metrics received during
 +an interval. If set to B<False>, the default, these values aren't calculated /
 +dispatched.
  
  =back
  
@@@ -6205,8 -5944,6 +6238,8 @@@ Use the last number found
  The matched number is a counter. Simply I<sets> the internal counter to this
  value. Variants exist for C<COUNTER>, C<DERIVE>, and C<ABSOLUTE> data sources.
  
 +=item B<GaugeAdd>
 +
  =item B<CounterAdd>
  
  =item B<DeriveAdd>
@@@ -6215,8 -5952,6 +6248,8 @@@ Add the matched value to the internal c
  matched number may be negative, which will effectively subtract from the
  internal counter.
  
 +=item B<GaugeInc>
 +
  =item B<CounterInc>
  
  =item B<DeriveInc>
@@@ -6436,11 -6171,6 +6469,11 @@@ connections a mail server or news serve
  how many connections a web proxy holds to web servers. You have to give the
  port in numeric form.
  
 +=item B<AllPortsSummary> I<true>|I<false>
 +
 +If this option is set to I<true> a summary of statistics from all connections
 +are collectd. This option defaults to I<false>.
 +
  =back
  
  =head2 Plugin C<thermal>
@@@ -6570,35 -6300,22 +6603,35 @@@ Take the UUID from the given file (defa
  =head2 Plugin C<varnish>
  
  The I<varnish plugin> collects information about Varnish, an HTTP accelerator.
 +It collects a subset of the values displayed by L<varnishstat(1)>, and
 +organizes them in categories which can be enabled or disabled. Currently only
 +metrics shown in L<varnishstat(1)>'s I<MAIN> section are collected. The exact
 +meaning of each metric can be found in L<varnish-counters(7)>.
  
  Synopsis:
  
   <Plugin "varnish">
     <Instance "example">
 +     CollectBackend     true
 +     CollectBan         false
       CollectCache       true
       CollectConnections true
 -     CollectBackend     true
 -     CollectSHM         true
 +     CollectDirectorDNS false
       CollectESI         false
       CollectFetch       false
       CollectHCB         false
 +     CollectObjects     false
 +     CollectPurge       false
 +     CollectSession     false
 +     CollectSHM         true
       CollectSMA         false
       CollectSMS         false
       CollectSM          false
 +     CollectStruct      false
       CollectTotals      false
 +     CollectUptime      false
 +     CollectVCL         false
 +     CollectVSM         false
       CollectWorkers     false
     </Instance>
   </Plugin>
@@@ -6612,24 -6329,29 +6645,24 @@@ Inside each E<lt>B<Instance>E<gt> block
  
  =over 4
  
 -=item B<CollectCache> B<true>|B<false>
 -
 -Cache hits and misses. True by default.
 -
 -=item B<CollectConnections> B<true>|B<false>
 -
 -Number of client connections received, accepted and dropped. True by default.
 -
  =item B<CollectBackend> B<true>|B<false>
  
  Back-end connection statistics, such as successful, reused,
  and closed connections. True by default.
  
 -=item B<CollectSHM> B<true>|B<false>
 -
 -Statistics about the shared memory log, a memory region to store
 -log messages which is flushed to disk when full. True by default.
 -
  =item B<CollectBan> B<true>|B<false>
  
  Statistics about ban operations, such as number of bans added, retired, and
  number of objects tested against ban operations. Only available with Varnish
 -3.x. False by default.
 +3.x and above. False by default.
 +
 +=item B<CollectCache> B<true>|B<false>
 +
 +Cache hits and misses. True by default.
 +
 +=item B<CollectConnections> B<true>|B<false>
 +
 +Number of client connections received, accepted and dropped. True by default.
  
  =item B<CollectDirectorDNS> B<true>|B<false>
  
@@@ -6663,14 -6385,7 +6696,14 @@@ number of objects tested against purge 
  =item B<CollectSession> B<true>|B<false>
  
  Client session statistics. Number of past and current sessions, session herd and
 -linger counters, etc. False by default.
 +linger counters, etc. False by default. Note that if using Varnish 4.x, some
 +metrics found in the Connections and Threads sections with previous versions of
 +Varnish have been moved here.
 +
 +=item B<CollectSHM> B<true>|B<false>
 +
 +Statistics about the shared memory log, a memory region to store
 +log messages which is flushed to disk when full. True by default.
  
  =item B<CollectSMA> B<true>|B<false>
  
@@@ -6701,118 -6416,18 +6734,118 @@@ the number of requests and bytes transf
  
  =item B<CollectUptime> B<true>|B<false>
  
 -Varnish uptime. False by default.
 +Varnish uptime. Only available with Varnish 3.x and above. False by default.
  
  =item B<CollectVCL> B<true>|B<false>
  
  Number of total (available + discarded) VCL (config files). False by default.
  
 +=item B<CollectVSM> B<true>|B<false>
 +
 +Collect statistics about Varnish's shared memory usage (used by the logging and
 +statistics subsystems). Only available with Varnish 4.x. False by default.
 +
  =item B<CollectWorkers> B<true>|B<false>
  
  Collect statistics about worker threads. False by default.
  
  =back
  
 +=head2 Plugin C<virt>
 +
 +This plugin allows CPU, disk and network load to be collected for virtualized
 +guests on the machine. This means that these metrics can be collected for guest
 +systems without installing any software on them - I<collectd> only runs on the
 +host system. The statistics are collected through libvirt
 +(L<http://libvirt.org/>).
 +
 +Only I<Connection> is required.
 +
 +=over 4
 +
 +=item B<Connection> I<uri>
 +
 +Connect to the hypervisor given by I<uri>. For example if using Xen use:
 +
 + Connection "xen:///"
 +
 +Details which URIs allowed are given at L<http://libvirt.org/uri.html>.
 +
 +=item B<RefreshInterval> I<seconds>
 +
 +Refresh the list of domains and devices every I<seconds>. The default is 60
 +seconds. Setting this to be the same or smaller than the I<Interval> will cause
 +the list of domains and devices to be refreshed on every iteration.
 +
 +Refreshing the devices in particular is quite a costly operation, so if your
 +virtualization setup is static you might consider increasing this. If this
 +option is set to 0, refreshing is disabled completely.
 +
 +=item B<Domain> I<name>
 +
 +=item B<BlockDevice> I<name:dev>
 +
 +=item B<InterfaceDevice> I<name:dev>
 +
 +=item B<IgnoreSelected> B<true>|B<false>
 +
 +Select which domains and devices are collected.
 +
 +If I<IgnoreSelected> is not given or B<false> then only the listed domains and
 +disk/network devices are collected.
 +
 +If I<IgnoreSelected> is B<true> then the test is reversed and the listed
 +domains and disk/network devices are ignored, while the rest are collected.
 +
 +The domain name and device names may use a regular expression, if the name is
 +surrounded by I</.../> and collectd was compiled with support for regexps.
 +
 +The default is to collect statistics for all domains and all their devices.
 +
 +Example:
 +
 + BlockDevice "/:hdb/"
 + IgnoreSelected "true"
 +
 +Ignore all I<hdb> devices on any domain, but other block devices (eg. I<hda>)
 +will be collected.
 +
 +=item B<HostnameFormat> B<name|uuid|hostname|...>
 +
 +When the virt plugin logs data, it sets the hostname of the collected data
 +according to this setting. The default is to use the guest name as provided by
 +the hypervisor, which is equal to setting B<name>.
 +
 +B<uuid> means use the guest's UUID. This is useful if you want to track the
 +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.
 +
 +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
 +between, thus I<"foo:1234-1234-1234-1234">).
 +
 +=item B<InterfaceFormat> B<name>|B<address>
 +
 +When the virt plugin logs interface data, it sets the name of the collected
 +data according to this setting. The default is to use the path as provided by
 +the hypervisor (the "dev" property of the target node), which is equal to
 +setting B<name>.
 +
 +B<address> means use the interface's mac address. This is useful since the
 +interface path might change between reboots of a guest or across migrations.
 +
 +=item B<PluginInstanceFormat> B<name|uuid>
 +
 +When the virt plugin logs data, it sets the plugin_instance of the collected
 +data according to this setting. The default is to use the guest name as provided
 +by the hypervisor, which is equal to setting B<name>.
 +
 +B<uuid> means use the guest's UUID.
 +
 +=back
 +
  =head2 Plugin C<vmem>
  
  The C<vmem> plugin collects information about the usage of virtual memory.
@@@ -6923,59 -6538,6 +6956,59 @@@ instance) are put into one component, f
  
  =item B<AlwaysAppendDS> B<false>|B<true>
  
 +If set to B<true>, append the name of the I<Data Source> (DS) to the "metric"
 +identifier. If set to B<false> (the default), this is only done when there is
 +more than one DS.
 +
 +=back
 +
 +=head2 Plugin C<write_tsdb>
 +
 +The C<write_tsdb> plugin writes data to I<OpenTSDB>, a scalable open-source
 +time series database. The plugin connects to a I<TSD>, a masterless, no shared
 +state daemon that ingests metrics and stores them in HBase. The plugin uses
 +I<TCP> over the "line based" protocol with a default port 4242. The data will
 +be sent in blocks of at most 1428 bytes to minimize the number of network
 +packets.
 +
 +Synopsis:
 +
 + <Plugin write_tsdb>
 +   <Node "example">
 +     Host "tsd-1.my.domain"
 +     Port "4242"
 +     HostTags "status=production"
 +   </Node>
 + </Plugin>
 +
 +The configuration consists of one or more E<lt>B<Node>E<nbsp>I<Name>E<gt>
 +blocks. Inside the B<Node> blocks, the following options are recognized:
 +
 +=over 4
 +
 +=item B<Host> I<Address>
 +
 +Hostname or address to connect to. Defaults to C<localhost>.
 +
 +=item B<Port> I<Service>
 +
 +Service name or port number to connect to. Defaults to C<4242>.
 +
 +
 +=item B<HostTags> I<String>
 +
 +When set, I<HostTags> is added to the end of the metric. It is intended to be
 +used for name=value pairs that the TSD will tag the metric with. Dots and
 +whitespace are I<not> escaped in this string.
 +
 +=item B<StoreRates> B<false>|B<true>
 +
 +If set to B<true>, convert counter values to rates. If set to B<false>
 +(the default) counter values are stored as is, as an increasing
 +integer number.
 +
 +=item B<AlwaysAppendDS> B<false>|B<true>
 +
  If set the B<true>, append the name of the I<Data Source> (DS) to the "metric"
  identifier. If set to B<false> (the default), this is only done when there is
  more than one DS.
@@@ -7037,31 -6599,25 +7070,31 @@@ want to use authentication all three fi
  
  =head2 Plugin C<write_http>
  
 -This output plugin submits values to an http server by POST them using the
 -PUTVAL plain-text protocol. Each destination you want to post data to needs to
 -have one B<URL> block, within which the destination can be configured further,
 -for example by specifying authentication data.
 +This output plugin submits values to an HTTP server using POST requests and
 +encoding metrics with JSON or using the C<PUTVAL> command described in
 +L<collectd-unixsock(5)>.
  
  Synopsis:
  
   <Plugin "write_http">
 -   <URL "http://example.com/post-collectd">
 +   <Node "example">
 +     URL "http://example.com/post-collectd"
       User "collectd"
       Password "weCh3ik0"
 -   </URL>
 +     Format JSON
 +   </Node>
   </Plugin>
  
 -B<URL> blocks need one string argument which is used as the URL to which data
 -is posted. The following options are understood within B<URL> blocks.
 +The plugin can send values to multiple HTTP servers by specifying one
 +E<lt>B<Node>E<nbsp>I<Name>E<gt> block for each server. Within each B<Node>
 +block, the following options are available:
  
  =over 4
  
 +=item B<URL> I<URL>
 +
 +URL to which the values are submitted to. Mandatory.
 +
  =item B<User> I<Username>
  
  Optional user name needed for authentication.
@@@ -7127,16 -6683,8 +7160,16 @@@ Defaults to B<Command>
  =item B<StoreRates> B<true|false>
  
  If set to B<true>, convert counter values to rates. If set to B<false> (the
 -default) counter values are stored as is, i.E<nbsp>e. as an increasing integer
 -number.
 +default) counter values are stored as is, i.e. as an increasing integer number.
 +
 +=item B<BufferSize> I<Bytes>
 +
 +Sets the send buffer size to I<Bytes>. By increasing this buffer, less HTTP
 +requests will be generated, but more metrics will be batched / metrics are
 +cached for longer before being sent, introducing additional delay until they
 +are available on the server side. I<Bytes> must be at least 1024 and cannot
 +exceed the size of an C<int>, i.e. 2E<nbsp>GByte.
 +Defaults to C<4096>.
  
  =back
  
@@@ -7189,7 -6737,7 +7222,7 @@@ If set to B<JSON>, the values are encod
  an easy and straight forward exchange format.
  
  If set to B<Graphite>, values are encoded in the I<Graphite> format, which is
 -"<metric> <value> <timestamp>\n".
 +C<E<lt>metricE<gt> E<lt>valueE<gt> E<lt>timestampE<gt>\n>.
  
  =item B<StoreRates> B<true>|B<false>
  
@@@ -7203,24 -6751,22 +7236,24 @@@ been set to B<JSON>
  
  =item B<GraphitePrefix> (B<Format>=I<Graphite> only)
  
 -A prefix can be added in the metric name when outputting in the I<Graphite> format.
 -It's added before the I<Host> name.
 -Metric name will be "<prefix><host><postfix><plugin><type><name>"
 +A prefix can be added in the metric name when outputting in the I<Graphite>
 +format. It's added before the I<Host> name.
 +Metric name will be
 +C<E<lt>prefixE<gt>E<lt>hostE<gt>E<lt>postfixE<gt>E<lt>pluginE<gt>E<lt>typeE<gt>E<lt>nameE<gt>>
  
  =item B<GraphitePostfix> (B<Format>=I<Graphite> only)
  
 -A postfix can be added in the metric name when outputting in the I<Graphite> format.
 -It's added after the I<Host> name.
 -Metric name will be "<prefix><host><postfix><plugin><type><name>"
 +A postfix can be added in the metric name when outputting in the I<Graphite>
 +format. It's added after the I<Host> name.
 +Metric name will be
 +C<E<lt>prefixE<gt>E<lt>hostE<gt>E<lt>postfixE<gt>E<lt>pluginE<gt>E<lt>typeE<gt>E<lt>nameE<gt>>
  
  =item B<GraphiteEscapeChar> (B<Format>=I<Graphite> only)
  
  Specify a character to replace dots (.) in the host part of the metric name.
  In I<Graphite> metric name, dots are used as separators between different
  metric parts (host, plugin, type).
 -Default is "_" (I<Underscore>).
 +Default is C<_> (I<Underscore>).
  
  =item B<GraphiteSeparateInstances> B<false>|B<true>
  
@@@ -7247,61 -6793,6 +7280,61 @@@ want to set B<metadata.broker.list> to 
  
  =back
  
 +=head2 Plugin C<write_redis>
 +
 +The I<write_redis plugin> submits values to I<Redis>, a data structure server.
 +
 +Synopsis:
 +
 +  <Plugin "write_redis">
 +    <Node "example">
 +        Host "localhost"
 +        Port "6379"
 +        Timeout 1000
 +    </Node>
 +  </Plugin>
 +
 +Values are submitted to I<Sorted Sets>, using the metric name as the key, and
 +the timestamp as the score. Retrieving a date range can then be done using the
 +C<ZRANGEBYSCORE> I<Redis> command. Additionnally, all the identifiers of these
 +I<Sorted Sets> are kept in a I<Set> called C<collectd/values> and can be
 +retrieved using the C<SMEMBERS> I<Redis> command. See
 +L<http://redis.io/commands#sorted_set> and L<http://redis.io/commands#set> for
 +details.
 +
 +The information shown in the synopsis above is the I<default configuration>
 +which is used by the plugin if no configuration is present.
 +
 +The plugin can send values to multiple instances of I<Redis> by specifying
 +one B<Node> block for each instance. Within the B<Node> blocks, the following
 +options are available:
 +
 +=over 4
 +
 +=item B<Node> I<Nodename>
 +
 +The B<Node> block identifies a new I<Redis> node, that is a new I<Redis>
 +instance running in an specified host and port. The name for node is a
 +canonical identifier which is used as I<plugin instance>. It is limited to
 +64E<nbsp>characters in length.
 +
 +=item B<Host> I<Hostname>
 +
 +The B<Host> option is the hostname or IP-address where the I<Redis> instance is
 +running on.
 +
 +=item B<Port> I<Port>
 +
 +The B<Port> option is the TCP port on which the Redis instance accepts
 +connections. Either a service name of a port number may be given. Please note
 +that numerical port numbers must be given as a string, too.
 +
 +=item B<Timeout> I<Timeout in miliseconds>
 +
 +The B<Timeout> option sets the socket connection timeout, in milliseconds.
 +
 +=back
 +
  =head2 Plugin C<write_riemann>
  
  The I<write_riemann plugin> will send values to I<Riemann>, a powerful stream
@@@ -7347,26 -6838,7 +7380,26 @@@ Service name or port number to connect 
  =item B<Protocol> B<UDP>|B<TCP>
  
  Specify the protocol to use when communicating with I<Riemann>. Defaults to
 -B<UDP>.
 +B<TCP>.
 +
 +=item B<Batch> B<true>|B<false>
 +
 +If set to B<true> and B<Protocol> is set to B<TCP>,
 +events will be batched in memory and flushed at
 +regular intervals or when B<BatchMaxSize> is exceeded.
 +
 +Notifications are not batched and sent as soon as possible.
 +
 +When enabled, it can occur that events get processed by the Riemann server
 +close to or after their expiration time. Tune the B<TTLFactor> and
 +B<BatchMaxSize> settings according to the amount of values collected, if this
 +is an issue.
 +
 +Defaults to true
 +
 +=item B<BatchMaxSize> I<size>
 +
 +Maximum payload size for a riemann packet. Defaults to 8192
  
  =item B<StoreRates> B<true>|B<false>
  
@@@ -7404,12 -6876,6 +7437,12 @@@ useful to avoid getting notification ev
  If set to B<true>, attach state to events based on thresholds defined
  in the B<Threshold> plugin. Defaults to B<false>.
  
 +=item B<EventServicePrefix> I<String>
 +
 +Add the given string as a prefix to the event service name.
 +If B<EventServicePrefix> not set or set to an empty string (""),
 +no prefix will be used.
 +
  =back
  
  =item B<Tag> I<String>
@@@ -7424,31 -6890,6 +7457,31 @@@ attribute for each metric being sent ou
  
  =back
  
 +=head2 Plugin C<zookeeper>
 +
 +The I<zookeeper plugin> will collect statistics from a I<Zookeeper> server
 +using the mntr command.  It requires Zookeeper 3.4.0+ and access to the
 +client port.
 +
 +B<Synopsis:>
 +
 + <Plugin "zookeeper">
 +   Host "127.0.0.1"
 +   Port "2181"
 + </Plugin>
 +
 +=over 4
 +
 +=item B<Host> I<Address>
 +
 +Hostname or address to connect to. Defaults to C<localhost>.
 +
 +=item B<Port> I<Service>
 +
 +Service name or port number to connect to. Defaults to C<2181>.
 +
 +=back
 +
  =head1 THRESHOLD CONFIGURATION
  
  Starting with version C<4.3.0> collectd has support for B<monitoring>. By that
@@@ -7919,36 -7360,19 +7952,36 @@@ Available options
  =item B<Plugin> I<Name>
  
  Name of the write plugin to which the data should be sent. This option may be
 -given multiple times to send the data to more than one write plugin.
 +given multiple times to send the data to more than one write plugin. If the
 +plugin supports multiple instances, the plugin's instance(s) must also be
 +specified.
  
  =back
  
  If no plugin is explicitly specified, the values will be sent to all available
  write plugins.
  
 -Example:
 +Single-instance plugin example:
  
   <Target "write">
     Plugin "rrdtool"
   </Target>
  
 +Multi-instance plugin example:
 +
 + <Plugin "write_graphite">
 +   <Node "foo">
 +   ...
 +   </Node>
 +   <Node "bar">
 +   ...
 +   </Node>
 + </Plugin>
 +  ...
 + <Target "write">
 +   Plugin "write_graphite/foo"
 + </Target>
 +
  =item B<jump>
  
  Starts processing the rules of another chain, see L<"Flow control"> above. If