# GraphiteEscapeChar "_"
# GraphiteSeparateInstances false
# GraphiteAlwaysAppendDS false
+ # GraphitePreserveSeparator false
</Publish>
# Receive values from an AMQP broker
identifier. If set to B<false> (the default), this is only done when there is
more than one DS.
+=item B<GraphitePreserveSeparator> B<false>|B<true>
+
+If set to B<false> (the default) the C<.> (dot) character is replaced with
+I<GraphiteEscapeChar>. Otherwise, if set to B<true>, the C<.> (dot) character
+is preserved, i.e. passed through.
+
=back
=head2 Plugin C<apache>
Use the last number found.
+=item B<GaugePersist>
+
+Use the last number found. The number is not reset at the end of an interval.
+It is continously reported until another number is matched. This is intended
+for cases in which only state changes are reported, for example a thermometer
+that only reports the temperature when it changes.
+
=item B<CounterSet>
=item B<DeriveSet>
=item B<BlockDevice> I<name:dev>
-=item B<lockDeviceFormat> B<source>|B<dev>
-
-=item B<BlockDeviceFormatBasename> B<false>|B<true>
-
=item B<InterfaceDevice> I<name:dev>
=item B<IgnoreSelected> B<true>|B<false>
Ignore all I<hdb> devices on any domain, but other block devices (eg. I<hda>)
will be collected.
-If I<BlockDeviceFormat> is set to B<dev>, then the device names will be the ones
-in the I<target> node for the device in the XML definition of the domain. The
-default is B<dev>. This is the behavior before adding the option.
-
-If I<BlockDeviceFormat> is set to B<source>, then the device names will be the ones
-in the I<source> node for the device in the XML definition of the domain.
+=item B<BlockDeviceFormat> B<target>|B<source>
-Example:
-
-If the domain XML have the following device defined:
+If I<BlockDeviceFormat> is set to B<target>, the default, then the device name
+seen by the guest will be used for reporting metrics.
+This corresponds to the C<E<lt>targetE<gt>> node in the XML definition of the
+domain.
- <disk type='block' device='disk'>
- <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
- <source dev='/var/lib/libvirt/images/image1.qcow2'/>
- <target dev='sda' bus='scsi'/>
- <boot order='2'/>
- <address type='drive' controller='0' bus='0' target='0' unit='0'/>
- </disk>
+If I<BlockDeviceFormat> is set to B<source>, then metrics will be reported
+using the path of the source, e.g. an image file.
+This corresponds to the C<E<lt>sourceE<gt>> node in the XML definition of the
+domain.
-setting
+B<Example:>
- BlockDeviceFormat dev
-
-will name the device in the graph as sda
-
-setting
-
- BlockDeviceFormat source
-
-will name the device in the graph as var_lib_libvirt_images_image1.qcow2
+If the domain XML have the following device defined:
-These names will also be part of the RRD filename.
+ <disk type='block' device='disk'>
+ <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
+ <source dev='/var/lib/libvirt/images/image1.qcow2'/>
+ <target dev='sda' bus='scsi'/>
+ <boot order='2'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
-I<BlockDeviceFormatBasename> - this option is honored if and only if
-option I<BlockDeviceFormat> is set to B<source>. If set to B<true> then
-only the last part of the path will be used for device name and naming the
-RRD file.
+Setting C<BlockDeviceFormat target> will cause the I<type instance> to be set
+to C<sda>.
+Setting C<BlockDeviceFormat source> will cause the I<type instance> to be set
+to C<var_lib_libvirt_images_image1.qcow2>.
-Example:
+=item B<BlockDeviceFormatBasename> B<false>|B<true>
-if the device path (source tag) is: /var/lib/libvirt/images/image1.qcow2
+The B<BlockDeviceFormatBasename> controls whether the full path or the
+L<basename(1)> of the source is being used as the I<type instance> when
+B<BlockDeviceFormat> is set to B<source>. Defaults to B<false>.
-setting:
- BlockDeviceFormatBasename true
+B<Example:>
-will set the device name to: image1.qcow2
+Assume the device path (source tag) is C</var/lib/libvirt/images/image1.qcow2>.
+Setting C<BlockDeviceFormatBasename false> will cause the I<type instance> to
+be set to C<var_lib_libvirt_images_image1.qcow2>.
+Setting C<BlockDeviceFormatBasename true> will cause the I<type instance> to be
+set to C<image1.qcow2>.
=item B<HostnameFormat> B<name|uuid|hostname|...>
identifier. If set to B<false> (the default), this is only done when there is
more than one DS.
+=item B<PreserveSeparator> B<false>|B<true>
+
+If set to B<false> (the default) the C<.> (dot) character is replaced with
+I<EscapeCharacter>. Otherwise, if set to B<true>, the C<.> (dot) character
+is preserved, i.e. passed through.
+
=item B<DropDuplicateFields> B<false>|B<true>
If set to B<true>, detect and remove duplicate components in Graphite metric
=back
+=head2 Plugin C<write_prometheus>
+
+The I<write_prometheus plugin> implements a tiny webserver that can be scraped
+using I<Prometheus>.
+
+B<Options:>
+
+=over 4
+
+=item B<Port> I<Port>
+
+Port the embedded webserver should listen on. Defaults to B<9103>.
+
+=item B<StalenessDelta> I<Seconds>
+
+Time in seconds after which I<Prometheus> considers a metric "stale" if it
+hasn't seen any update for it. This value must match the setting in Prometheus.
+It defaults to B<300> seconds (5 minutes), same as Prometheus.
+
+B<Background:>
+
+I<Prometheus> has a global setting, C<StalenessDelta>, which controls after
+which time a metric without updates is considered "stale". This setting
+effectively puts an upper limit on the interval in which metrics are reported.
+
+When the I<write_prometheus plugin> encounters a metric with an interval
+exceeding this limit, it will inform you, the user, and provide the metric to
+I<Prometheus> B<without> a timestamp. That causes I<Prometheus> to consider the
+metric "fresh" each time it is scraped, with the time of the scrape being
+considered the time of the update. The result is that there appear more
+datapoints in I<Prometheus> than were actually created, but at least the metric
+doesn't disappear periodically.
+
+=back
+
=head2 Plugin C<write_http>
This output plugin submits values to an HTTP server using POST requests and
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.
+
+=item B<GraphitePreserveSeparator> B<false>|B<true>
+
+If set to B<false> (the default) the C<.> (dot) character is replaced with
+I<GraphiteEscapeChar>. Otherwise, if set to B<true>, the C<.> (dot) character
+is preserved, i.e. passed through.
=item B<StoreRates> B<true>|B<false>
If set to B<true> (the default), convert counter values to rates. If set to