Merge remote-tracking branch 'github/pr/1681'
[collectd.git] / src / collectd.conf.pod
1 =encoding UTF-8
2
3 =head1 NAME
4
5 collectd.conf - Configuration for the system statistics collection daemon B<collectd>
6
7 =head1 SYNOPSIS
8
9   BaseDir "/var/lib/collectd"
10   PIDFile "/run/collectd.pid"
11   Interval 10.0
12
13   LoadPlugin cpu
14   LoadPlugin load
15
16   <LoadPlugin df>
17     Interval 3600
18   </LoadPlugin>
19   <Plugin df>
20     ValuesPercentage true
21   </Plugin>
22
23   LoadPlugin ping
24   <Plugin ping>
25     Host "example.org"
26     Host "provider.net"
27   </Plugin>
28
29 =head1 DESCRIPTION
30
31 This config file controls how the system statistics collection daemon
32 B<collectd> behaves. The most significant option is B<LoadPlugin>, which
33 controls which plugins to load. These plugins ultimately define collectd's
34 behavior. If the B<AutoLoadPlugin> option has been enabled, the explicit
35 B<LoadPlugin> lines may be omitted for all plugins with a configuration block,
36 i.e. a C<E<lt>PluginE<nbsp>...E<gt>> block.
37
38 The syntax of this config file is similar to the config file of the famous
39 I<Apache> webserver. Each line contains either an option (a key and a list of
40 one or more values) or a section-start or -end. Empty lines and everything
41 after a non-quoted hash-symbol (C<#>) are ignored. I<Keys> are unquoted
42 strings, consisting only of alphanumeric characters and the underscore (C<_>)
43 character. Keys are handled case insensitive by I<collectd> itself and all
44 plugins included with it. I<Values> can either be an I<unquoted string>, a
45 I<quoted string> (enclosed in double-quotes) a I<number> or a I<boolean>
46 expression. I<Unquoted strings> consist of only alphanumeric characters and
47 underscores (C<_>) and do not need to be quoted. I<Quoted strings> are
48 enclosed in double quotes (C<">). You can use the backslash character (C<\>)
49 to include double quotes as part of the string. I<Numbers> can be specified in
50 decimal and floating point format (using a dot C<.> as decimal separator),
51 hexadecimal when using the C<0x> prefix and octal with a leading zero (C<0>).
52 I<Boolean> values are either B<true> or B<false>.
53
54 Lines may be wrapped by using C<\> as the last character before the newline.
55 This allows long lines to be split into multiple lines. Quoted strings may be
56 wrapped as well. However, those are treated special in that whitespace at the
57 beginning of the following lines will be ignored, which allows for nicely
58 indenting the wrapped lines.
59
60 The configuration is read and processed in order, i.e. from top to bottom. So
61 the plugins are loaded in the order listed in this config file. It is a good
62 idea to load any logging plugins first in order to catch messages from plugins
63 during configuration. Also, unless B<AutoLoadPlugin> is enabled, the
64 B<LoadPlugin> option I<must> occur I<before> the appropriate
65 C<E<lt>B<Plugin> ...E<gt>> block.
66
67 =head1 GLOBAL OPTIONS
68
69 =over 4
70
71 =item B<BaseDir> I<Directory>
72
73 Sets the base directory. This is the directory beneath which all RRD-files are
74 created. Possibly more subdirectories are created. This is also the working
75 directory for the daemon.
76
77 =item B<LoadPlugin> I<Plugin>
78
79 Loads the plugin I<Plugin>. This is required to load plugins, unless the
80 B<AutoLoadPlugin> option is enabled (see below). Without any loaded plugins,
81 I<collectd> will be mostly useless.
82
83 Only the first B<LoadPlugin> statement or block for a given plugin name has any
84 effect. This is useful when you want to split up the configuration into smaller
85 files and want each file to be "self contained", i.e. it contains a B<Plugin>
86 block I<and> the appropriate B<LoadPlugin> statement. The downside is that if
87 you have multiple conflicting B<LoadPlugin> blocks, e.g. when they specify
88 different intervals, only one of them (the first one encountered) will take
89 effect and all others will be silently ignored.
90
91 B<LoadPlugin> may either be a simple configuration I<statement> or a I<block>
92 with additional options, affecting the behavior of B<LoadPlugin>. A simple
93 statement looks like this:
94
95  LoadPlugin "cpu"
96
97 Options inside a B<LoadPlugin> block can override default settings and
98 influence the way plugins are loaded, e.g.:
99
100  <LoadPlugin perl>
101    Interval 60
102  </LoadPlugin>
103
104 The following options are valid inside B<LoadPlugin> blocks:
105
106 =over 4
107
108 =item B<Globals> B<true|false>
109
110 If enabled, collectd will export all global symbols of the plugin (and of all
111 libraries loaded as dependencies of the plugin) and, thus, makes those symbols
112 available for resolving unresolved symbols in subsequently loaded plugins if
113 that is supported by your system.
114
115 This is useful (or possibly even required), e.g., when loading a plugin that
116 embeds some scripting language into the daemon (e.g. the I<Perl> and
117 I<Python plugins>). Scripting languages usually provide means to load
118 extensions written in C. Those extensions require symbols provided by the
119 interpreter, which is loaded as a dependency of the respective collectd plugin.
120 See the documentation of those plugins (e.g., L<collectd-perl(5)> or
121 L<collectd-python(5)>) for details.
122
123 By default, this is disabled. As a special exception, if the plugin name is
124 either C<perl> or C<python>, the default is changed to enabled in order to keep
125 the average user from ever having to deal with this low level linking stuff.
126
127 =item B<Interval> I<Seconds>
128
129 Sets a plugin-specific interval for collecting metrics. This overrides the
130 global B<Interval> setting. If a plugin provides its own support for specifying
131 an interval, that setting will take precedence.
132
133 =item B<FlushInterval> I<Seconds>
134
135 Specifies the interval, in seconds, to call the flush callback if it's
136 defined in this plugin. By default, this is disabled.
137
138 =item B<FlushTimeout> I<Seconds>
139
140 Specifies the value of the timeout argument of the flush callback.
141
142 =back
143
144 =item B<AutoLoadPlugin> B<false>|B<true>
145
146 When set to B<false> (the default), each plugin needs to be loaded explicitly,
147 using the B<LoadPlugin> statement documented above. If a
148 B<E<lt>PluginE<nbsp>...E<gt>> block is encountered and no configuration
149 handling callback for this plugin has been registered, a warning is logged and
150 the block is ignored.
151
152 When set to B<true>, explicit B<LoadPlugin> statements are not required. Each
153 B<E<lt>PluginE<nbsp>...E<gt>> block acts as if it was immediately preceded by a
154 B<LoadPlugin> statement. B<LoadPlugin> statements are still required for
155 plugins that don't provide any configuration, e.g. the I<Load plugin>.
156
157 =item B<CollectInternalStats> B<false>|B<true>
158
159 When set to B<true>, various statistics about the I<collectd> daemon will be
160 collected, with "collectd" as the I<plugin name>. Defaults to B<false>.
161
162 The following metrics are reported:
163
164 =over 4
165
166 =item C<collectd-write_queue/queue_length>
167
168 The number of metrics currently in the write queue. You can limit the queue
169 length with the B<WriteQueueLimitLow> and B<WriteQueueLimitHigh> options.
170
171 =item C<collectd-write_queue/derive-dropped>
172
173 The number of metrics dropped due to a queue length limitation.
174 If this value is non-zero, your system can't handle all incoming metrics and
175 protects itself against overload by dropping metrics.
176
177 =item C<collectd-cache/cache_size>
178
179 The number of elements in the metric cache (the cache you can interact with
180 using L<collectd-unixsock(5)>).
181
182 =back
183
184 =item B<Include> I<Path> [I<pattern>]
185
186 If I<Path> points to a file, includes that file. If I<Path> points to a
187 directory, recursively includes all files within that directory and its
188 subdirectories. If the C<wordexp> function is available on your system,
189 shell-like wildcards are expanded before files are included. This means you can
190 use statements like the following:
191
192   Include "/etc/collectd.d/*.conf"
193
194 Starting with version 5.3, this may also be a block in which further options
195 affecting the behavior of B<Include> may be specified. The following option is
196 currently allowed:
197
198   <Include "/etc/collectd.d">
199     Filter "*.conf"
200   </Include>
201
202 =over 4
203
204 =item B<Filter> I<pattern>
205
206 If the C<fnmatch> function is available on your system, a shell-like wildcard
207 I<pattern> may be specified to filter which files to include. This may be used
208 in combination with recursively including a directory to easily be able to
209 arbitrarily mix configuration files and other documents (e.g. README files).
210 The given example is similar to the first example above but includes all files
211 matching C<*.conf> in any subdirectory of C</etc/collectd.d>.
212
213 =back
214
215 If more than one file is included by a single B<Include> option, the files
216 will be included in lexicographical order (as defined by the C<strcmp>
217 function). Thus, you can e.E<nbsp>g. use numbered prefixes to specify the
218 order in which the files are loaded.
219
220 To prevent loops and shooting yourself in the foot in interesting ways the
221 nesting is limited to a depth of 8E<nbsp>levels, which should be sufficient for
222 most uses. Since symlinks are followed it is still possible to crash the daemon
223 by looping symlinks. In our opinion significant stupidity should result in an
224 appropriate amount of pain.
225
226 It is no problem to have a block like C<E<lt>Plugin fooE<gt>> in more than one
227 file, but you cannot include files from within blocks.
228
229 =item B<PIDFile> I<File>
230
231 Sets where to write the PID file to. This file is overwritten when it exists
232 and deleted when the program is stopped. Some init-scripts might override this
233 setting using the B<-P> command-line option.
234
235 =item B<PluginDir> I<Directory>
236
237 Path to the plugins (shared objects) of collectd.
238
239 =item B<TypesDB> I<File> [I<File> ...]
240
241 Set one or more files that contain the data-set descriptions. See
242 L<types.db(5)> for a description of the format of this file.
243
244 If this option is not specified, a default file is read. If you need to define
245 custom types in addition to the types defined in the default file, you need to
246 explicitly load both. In other words, if the B<TypesDB> option is encountered
247 the default behavior is disabled and if you need the default types you have to
248 also explicitly load them.
249
250 =item B<Interval> I<Seconds>
251
252 Configures the interval in which to query the read plugins. Obviously smaller
253 values lead to a higher system load produced by collectd, while higher values
254 lead to more coarse statistics.
255
256 B<Warning:> You should set this once and then never touch it again. If you do,
257 I<you will have to delete all your RRD files> or know some serious RRDtool
258 magic! (Assuming you're using the I<RRDtool> or I<RRDCacheD> plugin.)
259
260 =item B<MaxReadInterval> I<Seconds>
261
262 A read plugin doubles the interval between queries after each failed attempt
263 to get data.
264
265 This options limits the maximum value of the interval. The default value is
266 B<86400>.
267
268 =item B<Timeout> I<Iterations>
269
270 Consider a value list "missing" when no update has been read or received for
271 I<Iterations> iterations. By default, I<collectd> considers a value list
272 missing when no update has been received for twice the update interval. Since
273 this setting uses iterations, the maximum allowed time without update depends
274 on the I<Interval> information contained in each value list. This is used in
275 the I<Threshold> configuration to dispatch notifications about missing values,
276 see L<collectd-threshold(5)> for details.
277
278 =item B<ReadThreads> I<Num>
279
280 Number of threads to start for reading plugins. The default value is B<5>, but
281 you may want to increase this if you have more than five plugins that take a
282 long time to read. Mostly those are plugins that do network-IO. Setting this to
283 a value higher than the number of registered read callbacks is not recommended.
284
285 =item B<WriteThreads> I<Num>
286
287 Number of threads to start for dispatching value lists to write plugins. The
288 default value is B<5>, but you may want to increase this if you have more than
289 five plugins that may take relatively long to write to.
290
291 =item B<WriteQueueLimitHigh> I<HighNum>
292
293 =item B<WriteQueueLimitLow> I<LowNum>
294
295 Metrics are read by the I<read threads> and then put into a queue to be handled
296 by the I<write threads>. If one of the I<write plugins> is slow (e.g. network
297 timeouts, I/O saturation of the disk) this queue will grow. In order to avoid
298 running into memory issues in such a case, you can limit the size of this
299 queue.
300
301 By default, there is no limit and memory may grow indefinitely. This is most
302 likely not an issue for clients, i.e. instances that only handle the local
303 metrics. For servers it is recommended to set this to a non-zero value, though.
304
305 You can set the limits using B<WriteQueueLimitHigh> and B<WriteQueueLimitLow>.
306 Each of them takes a numerical argument which is the number of metrics in the
307 queue. If there are I<HighNum> metrics in the queue, any new metrics I<will> be
308 dropped. If there are less than I<LowNum> metrics in the queue, all new metrics
309 I<will> be enqueued. If the number of metrics currently in the queue is between
310 I<LowNum> and I<HighNum>, the metric is dropped with a probability that is
311 proportional to the number of metrics in the queue (i.e. it increases linearly
312 until it reaches 100%.)
313
314 If B<WriteQueueLimitHigh> is set to non-zero and B<WriteQueueLimitLow> is
315 unset, the latter will default to half of B<WriteQueueLimitHigh>.
316
317 If you do not want to randomly drop values when the queue size is between
318 I<LowNum> and I<HighNum>, set B<WriteQueueLimitHigh> and B<WriteQueueLimitLow>
319 to the same value.
320
321 Enabling the B<CollectInternalStats> option is of great help to figure out the
322 values to set B<WriteQueueLimitHigh> and B<WriteQueueLimitLow> to.
323
324 =item B<Hostname> I<Name>
325
326 Sets the hostname that identifies a host. If you omit this setting, the
327 hostname will be determined using the L<gethostname(2)> system call.
328
329 =item B<FQDNLookup> B<true|false>
330
331 If B<Hostname> is determined automatically this setting controls whether or not
332 the daemon should try to figure out the "fully qualified domain name", FQDN.
333 This is done using a lookup of the name returned by C<gethostname>. This option
334 is enabled by default.
335
336 =item B<PreCacheChain> I<ChainName>
337
338 =item B<PostCacheChain> I<ChainName>
339
340 Configure the name of the "pre-cache chain" and the "post-cache chain". Please
341 see L</"FILTER CONFIGURATION"> below on information on chains and how these
342 setting change the daemon's behavior.
343
344 =back
345
346 =head1 PLUGIN OPTIONS
347
348 Some plugins may register own options. These options must be enclosed in a
349 C<Plugin>-Section. Which options exist depends on the plugin used. Some plugins
350 require external configuration, too. The C<apache plugin>, for example,
351 required C<mod_status> to be configured in the webserver you're going to
352 collect data from. These plugins are listed below as well, even if they don't
353 require any configuration within collectd's configuration file.
354
355 A list of all plugins and a short summary for each plugin can be found in the
356 F<README> file shipped with the sourcecode and hopefully binary packets as
357 well.
358
359 =head2 Plugin C<aggregation>
360
361 The I<Aggregation plugin> makes it possible to aggregate several values into
362 one using aggregation functions such as I<sum>, I<average>, I<min> and I<max>.
363 This can be put to a wide variety of uses, e.g. average and total CPU
364 statistics for your entire fleet.
365
366 The grouping is powerful but, as with many powerful tools, may be a bit
367 difficult to wrap your head around. The grouping will therefore be
368 demonstrated using an example: The average and sum of the CPU usage across
369 all CPUs of each host is to be calculated.
370
371 To select all the affected values for our example, set C<Plugin cpu> and
372 C<Type cpu>. The other values are left unspecified, meaning "all values". The
373 I<Host>, I<Plugin>, I<PluginInstance>, I<Type> and I<TypeInstance> options
374 work as if they were specified in the C<WHERE> clause of an C<SELECT> SQL
375 statement.
376
377   Plugin "cpu"
378   Type "cpu"
379
380 Although the I<Host>, I<PluginInstance> (CPU number, i.e. 0, 1, 2, ...)  and
381 I<TypeInstance> (idle, user, system, ...) fields are left unspecified in the
382 example, the intention is to have a new value for each host / type instance
383 pair. This is achieved by "grouping" the values using the C<GroupBy> option.
384 It can be specified multiple times to group by more than one field.
385
386   GroupBy "Host"
387   GroupBy "TypeInstance"
388
389 We do neither specify nor group by I<plugin instance> (the CPU number), so all
390 metrics that differ in the CPU number only will be aggregated. Each
391 aggregation needs I<at least one> such field, otherwise no aggregation would
392 take place.
393
394 The full example configuration looks like this:
395
396  <Plugin "aggregation">
397    <Aggregation>
398      Plugin "cpu"
399      Type "cpu"
400
401      GroupBy "Host"
402      GroupBy "TypeInstance"
403
404      CalculateSum true
405      CalculateAverage true
406    </Aggregation>
407  </Plugin>
408
409 There are a couple of limitations you should be aware of:
410
411 =over 4
412
413 =item *
414
415 The I<Type> cannot be left unspecified, because it is not reasonable to add
416 apples to oranges. Also, the internal lookup structure won't work if you try
417 to group by type.
418
419 =item *
420
421 There must be at least one unspecified, ungrouped field. Otherwise nothing
422 will be aggregated.
423
424 =back
425
426 As you can see in the example above, each aggregation has its own
427 B<Aggregation> block. You can have multiple aggregation blocks and aggregation
428 blocks may match the same values, i.e. one value list can update multiple
429 aggregations. The following options are valid inside B<Aggregation> blocks:
430
431 =over 4
432
433 =item B<Host> I<Host>
434
435 =item B<Plugin> I<Plugin>
436
437 =item B<PluginInstance> I<PluginInstance>
438
439 =item B<Type> I<Type>
440
441 =item B<TypeInstance> I<TypeInstance>
442
443 Selects the value lists to be added to this aggregation. B<Type> must be a
444 valid data set name, see L<types.db(5)> for details.
445
446 If the string starts with and ends with a slash (C</>), the string is
447 interpreted as a I<regular expression>. The regex flavor used are POSIX
448 extended regular expressions as described in L<regex(7)>. Example usage:
449
450  Host "/^db[0-9]\\.example\\.com$/"
451
452 =item B<GroupBy> B<Host>|B<Plugin>|B<PluginInstance>|B<TypeInstance>
453
454 Group valued by the specified field. The B<GroupBy> option may be repeated to
455 group by multiple fields.
456
457 =item B<SetHost> I<Host>
458
459 =item B<SetPlugin> I<Plugin>
460
461 =item B<SetPluginInstance> I<PluginInstance>
462
463 =item B<SetTypeInstance> I<TypeInstance>
464
465 Sets the appropriate part of the identifier to the provided string.
466
467 The I<PluginInstance> should include the placeholder C<%{aggregation}> which
468 will be replaced with the aggregation function, e.g. "average". Not including
469 the placeholder will result in duplication warnings and/or messed up values if
470 more than one aggregation function are enabled.
471
472 The following example calculates the average usage of all "even" CPUs:
473
474  <Plugin "aggregation">
475    <Aggregation>
476      Plugin "cpu"
477      PluginInstance "/[0,2,4,6,8]$/"
478      Type "cpu"
479
480      SetPlugin "cpu"
481      SetPluginInstance "even-%{aggregation}"
482
483      GroupBy "Host"
484      GroupBy "TypeInstance"
485
486      CalculateAverage true
487    </Aggregation>
488  </Plugin>
489
490 This will create the files:
491
492 =over 4
493
494 =item *
495
496 foo.example.com/cpu-even-average/cpu-idle
497
498 =item *
499
500 foo.example.com/cpu-even-average/cpu-system
501
502 =item *
503
504 foo.example.com/cpu-even-average/cpu-user
505
506 =item *
507
508 ...
509
510 =back
511
512 =item B<CalculateNum> B<true>|B<false>
513
514 =item B<CalculateSum> B<true>|B<false>
515
516 =item B<CalculateAverage> B<true>|B<false>
517
518 =item B<CalculateMinimum> B<true>|B<false>
519
520 =item B<CalculateMaximum> B<true>|B<false>
521
522 =item B<CalculateStddev> B<true>|B<false>
523
524 Boolean options for enabling calculation of the number of value lists, their
525 sum, average, minimum, maximum andE<nbsp>/ or standard deviation. All options
526 are disabled by default.
527
528 =back
529
530 =head2 Plugin C<amqp>
531
532 The I<AMQP plugin> can be used to communicate with other instances of
533 I<collectd> or third party applications using an AMQP message broker. Values
534 are sent to or received from the broker, which handles routing, queueing and
535 possibly filtering out messages.
536
537 B<Synopsis:>
538
539  <Plugin "amqp">
540    # Send values to an AMQP broker
541    <Publish "some_name">
542      Host "localhost"
543      Port "5672"
544      VHost "/"
545      User "guest"
546      Password "guest"
547      Exchange "amq.fanout"
548  #   ExchangeType "fanout"
549  #   RoutingKey "collectd"
550  #   Persistent false
551  #   ConnectionRetryDelay 0
552  #   Format "command"
553  #   StoreRates false
554  #   GraphitePrefix "collectd."
555  #   GraphiteEscapeChar "_"
556  #   GraphiteSeparateInstances false
557  #   GraphiteAlwaysAppendDS false
558  #   GraphitePreserveSeparator false
559    </Publish>
560
561    # Receive values from an AMQP broker
562    <Subscribe "some_name">
563      Host "localhost"
564      Port "5672"
565      VHost "/"
566      User "guest"
567      Password "guest"
568      Exchange "amq.fanout"
569  #   ExchangeType "fanout"
570  #   Queue "queue_name"
571  #   QueueDurable false
572  #   QueueAutoDelete true
573  #   RoutingKey "collectd.#"
574  #   ConnectionRetryDelay 0
575    </Subscribe>
576  </Plugin>
577
578 The plugin's configuration consists of a number of I<Publish> and I<Subscribe>
579 blocks, which configure sending and receiving of values respectively. The two
580 blocks are very similar, so unless otherwise noted, an option can be used in
581 either block. The name given in the blocks starting tag is only used for
582 reporting messages, but may be used to support I<flushing> of certain
583 I<Publish> blocks in the future.
584
585 =over 4
586
587 =item B<Host> I<Host>
588
589 Hostname or IP-address of the AMQP broker. Defaults to the default behavior of
590 the underlying communications library, I<rabbitmq-c>, which is "localhost".
591
592 =item B<Port> I<Port>
593
594 Service name or port number on which the AMQP broker accepts connections. This
595 argument must be a string, even if the numeric form is used. Defaults to
596 "5672".
597
598 =item B<VHost> I<VHost>
599
600 Name of the I<virtual host> on the AMQP broker to use. Defaults to "/".
601
602 =item B<User> I<User>
603
604 =item B<Password> I<Password>
605
606 Credentials used to authenticate to the AMQP broker. By default "guest"/"guest"
607 is used.
608
609 =item B<Exchange> I<Exchange>
610
611 In I<Publish> blocks, this option specifies the I<exchange> to send values to.
612 By default, "amq.fanout" will be used.
613
614 In I<Subscribe> blocks this option is optional. If given, a I<binding> between
615 the given exchange and the I<queue> is created, using the I<routing key> if
616 configured. See the B<Queue> and B<RoutingKey> options below.
617
618 =item B<ExchangeType> I<Type>
619
620 If given, the plugin will try to create the configured I<exchange> with this
621 I<type> after connecting. When in a I<Subscribe> block, the I<queue> will then
622 be bound to this exchange.
623
624 =item B<Queue> I<Queue> (Subscribe only)
625
626 Configures the I<queue> name to subscribe to. If no queue name was configured
627 explicitly, a unique queue name will be created by the broker.
628
629 =item B<QueueDurable> B<true>|B<false> (Subscribe only)
630
631 Defines if the I<queue> subscribed to is durable (saved to persistent storage)
632 or transient (will disappear if the AMQP broker is restarted). Defaults to
633 "false".
634
635 This option should be used in conjunction with the I<Persistent> option on the
636 publish side.
637
638 =item B<QueueAutoDelete> B<true>|B<false> (Subscribe only)
639
640 Defines if the I<queue> subscribed to will be deleted once the last consumer
641 unsubscribes. Defaults to "true".
642
643 =item B<RoutingKey> I<Key>
644
645 In I<Publish> blocks, this configures the routing key to set on all outgoing
646 messages. If not given, the routing key will be computed from the I<identifier>
647 of the value. The host, plugin, type and the two instances are concatenated
648 together using dots as the separator and all containing dots replaced with
649 slashes. For example "collectd.host/example/com.cpu.0.cpu.user". This makes it
650 possible to receive only specific values using a "topic" exchange.
651
652 In I<Subscribe> blocks, configures the I<routing key> used when creating a
653 I<binding> between an I<exchange> and the I<queue>. The usual wildcards can be
654 used to filter messages when using a "topic" exchange. If you're only
655 interested in CPU statistics, you could use the routing key "collectd.*.cpu.#"
656 for example.
657
658 =item B<Persistent> B<true>|B<false> (Publish only)
659
660 Selects the I<delivery method> to use. If set to B<true>, the I<persistent>
661 mode will be used, i.e. delivery is guaranteed. If set to B<false> (the
662 default), the I<transient> delivery mode will be used, i.e. messages may be
663 lost due to high load, overflowing queues or similar issues.
664
665 =item B<ConnectionRetryDelay> I<Delay>
666
667 When the connection to the AMQP broker is lost, defines the time in seconds to
668 wait before attempting to reconnect. Defaults to 0, which implies collectd will
669 attempt to reconnect at each read interval (in Subscribe mode) or each time
670 values are ready for submission (in Publish mode).
671
672 =item B<Format> B<Command>|B<JSON>|B<Graphite> (Publish only)
673
674 Selects the format in which messages are sent to the broker. If set to
675 B<Command> (the default), values are sent as C<PUTVAL> commands which are
676 identical to the syntax used by the I<Exec> and I<UnixSock plugins>. In this
677 case, the C<Content-Type> header field will be set to C<text/collectd>.
678
679 If set to B<JSON>, the values are encoded in the I<JavaScript Object Notation>,
680 an easy and straight forward exchange format. The C<Content-Type> header field
681 will be set to C<application/json>.
682
683 If set to B<Graphite>, values are encoded in the I<Graphite> format, which is
684 "<metric> <value> <timestamp>\n". The C<Content-Type> header field will be set to
685 C<text/graphite>.
686
687 A subscribing client I<should> use the C<Content-Type> header field to
688 determine how to decode the values. Currently, the I<AMQP plugin> itself can
689 only decode the B<Command> format.
690
691 =item B<StoreRates> B<true>|B<false> (Publish only)
692
693 Determines whether or not C<COUNTER>, C<DERIVE> and C<ABSOLUTE> data sources
694 are converted to a I<rate> (i.e. a C<GAUGE> value). If set to B<false> (the
695 default), no conversion is performed. Otherwise the conversion is performed
696 using the internal value cache.
697
698 Please note that currently this option is only used if the B<Format> option has
699 been set to B<JSON>.
700
701 =item B<GraphitePrefix> (Publish and B<Format>=I<Graphite> only)
702
703 A prefix can be added in the metric name when outputting in the I<Graphite> format.
704 It's added before the I<Host> name.
705 Metric name will be "<prefix><host><postfix><plugin><type><name>"
706
707 =item B<GraphitePostfix> (Publish and B<Format>=I<Graphite> only)
708
709 A postfix can be added in the metric name when outputting in the I<Graphite> format.
710 It's added after the I<Host> name.
711 Metric name will be "<prefix><host><postfix><plugin><type><name>"
712
713 =item B<GraphiteEscapeChar> (Publish and B<Format>=I<Graphite> only)
714
715 Specify a character to replace dots (.) in the host part of the metric name.
716 In I<Graphite> metric name, dots are used as separators between different
717 metric parts (host, plugin, type).
718 Default is "_" (I<Underscore>).
719
720 =item B<GraphiteSeparateInstances> B<true>|B<false>
721
722 If set to B<true>, the plugin instance and type instance will be in their own
723 path component, for example C<host.cpu.0.cpu.idle>. If set to B<false> (the
724 default), the plugin and plugin instance (and likewise the type and type
725 instance) are put into one component, for example C<host.cpu-0.cpu-idle>.
726
727 =item B<GraphiteAlwaysAppendDS> B<true>|B<false>
728
729 If set to B<true>, append the name of the I<Data Source> (DS) to the "metric"
730 identifier. If set to B<false> (the default), this is only done when there is
731 more than one DS.
732
733 =item B<GraphitePreserveSeparator> B<false>|B<true>
734
735 If set to B<false> (the default) the C<.> (dot) character is replaced with
736 I<GraphiteEscapeChar>. Otherwise, if set to B<true>, the C<.> (dot) character
737 is preserved, i.e. passed through.
738
739 =back
740
741 =head2 Plugin C<apache>
742
743 To configure the C<apache>-plugin you first need to configure the Apache
744 webserver correctly. The Apache-plugin C<mod_status> needs to be loaded and
745 working and the C<ExtendedStatus> directive needs to be B<enabled>. You can use
746 the following snipped to base your Apache config upon:
747
748   ExtendedStatus on
749   <IfModule mod_status.c>
750     <Location /mod_status>
751       SetHandler server-status
752     </Location>
753   </IfModule>
754
755 Since its C<mod_status> module is very similar to Apache's, B<lighttpd> is
756 also supported. It introduces a new field, called C<BusyServers>, to count the
757 number of currently connected clients. This field is also supported.
758
759 The configuration of the I<Apache> plugin consists of one or more
760 C<E<lt>InstanceE<nbsp>/E<gt>> blocks. Each block requires one string argument
761 as the instance name. For example:
762
763  <Plugin "apache">
764    <Instance "www1">
765      URL "http://www1.example.com/mod_status?auto"
766    </Instance>
767    <Instance "www2">
768      URL "http://www2.example.com/mod_status?auto"
769    </Instance>
770  </Plugin>
771
772 The instance name will be used as the I<plugin instance>. To emulate the old
773 (versionE<nbsp>4) behavior, you can use an empty string (""). In order for the
774 plugin to work correctly, each instance name must be unique. This is not
775 enforced by the plugin and it is your responsibility to ensure it.
776
777 The following options are accepted within each I<Instance> block:
778
779 =over 4
780
781 =item B<URL> I<http://host/mod_status?auto>
782
783 Sets the URL of the C<mod_status> output. This needs to be the output generated
784 by C<ExtendedStatus on> and it needs to be the machine readable output
785 generated by appending the C<?auto> argument. This option is I<mandatory>.
786
787 =item B<User> I<Username>
788
789 Optional user name needed for authentication.
790
791 =item B<Password> I<Password>
792
793 Optional password needed for authentication.
794
795 =item B<VerifyPeer> B<true|false>
796
797 Enable or disable peer SSL certificate verification. See
798 L<http://curl.haxx.se/docs/sslcerts.html> for details. Enabled by default.
799
800 =item B<VerifyHost> B<true|false>
801
802 Enable or disable peer host name verification. If enabled, the plugin checks
803 if the C<Common Name> or a C<Subject Alternate Name> field of the SSL
804 certificate matches the host name provided by the B<URL> option. If this
805 identity check fails, the connection is aborted. Obviously, only works when
806 connecting to a SSL enabled server. Enabled by default.
807
808 =item B<CACert> I<File>
809
810 File that holds one or more SSL certificates. If you want to use HTTPS you will
811 possibly need this option. What CA certificates come bundled with C<libcurl>
812 and are checked by default depends on the distribution you use.
813
814 =item B<SSLCiphers> I<list of ciphers>
815
816 Specifies which ciphers to use in the connection. The list of ciphers
817 must specify valid ciphers. See
818 L<http://www.openssl.org/docs/apps/ciphers.html> for details.
819
820 =item B<Timeout> I<Milliseconds>
821
822 The B<Timeout> option sets the overall timeout for HTTP requests to B<URL>, in
823 milliseconds. By default, the configured B<Interval> is used to set the
824 timeout.
825
826 =back
827
828 =head2 Plugin C<apcups>
829
830 =over 4
831
832 =item B<Host> I<Hostname>
833
834 Hostname of the host running B<apcupsd>. Defaults to B<localhost>. Please note
835 that IPv6 support has been disabled unless someone can confirm or decline that
836 B<apcupsd> can handle it.
837
838 =item B<Port> I<Port>
839
840 TCP-Port to connect to. Defaults to B<3551>.
841
842 =item B<ReportSeconds> B<true>|B<false>
843
844 If set to B<true>, the time reported in the C<timeleft> metric will be
845 converted to seconds. This is the recommended setting. If set to B<false>, the
846 default for backwards compatibility, the time will be reported in minutes.
847
848 =item B<PersistentConnection> B<true>|B<false>
849
850 The plugin is designed to keep the connection to I<apcupsd> open between reads.
851 If plugin poll interval is greater than 15 seconds (hardcoded socket close
852 timeout in I<apcupsd> NIS), then this option is B<false> by default.
853
854 You can instruct the plugin to close the connection after each read by setting
855 this option to B<false> or force keeping the connection by setting it to B<true>.
856
857 If I<apcupsd> appears to close the connection due to inactivity quite quickly,
858 the plugin will try to detect this problem and switch to an open-read-close mode.
859
860 =back
861
862 =head2 Plugin C<aquaero>
863
864 This plugin collects the value of the available sensors in an
865 I<AquaeroE<nbsp>5> board. AquaeroE<nbsp>5 is a water-cooling controller board,
866 manufactured by Aqua Computer GmbH L<http://www.aquacomputer.de/>, with a USB2
867 connection for monitoring and configuration. The board can handle multiple
868 temperature sensors, fans, water pumps and water level sensors and adjust the
869 output settings such as fan voltage or power used by the water pump based on
870 the available inputs using a configurable controller included in the board.
871 This plugin collects all the available inputs as well as some of the output
872 values chosen by this controller. The plugin is based on the I<libaquaero5>
873 library provided by I<aquatools-ng>.
874
875 =over 4
876
877 =item B<Device> I<DevicePath>
878
879 Device path of the AquaeroE<nbsp>5's USB HID (human interface device), usually
880 in the form C</dev/usb/hiddevX>. If this option is no set the plugin will try
881 to auto-detect the Aquaero 5 USB device based on vendor-ID and product-ID.
882
883 =back
884
885 =head2 Plugin C<ascent>
886
887 This plugin collects information about an Ascent server, a free server for the
888 "World of Warcraft" game. This plugin gathers the information by fetching the
889 XML status page using C<libcurl> and parses it using C<libxml2>.
890
891 The configuration options are the same as for the C<apache> plugin above:
892
893 =over 4
894
895 =item B<URL> I<http://localhost/ascent/status/>
896
897 Sets the URL of the XML status output.
898
899 =item B<User> I<Username>
900
901 Optional user name needed for authentication.
902
903 =item B<Password> I<Password>
904
905 Optional password needed for authentication.
906
907 =item B<VerifyPeer> B<true|false>
908
909 Enable or disable peer SSL certificate verification. See
910 L<http://curl.haxx.se/docs/sslcerts.html> for details. Enabled by default.
911
912 =item B<VerifyHost> B<true|false>
913
914 Enable or disable peer host name verification. If enabled, the plugin checks
915 if the C<Common Name> or a C<Subject Alternate Name> field of the SSL
916 certificate matches the host name provided by the B<URL> option. If this
917 identity check fails, the connection is aborted. Obviously, only works when
918 connecting to a SSL enabled server. Enabled by default.
919
920 =item B<CACert> I<File>
921
922 File that holds one or more SSL certificates. If you want to use HTTPS you will
923 possibly need this option. What CA certificates come bundled with C<libcurl>
924 and are checked by default depends on the distribution you use.
925
926 =item B<Timeout> I<Milliseconds>
927
928 The B<Timeout> option sets the overall timeout for HTTP requests to B<URL>, in
929 milliseconds. By default, the configured B<Interval> is used to set the
930 timeout.
931
932 =back
933
934 =head2 Plugin C<barometer>
935
936 This plugin reads absolute air pressure using digital barometer sensor on a I2C
937 bus. Supported sensors are:
938
939 =over 5
940
941 =item I<MPL115A2> from Freescale,
942 see L<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL115A>.
943
944
945 =item I<MPL3115> from Freescale
946 see L<http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPL3115A2>.
947
948
949 =item I<BMP085> from Bosch Sensortec
950
951 =back
952
953 The sensor type - one of the above - is detected automatically by the plugin
954 and indicated in the plugin_instance (you will see subdirectory
955 "barometer-mpl115" or "barometer-mpl3115", or "barometer-bmp085"). The order of
956 detection is BMP085 -> MPL3115 -> MPL115A2, the first one found will be used
957 (only one sensor can be used by the plugin).
958
959 The plugin provides absolute barometric pressure, air pressure reduced to sea
960 level (several possible approximations) and as an auxiliary value also internal
961 sensor temperature. It uses (expects/provides) typical metric units - pressure
962 in [hPa], temperature in [C], altitude in [m].
963
964 It was developed and tested under Linux only. The only platform dependency is
965 the standard Linux i2c-dev interface (the particular bus driver has to
966 support the SM Bus command subset).
967
968 The reduction or normalization to mean sea level pressure requires (depending
969 on selected method/approximation) also altitude and reference to temperature
970 sensor(s).  When multiple temperature sensors are configured the minimum of
971 their values is always used (expecting that the warmer ones are affected by
972 e.g. direct sun light at that moment).
973
974 Synopsis:
975
976   <Plugin "barometer">
977      Device            "/dev/i2c-0";
978      Oversampling      512
979      PressureOffset    0.0
980      TemperatureOffset 0.0
981      Normalization     2
982      Altitude          238.0
983      TemperatureSensor "myserver/onewire-F10FCA000800/temperature"
984   </Plugin>
985
986 =over 4
987
988 =item B<Device> I<device>
989
990 The only mandatory configuration parameter.
991
992 Device name of the I2C bus to which the sensor is connected. Note that
993 typically you need to have loaded the i2c-dev module.
994 Using i2c-tools you can check/list i2c buses available on your system by:
995
996   i2cdetect -l
997
998 Then you can scan for devices on given bus. E.g. to scan the whole bus 0 use:
999
1000   i2cdetect -y -a 0
1001
1002 This way you should be able to verify that the pressure sensor (either type) is
1003 connected and detected on address 0x60.
1004
1005 =item B<Oversampling> I<value>
1006
1007 Optional parameter controlling the oversampling/accuracy. Default value
1008 is 1 providing fastest and least accurate reading.
1009
1010 For I<MPL115> this is the size of the averaging window. To filter out sensor
1011 noise a simple averaging using floating window of this configurable size is
1012 used. The plugin will use average of the last C<value> measurements (value of 1
1013 means no averaging).  Minimal size is 1, maximal 1024.
1014
1015 For I<MPL3115> this is the oversampling value. The actual oversampling is
1016 performed by the sensor and the higher value the higher accuracy and longer
1017 conversion time (although nothing to worry about in the collectd context).
1018 Supported values are: 1, 2, 4, 8, 16, 32, 64 and 128. Any other value is
1019 adjusted by the plugin to the closest supported one.
1020
1021 For I<BMP085> this is the oversampling value. The actual oversampling is
1022 performed by the sensor and the higher value the higher accuracy and longer
1023 conversion time (although nothing to worry about in the collectd context).
1024 Supported values are: 1, 2, 4, 8. Any other value is adjusted by the plugin to
1025 the closest supported one.
1026
1027 =item B<PressureOffset> I<offset>
1028
1029 Optional parameter for MPL3115 only.
1030
1031 You can further calibrate the sensor by supplying pressure and/or temperature
1032 offsets.  This is added to the measured/caclulated value (i.e. if the measured
1033 value is too high then use negative offset).
1034 In hPa, default is 0.0.
1035
1036 =item B<TemperatureOffset> I<offset>
1037
1038 Optional parameter for MPL3115 only.
1039
1040 You can further calibrate the sensor by supplying pressure and/or temperature
1041 offsets.  This is added to the measured/caclulated value (i.e. if the measured
1042 value is too high then use negative offset).
1043 In C, default is 0.0.
1044
1045 =item B<Normalization> I<method>
1046
1047 Optional parameter, default value is 0.
1048
1049 Normalization method - what approximation/model is used to compute the mean sea
1050 level pressure from the air absolute pressure.
1051
1052 Supported values of the C<method> (integer between from 0 to 2) are:
1053
1054 =over 5
1055
1056 =item B<0> - no conversion, absolute pressure is simply copied over. For this method you
1057        do not need to configure C<Altitude> or C<TemperatureSensor>.
1058
1059 =item B<1> - international formula for conversion ,
1060 See
1061 L<http://en.wikipedia.org/wiki/Atmospheric_pressure#Altitude_atmospheric_pressure_variation>.
1062 For this method you have to configure C<Altitude> but do not need
1063 C<TemperatureSensor> (uses fixed global temperature average instead).
1064
1065 =item B<2> - formula as recommended by the Deutsche Wetterdienst (German
1066 Meteorological Service).
1067 See L<http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel#Theorie>
1068 For this method you have to configure both  C<Altitude> and
1069 C<TemperatureSensor>.
1070
1071 =back
1072
1073
1074 =item B<Altitude> I<altitude>
1075
1076 The altitude (in meters) of the location where you meassure the pressure.
1077
1078 =item B<TemperatureSensor> I<reference>
1079
1080 Temperature sensor(s) which should be used as a reference when normalizing the
1081 pressure using C<Normalization> method 2.
1082 When specified more sensors a minimum is found and used each time.  The
1083 temperature reading directly from this pressure sensor/plugin is typically not
1084 suitable as the pressure sensor will be probably inside while we want outside
1085 temperature.  The collectd reference name is something like
1086 <hostname>/<plugin_name>-<plugin_instance>/<type>-<type_instance>
1087 (<type_instance> is usually omitted when there is just single value type). Or
1088 you can figure it out from the path of the output data files.
1089
1090 =back
1091
1092 =head2 Plugin C<battery>
1093
1094 The I<battery plugin> reports the remaining capacity, power and voltage of
1095 laptop batteries.
1096
1097 =over 4
1098
1099 =item B<ValuesPercentage> B<false>|B<true>
1100
1101 When enabled, remaining capacity is reported as a percentage, e.g. "42%
1102 capacity remaining". Otherwise the capacity is stored as reported by the
1103 battery, most likely in "Wh". This option does not work with all input methods,
1104 in particular when only C</proc/pmu> is available on an old Linux system.
1105 Defaults to B<false>.
1106
1107 =item B<ReportDegraded> B<false>|B<true>
1108
1109 Typical laptop batteries degrade over time, meaning the capacity decreases with
1110 recharge cycles. The maximum charge of the previous charge cycle is tracked as
1111 "last full capacity" and used to determine that a battery is "fully charged".
1112
1113 When this option is set to B<false>, the default, the I<battery plugin> will
1114 only report the remaining capacity. If the B<ValuesPercentage> option is
1115 enabled, the relative remaining capacity is calculated as the ratio of the
1116 "remaining capacity" and the "last full capacity". This is what most tools,
1117 such as the status bar of desktop environments, also do.
1118
1119 When set to B<true>, the battery plugin will report three values: B<charged>
1120 (remaining capacity), B<discharged> (difference between "last full capacity"
1121 and "remaining capacity") and B<degraded> (difference between "design capacity"
1122 and "last full capacity").
1123
1124 =item B<QueryStateFS> B<false>|B<true>
1125
1126 When set to B<true>, the battery plugin will only read statistics
1127 related to battery performance as exposed by StateFS at
1128 /run/state. StateFS is used in Mer-based Sailfish OS, for
1129 example.
1130
1131 =back
1132
1133 =head2 Plugin C<bind>
1134
1135 Starting with BIND 9.5.0, the most widely used DNS server software provides
1136 extensive statistics about queries, responses and lots of other information.
1137 The bind plugin retrieves this information that's encoded in XML and provided
1138 via HTTP and submits the values to collectd.
1139
1140 To use this plugin, you first need to tell BIND to make this information
1141 available. This is done with the C<statistics-channels> configuration option:
1142
1143  statistics-channels {
1144    inet localhost port 8053;
1145  };
1146
1147 The configuration follows the grouping that can be seen when looking at the
1148 data with an XSLT compatible viewer, such as a modern web browser. It's
1149 probably a good idea to make yourself familiar with the provided values, so you
1150 can understand what the collected statistics actually mean.
1151
1152 Synopsis:
1153
1154  <Plugin "bind">
1155    URL "http://localhost:8053/"
1156    ParseTime       false
1157    OpCodes         true
1158    QTypes          true
1159
1160    ServerStats     true
1161    ZoneMaintStats  true
1162    ResolverStats   false
1163    MemoryStats     true
1164
1165    <View "_default">
1166      QTypes        true
1167      ResolverStats true
1168      CacheRRSets   true
1169
1170      Zone "127.in-addr.arpa/IN"
1171    </View>
1172  </Plugin>
1173
1174 The bind plugin accepts the following configuration options:
1175
1176 =over 4
1177
1178 =item B<URL> I<URL>
1179
1180 URL from which to retrieve the XML data. If not specified,
1181 C<http://localhost:8053/> will be used.
1182
1183 =item B<ParseTime> B<true>|B<false>
1184
1185 When set to B<true>, the time provided by BIND will be parsed and used to
1186 dispatch the values. When set to B<false>, the local time source is queried.
1187
1188 This setting is set to B<true> by default for backwards compatibility; setting
1189 this to B<false> is I<recommended> to avoid problems with timezones and
1190 localization.
1191
1192 =item B<OpCodes> B<true>|B<false>
1193
1194 When enabled, statistics about the I<"OpCodes">, for example the number of
1195 C<QUERY> packets, are collected.
1196
1197 Default: Enabled.
1198
1199 =item B<QTypes> B<true>|B<false>
1200
1201 When enabled, the number of I<incoming> queries by query types (for example
1202 C<A>, C<MX>, C<AAAA>) is collected.
1203
1204 Default: Enabled.
1205
1206 =item B<ServerStats> B<true>|B<false>
1207
1208 Collect global server statistics, such as requests received over IPv4 and IPv6,
1209 successful queries, and failed updates.
1210
1211 Default: Enabled.
1212
1213 =item B<ZoneMaintStats> B<true>|B<false>
1214
1215 Collect zone maintenance statistics, mostly information about notifications
1216 (zone updates) and zone transfers.
1217
1218 Default: Enabled.
1219
1220 =item B<ResolverStats> B<true>|B<false>
1221
1222 Collect resolver statistics, i.E<nbsp>e. statistics about outgoing requests
1223 (e.E<nbsp>g. queries over IPv4, lame servers). Since the global resolver
1224 counters apparently were removed in BIND 9.5.1 and 9.6.0, this is disabled by
1225 default. Use the B<ResolverStats> option within a B<View "_default"> block
1226 instead for the same functionality.
1227
1228 Default: Disabled.
1229
1230 =item B<MemoryStats>
1231
1232 Collect global memory statistics.
1233
1234 Default: Enabled.
1235
1236 =item B<Timeout> I<Milliseconds>
1237
1238 The B<Timeout> option sets the overall timeout for HTTP requests to B<URL>, in
1239 milliseconds. By default, the configured B<Interval> is used to set the
1240 timeout.
1241
1242 =item B<View> I<Name>
1243
1244 Collect statistics about a specific I<"view">. BIND can behave different,
1245 mostly depending on the source IP-address of the request. These different
1246 configurations are called "views". If you don't use this feature, you most
1247 likely are only interested in the C<_default> view.
1248
1249 Within a E<lt>B<View>E<nbsp>I<name>E<gt> block, you can specify which
1250 information you want to collect about a view. If no B<View> block is
1251 configured, no detailed view statistics will be collected.
1252
1253 =over 4
1254
1255 =item B<QTypes> B<true>|B<false>
1256
1257 If enabled, the number of I<outgoing> queries by query type (e.E<nbsp>g. C<A>,
1258 C<MX>) is collected.
1259
1260 Default: Enabled.
1261
1262 =item B<ResolverStats> B<true>|B<false>
1263
1264 Collect resolver statistics, i.E<nbsp>e. statistics about outgoing requests
1265 (e.E<nbsp>g. queries over IPv4, lame servers).
1266
1267 Default: Enabled.
1268
1269 =item B<CacheRRSets> B<true>|B<false>
1270
1271 If enabled, the number of entries (I<"RR sets">) in the view's cache by query
1272 type is collected. Negative entries (queries which resulted in an error, for
1273 example names that do not exist) are reported with a leading exclamation mark,
1274 e.E<nbsp>g. "!A".
1275
1276 Default: Enabled.
1277
1278 =item B<Zone> I<Name>
1279
1280 When given, collect detailed information about the given zone in the view. The
1281 information collected if very similar to the global B<ServerStats> information
1282 (see above).
1283
1284 You can repeat this option to collect detailed information about multiple
1285 zones.
1286
1287 By default no detailed zone information is collected.
1288
1289 =back
1290
1291 =back
1292
1293 =head2 Plugin C<ceph>
1294
1295 The ceph plugin collects values from JSON data to be parsed by B<libyajl>
1296 (L<https://lloyd.github.io/yajl/>) retrieved from ceph daemon admin sockets.
1297
1298 A separate B<Daemon> block must be configured for each ceph daemon to be
1299 monitored. The following example will read daemon statistics from four
1300 separate ceph daemons running on the same device (two OSDs, one MON, one MDS) :
1301
1302   <Plugin ceph>
1303     LongRunAvgLatency false
1304     ConvertSpecialMetricTypes true
1305     <Daemon "osd.0">
1306       SocketPath "/var/run/ceph/ceph-osd.0.asok"
1307     </Daemon>
1308     <Daemon "osd.1">
1309       SocketPath "/var/run/ceph/ceph-osd.1.asok"
1310     </Daemon>
1311     <Daemon "mon.a">
1312       SocketPath "/var/run/ceph/ceph-mon.ceph1.asok"
1313     </Daemon>
1314     <Daemon "mds.a">
1315       SocketPath "/var/run/ceph/ceph-mds.ceph1.asok"
1316     </Daemon>
1317   </Plugin>
1318
1319 The ceph plugin accepts the following configuration options:
1320
1321 =over 4
1322
1323 =item B<LongRunAvgLatency> B<true>|B<false>
1324
1325 If enabled, latency values(sum,count pairs) are calculated as the long run
1326 average - average since the ceph daemon was started = (sum / count).
1327 When disabled, latency values are calculated as the average since the last
1328 collection = (sum_now - sum_last) / (count_now - count_last).
1329
1330 Default: Disabled
1331
1332 =item B<ConvertSpecialMetricTypes> B<true>|B<false>
1333
1334 If enabled, special metrics (metrics that differ in type from similar counters)
1335 are converted to the type of those similar counters. This currently only
1336 applies to filestore.journal_wr_bytes which is a counter for OSD daemons. The
1337 ceph schema reports this metric type as a sum,count pair while similar counters
1338 are treated as derive types. When converted, the sum is used as the counter
1339 value and is treated as a derive type.
1340 When disabled, all metrics are treated as the types received from the ceph schema.
1341
1342 Default: Enabled
1343
1344 =back
1345
1346 Each B<Daemon> block must have a string argument for the plugin instance name.
1347 A B<SocketPath> is also required for each B<Daemon> block:
1348
1349 =over 4
1350
1351 =item B<Daemon> I<DaemonName>
1352
1353 Name to be used as the instance name for this daemon.
1354
1355 =item B<SocketPath> I<SocketPath>
1356
1357 Specifies the path to the UNIX admin socket of the ceph daemon.
1358
1359 =back
1360
1361 =head2 Plugin C<cgroups>
1362
1363 This plugin collects the CPU user/system time for each I<cgroup> by reading the
1364 F<cpuacct.stat> files in the first cpuacct-mountpoint (typically
1365 F</sys/fs/cgroup/cpu.cpuacct> on machines using systemd).
1366
1367 =over 4
1368
1369 =item B<CGroup> I<Directory>
1370
1371 Select I<cgroup> based on the name. Whether only matching I<cgroups> are
1372 collected or if they are ignored is controlled by the B<IgnoreSelected> option;
1373 see below.
1374
1375 See F</"IGNORELISTS"> for details.
1376
1377 =item B<IgnoreSelected> B<true>|B<false>
1378
1379 Invert the selection: If set to true, all cgroups I<except> the ones that
1380 match any one of the criteria are collected. By default only selected
1381 cgroups are collected if a selection is made. If no selection is configured
1382 at all, B<all> cgroups are selected.
1383
1384 =back
1385
1386 =head2 Plugin C<chrony>
1387
1388 The C<chrony> plugin collects ntp data from a B<chronyd> server, such as clock
1389 skew and per-peer stratum.
1390
1391 For talking to B<chronyd>, it mimics what the B<chronyc> control program does
1392 on the wire.
1393
1394 Available configuration options for the C<chrony> plugin:
1395
1396 =over 4
1397
1398 =item B<Host> I<Hostname>
1399
1400 Hostname of the host running B<chronyd>. Defaults to B<localhost>.
1401
1402 =item B<Port> I<Port>
1403
1404 UDP-Port to connect to. Defaults to B<323>.
1405
1406 =item B<Timeout> I<Timeout>
1407
1408 Connection timeout in seconds. Defaults to B<2>.
1409
1410 =back
1411
1412 =head2 Plugin C<conntrack>
1413
1414 This plugin collects IP conntrack statistics.
1415
1416 =over 4
1417
1418 =item B<OldFiles>
1419
1420 Assume the B<conntrack_count> and B<conntrack_max> files to be found in
1421 F</proc/sys/net/ipv4/netfilter> instead of F</proc/sys/net/netfilter/>.
1422
1423 =back
1424
1425 =head2 Plugin C<cpu>
1426
1427 The I<CPU plugin> collects CPU usage metrics. By default, CPU usage is reported
1428 as Jiffies, using the C<cpu> type. Two aggregations are available:
1429
1430 =over 4
1431
1432 =item *
1433
1434 Sum, per-state, over all CPUs installed in the system; and
1435
1436 =item *
1437
1438 Sum, per-CPU, over all non-idle states of a CPU, creating an "active" state.
1439
1440 =back
1441
1442 The two aggregations can be combined, leading to I<collectd> only emitting a
1443 single "active" metric for the entire system. As soon as one of these
1444 aggregations (or both) is enabled, the I<cpu plugin> will report a percentage,
1445 rather than Jiffies. In addition, you can request individual, per-state,
1446 per-CPU metrics to be reported as percentage.
1447
1448 The following configuration options are available:
1449
1450 =over 4
1451
1452 =item B<ReportByState> B<true>|B<false>
1453
1454 When set to B<true>, the default, reports per-state metrics, e.g. "system",
1455 "user" and "idle".
1456 When set to B<false>, aggregates (sums) all I<non-idle> states into one
1457 "active" metric.
1458
1459 =item B<ReportByCpu> B<true>|B<false>
1460
1461 When set to B<true>, the default, reports per-CPU (per-core) metrics.
1462 When set to B<false>, instead of reporting metrics for individual CPUs, only a
1463 global sum of CPU states is emitted.
1464
1465 =item B<ValuesPercentage> B<false>|B<true>
1466
1467 This option is only considered when both, B<ReportByCpu> and B<ReportByState>
1468 are set to B<true>. In this case, by default, metrics will be reported as
1469 Jiffies. By setting this option to B<true>, you can request percentage values
1470 in the un-aggregated (per-CPU, per-state) mode as well.
1471
1472 =item B<ReportNumCpu> B<false>|B<true>
1473
1474 When set to B<true>, reports the number of available CPUs.
1475 Defaults to B<false>.
1476
1477 =item B<ReportGuestState> B<false>|B<true>
1478
1479 When set to B<true>, reports the "guest" and "guest_nice" CPU states.
1480 Defaults to B<false>.
1481
1482 =item B<SubtractGuestState> B<false>|B<true>
1483
1484 This option is only considered when B<ReportGuestState> is set to B<true>.
1485 "guest" and "guest_nice" are included in respectively "user" and "nice".
1486 If set to B<true>, "guest" will be subtracted from "user" and "guest_nice"
1487 will be subtracted from "nice".
1488 Defaults to B<true>.
1489
1490 =back
1491
1492 =head2 Plugin C<cpufreq>
1493
1494 This plugin doesn't have any options. It reads
1495 F</sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq> (for the first CPU
1496 installed) to get the current CPU frequency. If this file does not exist make
1497 sure B<cpufreqd> (L<http://cpufreqd.sourceforge.net/>) or a similar tool is
1498 installed and an "cpu governor" (that's a kernel module) is loaded.
1499
1500 =head2 Plugin C<cpusleep>
1501
1502 This plugin doesn't have any options. It reads CLOCK_BOOTTIME and
1503 CLOCK_MONOTONIC and reports the difference between these clocks. Since
1504 BOOTTIME clock increments while device is suspended and MONOTONIC
1505 clock does not, the derivative of the difference between these clocks
1506 gives the relative amount of time the device has spent in suspend
1507 state. The recorded value is in milliseconds of sleep per seconds of
1508 wall clock.
1509
1510 =head2 Plugin C<csv>
1511
1512 =over 4
1513
1514 =item B<DataDir> I<Directory>
1515
1516 Set the directory to store CSV-files under. Per default CSV-files are generated
1517 beneath the daemon's working directory, i.E<nbsp>e. the B<BaseDir>.
1518 The special strings B<stdout> and B<stderr> can be used to write to the standard
1519 output and standard error channels, respectively. This, of course, only makes
1520 much sense when collectd is running in foreground- or non-daemon-mode.
1521
1522 =item B<StoreRates> B<true|false>
1523
1524 If set to B<true>, convert counter values to rates. If set to B<false> (the
1525 default) counter values are stored as is, i.E<nbsp>e. as an increasing integer
1526 number.
1527
1528 =back
1529
1530 =head2 cURL Statistics
1531
1532 All cURL-based plugins support collection of generic, request-based
1533 statistics. These are disabled by default and can be enabled selectively for
1534 each page or URL queried from the curl, curl_json, or curl_xml plugins. See
1535 the documentation of those plugins for specific information. This section
1536 describes the available metrics that can be configured for each plugin. All
1537 options are disabled by default.
1538
1539 See L<http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html> for more details.
1540
1541 =over 4
1542
1543 =item B<TotalTime> B<true|false>
1544
1545 Total time of the transfer, including name resolving, TCP connect, etc.
1546
1547 =item B<NamelookupTime> B<true|false>
1548
1549 Time it took from the start until name resolving was completed.
1550
1551 =item B<ConnectTime> B<true|false>
1552
1553 Time it took from the start until the connect to the remote host (or proxy)
1554 was completed.
1555
1556 =item B<AppconnectTime> B<true|false>
1557
1558 Time it took from the start until the SSL/SSH connect/handshake to the remote
1559 host was completed.
1560
1561 =item B<PretransferTime> B<true|false>
1562
1563 Time it took from the start until just before the transfer begins.
1564
1565 =item B<StarttransferTime> B<true|false>
1566
1567 Time it took from the start until the first byte was received.
1568
1569 =item B<RedirectTime> B<true|false>
1570
1571 Time it took for all redirection steps include name lookup, connect,
1572 pre-transfer and transfer before final transaction was started.
1573
1574 =item B<RedirectCount> B<true|false>
1575
1576 The total number of redirections that were actually followed.
1577
1578 =item B<SizeUpload> B<true|false>
1579
1580 The total amount of bytes that were uploaded.
1581
1582 =item B<SizeDownload> B<true|false>
1583
1584 The total amount of bytes that were downloaded.
1585
1586 =item B<SpeedDownload> B<true|false>
1587
1588 The average download speed that curl measured for the complete download.
1589
1590 =item B<SpeedUpload> B<true|false>
1591
1592 The average upload speed that curl measured for the complete upload.
1593
1594 =item B<HeaderSize> B<true|false>
1595
1596 The total size of all the headers received.
1597
1598 =item B<RequestSize> B<true|false>
1599
1600 The total size of the issued requests.
1601
1602 =item B<ContentLengthDownload> B<true|false>
1603
1604 The content-length of the download.
1605
1606 =item B<ContentLengthUpload> B<true|false>
1607
1608 The specified size of the upload.
1609
1610 =item B<NumConnects> B<true|false>
1611
1612 The number of new connections that were created to achieve the transfer.
1613
1614 =back
1615
1616 =head2 Plugin C<curl>
1617
1618 The curl plugin uses the B<libcurl> (L<http://curl.haxx.se/>) to read web pages
1619 and the match infrastructure (the same code used by the tail plugin) to use
1620 regular expressions with the received data.
1621
1622 The following example will read the current value of AMD stock from Google's
1623 finance page and dispatch the value to collectd.
1624
1625   <Plugin curl>
1626     <Page "stock_quotes">
1627       Plugin "quotes"
1628       URL "http://finance.google.com/finance?q=NYSE%3AAMD"
1629       User "foo"
1630       Password "bar"
1631       Digest false
1632       VerifyPeer true
1633       VerifyHost true
1634       CACert "/path/to/ca.crt"
1635       Header "X-Custom-Header: foobar"
1636       Post "foo=bar"
1637
1638       MeasureResponseTime false
1639       MeasureResponseCode false
1640
1641       <Match>
1642         Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>"
1643         DSType "GaugeAverage"
1644         # Note: `stock_value' is not a standard type.
1645         Type "stock_value"
1646         Instance "AMD"
1647       </Match>
1648     </Page>
1649   </Plugin>
1650
1651 In the B<Plugin> block, there may be one or more B<Page> blocks, each defining
1652 a web page and one or more "matches" to be performed on the returned data. The
1653 string argument to the B<Page> block is used as plugin instance.
1654
1655 The following options are valid within B<Page> blocks:
1656
1657 =over 4
1658
1659 =item B<Plugin> I<Plugin>
1660
1661 Use I<Plugin> as the plugin name when submitting values.
1662 Defaults to 'curl'.
1663
1664 =item B<URL> I<URL>
1665
1666 URL of the web site to retrieve. Since a regular expression will be used to
1667 extract information from this data, non-binary data is a big plus here ;)
1668
1669 =item B<User> I<Name>
1670
1671 Username to use if authorization is required to read the page.
1672
1673 =item B<Password> I<Password>
1674
1675 Password to use if authorization is required to read the page.
1676
1677 =item B<Digest> B<true>|B<false>
1678
1679 Enable HTTP digest authentication.
1680
1681 =item B<VerifyPeer> B<true>|B<false>
1682
1683 Enable or disable peer SSL certificate verification. See
1684 L<http://curl.haxx.se/docs/sslcerts.html> for details. Enabled by default.
1685
1686 =item B<VerifyHost> B<true>|B<false>
1687
1688 Enable or disable peer host name verification. If enabled, the plugin checks if
1689 the C<Common Name> or a C<Subject Alternate Name> field of the SSL certificate
1690 matches the host name provided by the B<URL> option. If this identity check
1691 fails, the connection is aborted. Obviously, only works when connecting to a
1692 SSL enabled server. Enabled by default.
1693
1694 =item B<CACert> I<file>
1695
1696 File that holds one or more SSL certificates. If you want to use HTTPS you will
1697 possibly need this option. What CA certificates come bundled with C<libcurl>
1698 and are checked by default depends on the distribution you use.
1699
1700 =item B<Header> I<Header>
1701
1702 A HTTP header to add to the request. Multiple headers are added if this option
1703 is specified more than once.
1704
1705 =item B<Post> I<Body>
1706
1707 Specifies that the HTTP operation should be a POST instead of a GET. The
1708 complete data to be posted is given as the argument.  This option will usually
1709 need to be accompanied by a B<Header> option to set an appropriate
1710 C<Content-Type> for the post body (e.g. to
1711 C<application/x-www-form-urlencoded>).
1712
1713 =item B<MeasureResponseTime> B<true>|B<false>
1714
1715 Measure response time for the request. If this setting is enabled, B<Match>
1716 blocks (see below) are optional. Disabled by default.
1717
1718 Beware that requests will get aborted if they take too long to complete. Adjust
1719 B<Timeout> accordingly if you expect B<MeasureResponseTime> to report such slow
1720 requests.
1721
1722 This option is similar to enabling the B<TotalTime> statistic but it's
1723 measured by collectd instead of cURL.
1724
1725 =item B<MeasureResponseCode> B<true>|B<false>
1726
1727 Measure response code for the request. If this setting is enabled, B<Match>
1728 blocks (see below) are optional. Disabled by default.
1729
1730 =item B<E<lt>StatisticsE<gt>>
1731
1732 One B<Statistics> block can be used to specify cURL statistics to be collected
1733 for each request to the remote web site. See the section "cURL Statistics"
1734 above for details. If this setting is enabled, B<Match> blocks (see below) are
1735 optional.
1736
1737 =item B<E<lt>MatchE<gt>>
1738
1739 One or more B<Match> blocks that define how to match information in the data
1740 returned by C<libcurl>. The C<curl> plugin uses the same infrastructure that's
1741 used by the C<tail> plugin, so please see the documentation of the C<tail>
1742 plugin below on how matches are defined. If the B<MeasureResponseTime> or
1743 B<MeasureResponseCode> options are set to B<true>, B<Match> blocks are
1744 optional.
1745
1746 =item B<Timeout> I<Milliseconds>
1747
1748 The B<Timeout> option sets the overall timeout for HTTP requests to B<URL>, in
1749 milliseconds. By default, the configured B<Interval> is used to set the
1750 timeout. Prior to version 5.5.0, there was no timeout and requests could hang
1751 indefinitely. This legacy behaviour can be achieved by setting the value of
1752 B<Timeout> to 0.
1753
1754 If B<Timeout> is 0 or bigger than the B<Interval>, keep in mind that each slow
1755 network connection will stall one read thread. Adjust the B<ReadThreads> global
1756 setting accordingly to prevent this from blocking other plugins.
1757
1758 =back
1759
1760 =head2 Plugin C<curl_json>
1761
1762 The B<curl_json plugin> collects values from JSON data to be parsed by
1763 B<libyajl> (L<https://lloyd.github.io/yajl/>) retrieved via
1764 either B<libcurl> (L<http://curl.haxx.se/>) or read directly from a
1765 unix socket. The former can be used, for example, to collect values
1766 from CouchDB documents (which are stored JSON notation), and the
1767 latter to collect values from a uWSGI stats socket.
1768
1769 The following example will collect several values from the built-in
1770 C<_stats> runtime statistics module of I<CouchDB>
1771 (L<http://wiki.apache.org/couchdb/Runtime_Statistics>).
1772
1773   <Plugin curl_json>
1774     <URL "http://localhost:5984/_stats">
1775       Instance "httpd"
1776       <Key "httpd/requests/count">
1777         Type "http_requests"
1778       </Key>
1779
1780       <Key "httpd_request_methods/*/count">
1781         Type "http_request_methods"
1782       </Key>
1783
1784       <Key "httpd_status_codes/*/count">
1785         Type "http_response_codes"
1786       </Key>
1787     </URL>
1788   </Plugin>
1789
1790 This example will collect data directly from a I<uWSGI> "Stats Server" socket.
1791
1792   <Plugin curl_json>
1793     <Sock "/var/run/uwsgi.stats.sock">
1794       Instance "uwsgi"
1795       <Key "workers/*/requests">
1796         Type "http_requests"
1797       </Key>
1798
1799       <Key "workers/*/apps/*/requests">
1800         Type "http_requests"
1801       </Key>
1802     </Sock>
1803   </Plugin>
1804
1805 In the B<Plugin> block, there may be one or more B<URL> blocks, each
1806 defining a URL to be fetched via HTTP (using libcurl) or B<Sock>
1807 blocks defining a unix socket to read JSON from directly.  Each of
1808 these blocks may have one or more B<Key> blocks.
1809
1810 The B<Key> string argument must be in a path format. Each component is
1811 used to match the key from a JSON map or the index of an JSON
1812 array. If a path component of a B<Key> is a I<*>E<nbsp>wildcard, the
1813 values for all map keys or array indices will be collectd.
1814
1815 The following options are valid within B<URL> blocks:
1816
1817 =over 4
1818
1819 =item B<Host> I<Name>
1820
1821 Use I<Name> as the host name when submitting values. Defaults to the global
1822 host name setting.
1823
1824 =item B<Plugin> I<Plugin>
1825
1826 Use I<Plugin> as the plugin name when submitting values.
1827 Defaults to 'curl_json'.
1828
1829 =item B<Instance> I<Instance>
1830
1831 Sets the plugin instance to I<Instance>.
1832
1833 =item B<Interval> I<Interval>
1834
1835 Sets the interval (in seconds) in which the values will be collected from this
1836 URL. By default the global B<Interval> setting will be used.
1837
1838 =item B<User> I<Name>
1839
1840 =item B<Password> I<Password>
1841
1842 =item B<Digest> B<true>|B<false>
1843
1844 =item B<VerifyPeer> B<true>|B<false>
1845
1846 =item B<VerifyHost> B<true>|B<false>
1847
1848 =item B<CACert> I<file>
1849
1850 =item B<Header> I<Header>
1851
1852 =item B<Post> I<Body>
1853
1854 =item B<Timeout> I<Milliseconds>
1855
1856 These options behave exactly equivalent to the appropriate options of the
1857 I<cURL> plugin. Please see there for a detailed description.
1858
1859 =item B<E<lt>StatisticsE<gt>>
1860
1861 One B<Statistics> block can be used to specify cURL statistics to be collected
1862 for each request to the remote URL. See the section "cURL Statistics" above
1863 for details.
1864
1865 =back
1866
1867 The following options are valid within B<Key> blocks:
1868
1869 =over 4
1870
1871 =item B<Type> I<Type>
1872
1873 Sets the type used to dispatch the values to the daemon. Detailed information
1874 about types and their configuration can be found in L<types.db(5)>. This
1875 option is mandatory.
1876
1877 =item B<Instance> I<Instance>
1878
1879 Type-instance to use. Defaults to the current map key or current string array element value.
1880
1881 =back
1882
1883 =head2 Plugin C<curl_xml>
1884
1885 The B<curl_xml plugin> uses B<libcurl> (L<http://curl.haxx.se/>) and B<libxml2>
1886 (L<http://xmlsoft.org/>) to retrieve XML data via cURL.
1887
1888  <Plugin "curl_xml">
1889    <URL "http://localhost/stats.xml">
1890      Host "my_host"
1891      Instance "some_instance"
1892      User "collectd"
1893      Password "thaiNg0I"
1894      VerifyPeer true
1895      VerifyHost true
1896      CACert "/path/to/ca.crt"
1897      Header "X-Custom-Header: foobar"
1898      Post "foo=bar"
1899
1900      <XPath "table[@id=\"magic_level\"]/tr">
1901        Type "magic_level"
1902        #InstancePrefix "prefix-"
1903        InstanceFrom "td[1]"
1904        ValuesFrom "td[2]/span[@class=\"level\"]"
1905      </XPath>
1906    </URL>
1907  </Plugin>
1908
1909 In the B<Plugin> block, there may be one or more B<URL> blocks, each defining a
1910 URL to be fetched using libcurl. Within each B<URL> block there are
1911 options which specify the connection parameters, for example authentication
1912 information, and one or more B<XPath> blocks.
1913
1914 Each B<XPath> block specifies how to get one type of information. The
1915 string argument must be a valid XPath expression which returns a list
1916 of "base elements". One value is dispatched for each "base element". The
1917 I<type instance> and values are looked up using further I<XPath> expressions
1918 that should be relative to the base element.
1919
1920 Within the B<URL> block the following options are accepted:
1921
1922 =over 4
1923
1924 =item B<Host> I<Name>
1925
1926 Use I<Name> as the host name when submitting values. Defaults to the global
1927 host name setting.
1928
1929 =item B<Instance> I<Instance>
1930
1931 Use I<Instance> as the plugin instance when submitting values. Defaults to an
1932 empty string (no plugin instance).
1933
1934 =item B<Namespace> I<Prefix> I<URL>
1935
1936 If an XPath expression references namespaces, they must be specified
1937 with this option. I<Prefix> is the "namespace prefix" used in the XML document.
1938 I<URL> is the "namespace name", an URI reference uniquely identifying the
1939 namespace. The option can be repeated to register multiple namespaces.
1940
1941 Examples:
1942
1943   Namespace "s" "http://schemas.xmlsoap.org/soap/envelope/"
1944   Namespace "m" "http://www.w3.org/1998/Math/MathML"
1945
1946 =item B<User> I<User>
1947
1948 =item B<Password> I<Password>
1949
1950 =item B<Digest> B<true>|B<false>
1951
1952 =item B<VerifyPeer> B<true>|B<false>
1953
1954 =item B<VerifyHost> B<true>|B<false>
1955
1956 =item B<CACert> I<CA Cert File>
1957
1958 =item B<Header> I<Header>
1959
1960 =item B<Post> I<Body>
1961
1962 =item B<Timeout> I<Milliseconds>
1963
1964 These options behave exactly equivalent to the appropriate options of the
1965 I<cURL plugin>. Please see there for a detailed description.
1966
1967 =item B<E<lt>StatisticsE<gt>>
1968
1969 One B<Statistics> block can be used to specify cURL statistics to be collected
1970 for each request to the remote URL. See the section "cURL Statistics" above
1971 for details.
1972
1973 =item E<lt>B<XPath> I<XPath-expression>E<gt>
1974
1975 Within each B<URL> block, there must be one or more B<XPath> blocks. Each
1976 B<XPath> block specifies how to get one type of information. The string
1977 argument must be a valid XPath expression which returns a list of "base
1978 elements". One value is dispatched for each "base element".
1979
1980 Within the B<XPath> block the following options are accepted:
1981
1982 =over 4
1983
1984 =item B<Type> I<Type>
1985
1986 Specifies the I<Type> used for submitting patches. This determines the number
1987 of values that are required / expected and whether the strings are parsed as
1988 signed or unsigned integer or as double values. See L<types.db(5)> for details.
1989 This option is required.
1990
1991 =item B<InstancePrefix> I<InstancePrefix>
1992
1993 Prefix the I<type instance> with I<InstancePrefix>. The values are simply
1994 concatenated together without any separator.
1995 This option is optional.
1996
1997 =item B<InstanceFrom> I<InstanceFrom>
1998
1999 Specifies a XPath expression to use for determining the I<type instance>. The
2000 XPath expression must return exactly one element. The element's value is then
2001 used as I<type instance>, possibly prefixed with I<InstancePrefix> (see above).
2002
2003 This value is required. As a special exception, if the "base XPath expression"
2004 (the argument to the B<XPath> block) returns exactly one argument, then this
2005 option may be omitted.
2006
2007 =item B<ValuesFrom> I<ValuesFrom> [I<ValuesFrom> ...]
2008
2009 Specifies one or more XPath expression to use for reading the values. The
2010 number of XPath expressions must match the number of data sources in the
2011 I<type> specified with B<Type> (see above). Each XPath expression must return
2012 exactly one element. The element's value is then parsed as a number and used as
2013 value for the appropriate value in the value list dispatched to the daemon.
2014
2015 =back
2016
2017 =back
2018
2019 =head2 Plugin C<dbi>
2020
2021 This plugin uses the B<dbi> library (L<http://libdbi.sourceforge.net/>) to
2022 connect to various databases, execute I<SQL> statements and read back the
2023 results. I<dbi> is an acronym for "database interface" in case you were
2024 wondering about the name. You can configure how each column is to be
2025 interpreted and the plugin will generate one or more data sets from each row
2026 returned according to these rules.
2027
2028 Because the plugin is very generic, the configuration is a little more complex
2029 than those of other plugins. It usually looks something like this:
2030
2031   <Plugin dbi>
2032     <Query "out_of_stock">
2033       Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category"
2034       # Use with MySQL 5.0.0 or later
2035       MinVersion 50000
2036       <Result>
2037         Type "gauge"
2038         InstancePrefix "out_of_stock"
2039         InstancesFrom "category"
2040         ValuesFrom "value"
2041       </Result>
2042     </Query>
2043     <Database "product_information">
2044       Driver "mysql"
2045       Interval 120
2046       DriverOption "host" "localhost"
2047       DriverOption "username" "collectd"
2048       DriverOption "password" "aZo6daiw"
2049       DriverOption "dbname" "prod_info"
2050       SelectDB "prod_info"
2051       Query "out_of_stock"
2052     </Database>
2053   </Plugin>
2054
2055 The configuration above defines one query with one result and one database. The
2056 query is then linked to the database with the B<Query> option I<within> the
2057 B<E<lt>DatabaseE<gt>> block. You can have any number of queries and databases
2058 and you can also use the B<Include> statement to split up the configuration
2059 file in multiple, smaller files. However, the B<E<lt>QueryE<gt>> block I<must>
2060 precede the B<E<lt>DatabaseE<gt>> blocks, because the file is interpreted from
2061 top to bottom!
2062
2063 The following is a complete list of options:
2064
2065 =head3 B<Query> blocks
2066
2067 Query blocks define I<SQL> statements and how the returned data should be
2068 interpreted. They are identified by the name that is given in the opening line
2069 of the block. Thus the name needs to be unique. Other than that, the name is
2070 not used in collectd.
2071
2072 In each B<Query> block, there is one or more B<Result> blocks. B<Result> blocks
2073 define which column holds which value or instance information. You can use
2074 multiple B<Result> blocks to create multiple values from one returned row. This
2075 is especially useful, when queries take a long time and sending almost the same
2076 query again and again is not desirable.
2077
2078 Example:
2079
2080   <Query "environment">
2081     Statement "select station, temperature, humidity from environment"
2082     <Result>
2083       Type "temperature"
2084       # InstancePrefix "foo"
2085       InstancesFrom "station"
2086       ValuesFrom "temperature"
2087     </Result>
2088     <Result>
2089       Type "humidity"
2090       InstancesFrom "station"
2091       ValuesFrom "humidity"
2092     </Result>
2093   </Query>
2094
2095 The following options are accepted:
2096
2097 =over 4
2098
2099 =item B<Statement> I<SQL>
2100
2101 Sets the statement that should be executed on the server. This is B<not>
2102 interpreted by collectd, but simply passed to the database server. Therefore,
2103 the SQL dialect that's used depends on the server collectd is connected to.
2104
2105 The query has to return at least two columns, one for the instance and one
2106 value. You cannot omit the instance, even if the statement is guaranteed to
2107 always return exactly one line. In that case, you can usually specify something
2108 like this:
2109
2110   Statement "SELECT \"instance\", COUNT(*) AS value FROM table"
2111
2112 (That works with MySQL but may not be valid SQL according to the spec. If you
2113 use a more strict database server, you may have to select from a dummy table or
2114 something.)
2115
2116 Please note that some databases, for example B<Oracle>, will fail if you
2117 include a semicolon at the end of the statement.
2118
2119 =item B<MinVersion> I<Version>
2120
2121 =item B<MaxVersion> I<Value>
2122
2123 Only use this query for the specified database version. You can use these
2124 options to provide multiple queries with the same name but with a slightly
2125 different syntax. The plugin will use only those queries, where the specified
2126 minimum and maximum versions fit the version of the database in use.
2127
2128 The database version is determined by C<dbi_conn_get_engine_version>, see the
2129 L<libdbi documentation|http://libdbi.sourceforge.net/docs/programmers-guide/reference-conn.html#DBI-CONN-GET-ENGINE-VERSION>
2130 for details. Basically, each part of the version is assumed to be in the range
2131 from B<00> to B<99> and all dots are removed. So version "4.1.2" becomes
2132 "40102", version "5.0.42" becomes "50042".
2133
2134 B<Warning:> The plugin will use B<all> matching queries, so if you specify
2135 multiple queries with the same name and B<overlapping> ranges, weird stuff will
2136 happen. Don't to it! A valid example would be something along these lines:
2137
2138   MinVersion 40000
2139   MaxVersion 49999
2140   ...
2141   MinVersion 50000
2142   MaxVersion 50099
2143   ...
2144   MinVersion 50100
2145   # No maximum
2146
2147 In the above example, there are three ranges that don't overlap. The last one
2148 goes from version "5.1.0" to infinity, meaning "all later versions". Versions
2149 before "4.0.0" are not specified.
2150
2151 =item B<Type> I<Type>
2152
2153 The B<type> that's used for each line returned. See L<types.db(5)> for more
2154 details on how types are defined. In short: A type is a predefined layout of
2155 data and the number of values and type of values has to match the type
2156 definition.
2157
2158 If you specify "temperature" here, you need exactly one gauge column. If you
2159 specify "if_octets", you will need two counter columns. See the B<ValuesFrom>
2160 setting below.
2161
2162 There must be exactly one B<Type> option inside each B<Result> block.
2163
2164 =item B<InstancePrefix> I<prefix>
2165
2166 Prepends I<prefix> to the type instance. If B<InstancesFrom> (see below) is not
2167 given, the string is simply copied. If B<InstancesFrom> is given, I<prefix> and
2168 all strings returned in the appropriate columns are concatenated together,
2169 separated by dashes I<("-")>.
2170
2171 =item B<InstancesFrom> I<column0> [I<column1> ...]
2172
2173 Specifies the columns whose values will be used to create the "type-instance"
2174 for each row. If you specify more than one column, the value of all columns
2175 will be joined together with dashes I<("-")> as separation characters.
2176
2177 The plugin itself does not check whether or not all built instances are
2178 different. It's your responsibility to assure that each is unique. This is
2179 especially true, if you do not specify B<InstancesFrom>: B<You> have to make
2180 sure that only one row is returned in this case.
2181
2182 If neither B<InstancePrefix> nor B<InstancesFrom> is given, the type-instance
2183 will be empty.
2184
2185 =item B<ValuesFrom> I<column0> [I<column1> ...]
2186
2187 Names the columns whose content is used as the actual data for the data sets
2188 that are dispatched to the daemon. How many such columns you need is determined
2189 by the B<Type> setting above. If you specify too many or not enough columns,
2190 the plugin will complain about that and no data will be submitted to the
2191 daemon.
2192
2193 The actual data type in the columns is not that important. The plugin will
2194 automatically cast the values to the right type if it know how to do that. So
2195 it should be able to handle integer an floating point types, as well as strings
2196 (if they include a number at the beginning).
2197
2198 There must be at least one B<ValuesFrom> option inside each B<Result> block.
2199
2200 =item B<MetadataFrom> [I<column0> I<column1> ...]
2201
2202 Names the columns whose content is used as metadata for the data sets
2203 that are dispatched to the daemon.
2204
2205 The actual data type in the columns is not that important. The plugin will
2206 automatically cast the values to the right type if it know how to do that. So
2207 it should be able to handle integer an floating point types, as well as strings
2208 (if they include a number at the beginning).
2209
2210 =back
2211
2212 =head3 B<Database> blocks
2213
2214 Database blocks define a connection to a database and which queries should be
2215 sent to that database. Since the used "dbi" library can handle a wide variety
2216 of databases, the configuration is very generic. If in doubt, refer to libdbi's
2217 documentationE<nbsp>- we stick as close to the terminology used there.
2218
2219 Each database needs a "name" as string argument in the starting tag of the
2220 block. This name will be used as "PluginInstance" in the values submitted to
2221 the daemon. Other than that, that name is not used.
2222
2223 =over 4
2224
2225 =item B<Interval> I<Interval>
2226
2227 Sets the interval (in seconds) in which the values will be collected from this
2228 database. By default the global B<Interval> setting will be used.
2229
2230 =item B<Driver> I<Driver>
2231
2232 Specifies the driver to use to connect to the database. In many cases those
2233 drivers are named after the database they can connect to, but this is not a
2234 technical necessity. These drivers are sometimes referred to as "DBD",
2235 B<D>ataB<B>ase B<D>river, and some distributions ship them in separate
2236 packages. Drivers for the "dbi" library are developed by the B<libdbi-drivers>
2237 project at L<http://libdbi-drivers.sourceforge.net/>.
2238
2239 You need to give the driver name as expected by the "dbi" library here. You
2240 should be able to find that in the documentation for each driver. If you
2241 mistype the driver name, the plugin will dump a list of all known driver names
2242 to the log.
2243
2244 =item B<DriverOption> I<Key> I<Value>
2245
2246 Sets driver-specific options. What option a driver supports can be found in the
2247 documentation for each driver, somewhere at
2248 L<http://libdbi-drivers.sourceforge.net/>. However, the options "host",
2249 "username", "password", and "dbname" seem to be deE<nbsp>facto standards.
2250
2251 DBDs can register two types of options: String options and numeric options. The
2252 plugin will use the C<dbi_conn_set_option> function when the configuration
2253 provides a string and the C<dbi_conn_require_option_numeric> function when the
2254 configuration provides a number. So these two lines will actually result in
2255 different calls being used:
2256
2257   DriverOption "Port" 1234      # numeric
2258   DriverOption "Port" "1234"    # string
2259
2260 Unfortunately, drivers are not too keen to report errors when an unknown option
2261 is passed to them, so invalid settings here may go unnoticed. This is not the
2262 plugin's fault, it will report errors if it gets them from the libraryE<nbsp>/
2263 the driver. If a driver complains about an option, the plugin will dump a
2264 complete list of all options understood by that driver to the log. There is no
2265 way to programmatically find out if an option expects a string or a numeric
2266 argument, so you will have to refer to the appropriate DBD's documentation to
2267 find this out. Sorry.
2268
2269 =item B<SelectDB> I<Database>
2270
2271 In some cases, the database name you connect with is not the database name you
2272 want to use for querying data. If this option is set, the plugin will "select"
2273 (switch to) that database after the connection is established.
2274
2275 =item B<Query> I<QueryName>
2276
2277 Associates the query named I<QueryName> with this database connection. The
2278 query needs to be defined I<before> this statement, i.E<nbsp>e. all query
2279 blocks you want to refer to must be placed above the database block you want to
2280 refer to them from.
2281
2282 =item B<Host> I<Hostname>
2283
2284 Sets the B<host> field of I<value lists> to I<Hostname> when dispatching
2285 values. Defaults to the global hostname setting.
2286
2287 =back
2288
2289 =head2 Plugin C<df>
2290
2291 =over 4
2292
2293 =item B<Device> I<Device>
2294
2295 Select partitions based on the devicename.
2296
2297 See F</"IGNORELISTS"> for details.
2298
2299 =item B<MountPoint> I<Directory>
2300
2301 Select partitions based on the mountpoint.
2302
2303 See F</"IGNORELISTS"> for details.
2304
2305 =item B<FSType> I<FSType>
2306
2307 Select partitions based on the filesystem type.
2308
2309 See F</"IGNORELISTS"> for details.
2310
2311 =item B<IgnoreSelected> B<true>|B<false>
2312
2313 Invert the selection: If set to true, all partitions B<except> the ones that
2314 match any one of the criteria are collected. By default only selected
2315 partitions are collected if a selection is made. If no selection is configured
2316 at all, B<all> partitions are selected.
2317
2318 =item B<ReportByDevice> B<true>|B<false>
2319
2320 Report using the device name rather than the mountpoint. i.e. with this I<false>,
2321 (the default), it will report a disk as "root", but with it I<true>, it will be
2322 "sda1" (or whichever).
2323
2324 =item B<ReportInodes> B<true>|B<false>
2325
2326 Enables or disables reporting of free, reserved and used inodes. Defaults to
2327 inode collection being disabled.
2328
2329 Enable this option if inodes are a scarce resource for you, usually because
2330 many small files are stored on the disk. This is a usual scenario for mail
2331 transfer agents and web caches.
2332
2333 =item B<ValuesAbsolute> B<true>|B<false>
2334
2335 Enables or disables reporting of free and used disk space in 1K-blocks.
2336 Defaults to B<true>.
2337
2338 =item B<ValuesPercentage> B<false>|B<true>
2339
2340 Enables or disables reporting of free and used disk space in percentage.
2341 Defaults to B<false>.
2342
2343 This is useful for deploying I<collectd> on the cloud, where machines with
2344 different disk size may exist. Then it is more practical to configure
2345 thresholds based on relative disk size.
2346
2347 =back
2348
2349 =head2 Plugin C<disk>
2350
2351 The C<disk> plugin collects information about the usage of physical disks and
2352 logical disks (partitions). Values collected are the number of octets written
2353 to and read from a disk or partition, the number of read/write operations
2354 issued to the disk and a rather complex "time" it took for these commands to be
2355 issued.
2356
2357 Using the following two options you can ignore some disks or configure the
2358 collection only of specific disks.
2359
2360 =over 4
2361
2362 =item B<Disk> I<Name>
2363
2364 Select the disk I<Name>. Whether it is collected or ignored depends on the
2365 B<IgnoreSelected> setting, see below. As with other plugins that use the
2366 daemon's ignorelist functionality, a string that starts and ends with a slash
2367 is interpreted as a regular expression. Examples:
2368
2369   Disk "sdd"
2370   Disk "/hda[34]/"
2371
2372 See F</"IGNORELISTS"> for details.
2373
2374 =item B<IgnoreSelected> B<true>|B<false>
2375
2376 Sets whether selected disks, i.E<nbsp>e. the ones matches by any of the B<Disk>
2377 statements, are ignored or if all other disks are ignored. The behavior
2378 (hopefully) is intuitive: If no B<Disk> option is configured, all disks are
2379 collected. If at least one B<Disk> option is given and no B<IgnoreSelected> or
2380 set to B<false>, B<only> matching disks will be collected. If B<IgnoreSelected>
2381 is set to B<true>, all disks are collected B<except> the ones matched.
2382
2383 =item B<UseBSDName> B<true>|B<false>
2384
2385 Whether to use the device's "BSD Name", on MacE<nbsp>OSE<nbsp>X, instead of the
2386 default major/minor numbers. Requires collectd to be built with Apple's
2387 IOKitLib support.
2388
2389 =item B<UdevNameAttr> I<Attribute>
2390
2391 Attempt to override disk instance name with the value of a specified udev
2392 attribute when built with B<libudev>.  If the attribute is not defined for the
2393 given device, the default name is used. Example:
2394
2395   UdevNameAttr "DM_NAME"
2396
2397 =back
2398
2399 =head2 Plugin C<dns>
2400
2401 =over 4
2402
2403 =item B<Interface> I<Interface>
2404
2405 The dns plugin uses B<libpcap> to capture dns traffic and analyzes it. This
2406 option sets the interface that should be used. If this option is not set, or
2407 set to "any", the plugin will try to get packets from B<all> interfaces. This
2408 may not work on certain platforms, such as MacE<nbsp>OSE<nbsp>X.
2409
2410 =item B<IgnoreSource> I<IP-address>
2411
2412 Ignore packets that originate from this address.
2413
2414 =item B<SelectNumericQueryTypes> B<true>|B<false>
2415
2416 Enabled by default, collects unknown (and thus presented as numeric only) query types.
2417
2418 =back
2419
2420 =head2 Plugin C<dpdkevents>
2421
2422 The I<dpdkevents plugin> collects events from DPDK such as link status of
2423 network ports and Keep Alive status of DPDK logical cores.
2424 In order to get Keep Alive events following requirements must be met:
2425 - DPDK >= 16.07
2426 - support for Keep Alive implemented in DPDK application. More details can
2427 be found here: http://dpdk.org/doc/guides/sample_app_ug/keep_alive.html
2428
2429 B<Synopsis:>
2430
2431  <Plugin "dpdkevents">
2432    <EAL>
2433      Coremask "0x1"
2434      MemoryChannels "4"
2435      FilePrefix "rte"
2436    </EAL>
2437    <Event "link_status">
2438      SendEventsOnUpdate true
2439      EnabledPortMask 0xffff
2440      PortName "interface1"
2441      PortName "interface2"
2442      SendNotification false
2443    </Event>
2444    <Event "keep_alive">
2445      SendEventsOnUpdate true
2446      LCoreMask "0xf"
2447      KeepAliveShmName "/dpdk_keepalive_shm_name"
2448      SendNotification false
2449    </Event>
2450  </Plugin>
2451
2452 B<Options:>
2453
2454
2455 =head3 The EAL block
2456
2457 =over 4
2458
2459 =item B<Coremask> I<Mask>
2460
2461 =item B<Memorychannels> I<Channels>
2462
2463 Number of memory channels per processor socket.
2464
2465 =item B<FilePrefix> I<File>
2466
2467 The prefix text used for hugepage filenames. The filename will be set to
2468 /var/run/.<prefix>_config where prefix is what is passed in by the user.
2469
2470 =back
2471
2472 =head3 The Event block
2473
2474 The B<Event> block defines configuration for specific event. It accepts a
2475 single argument which specifies the name of the event.
2476
2477 =head4 Link Status event
2478
2479 =over 4
2480
2481 =item B<SendEventOnUpdate> I<true|false>
2482
2483 If set to true link status value will be dispatched only when it is
2484 different from previously read value. This is an optional argument - default
2485 value is true.
2486
2487 =item B<EnabledPortMask> I<Mask>
2488
2489 A hexidecimal bit mask of the DPDK ports which should be enabled. A mask
2490 of 0x0 means that all ports will be disabled. A bitmask of all F's means
2491 that all ports will be enabled. This is an optional argument - by default
2492 all ports are enabled.
2493
2494 =item B<PortName> I<Name>
2495
2496 A string containing an optional name for the enabled DPDK ports. Each PortName
2497 option should contain only one port name; specify as many PortName options as
2498 desired. Default naming convention will be used if PortName is blank. If there
2499 are less PortName options than there are enabled ports, the default naming
2500 convention will be used for the additional ports.
2501
2502 =item B<SendNotification> I<true|false>
2503
2504 If set to true, link status notifications are sent, instead of link status
2505 being collected as a statistic. This is an optional argument - default
2506 value is false.
2507
2508 =back
2509
2510 =head4 Keep Alive event
2511
2512 =over 4
2513
2514 =item B<SendEventOnUpdate> I<true|false>
2515
2516 If set to true keep alive value will be dispatched only when it is
2517 different from previously read value. This is an optional argument - default
2518 value is true.
2519
2520 =item B<LCoreMask> I<Mask>
2521
2522 An hexadecimal bit mask of the logical cores to monitor keep alive state.
2523
2524 =item B<KeepAliveShmName> I<Name>
2525
2526 Shared memory name identifier that is used by secondary process to monitor
2527 the keep alive cores state.
2528
2529 =item B<SendNotification> I<true|false>
2530
2531 If set to true, keep alive notifications are sent, instead of keep alive
2532 information being collected as a statistic. This is an optional
2533 argument - default value is false.
2534
2535 =back
2536
2537 =head2 Plugin C<dpdkstat>
2538
2539 The I<dpdkstat plugin> collects information about DPDK interfaces using the
2540 extended NIC stats API in DPDK.
2541
2542 B<Synopsis:>
2543
2544  <Plugin "dpdkstat">
2545    <EAL>
2546      Coremask "0x4"
2547      MemoryChannels "4"
2548      FilePrefix "rte"
2549      SocketMemory "1024"
2550    </EAL>
2551    SharedMemObj "dpdk_collectd_stats_0"
2552    EnabledPortMask 0xffff
2553    PortName "interface1"
2554    PortName "interface2"
2555  </Plugin>
2556
2557 B<Options:>
2558
2559 =head3 The EAL block
2560
2561 =over 4
2562
2563 =item B<Coremask> I<Mask>
2564
2565 A string containing an hexadecimal bit mask of the cores to run on. Note that
2566 core numbering can change between platforms and should be determined beforehand.
2567
2568 =item B<Memorychannels> I<Channels>
2569
2570 A string containing a number of memory channels per processor socket.
2571
2572 =item B<FilePrefix> I<File>
2573
2574 The prefix text used for hugepage filenames. The filename will be set to
2575 /var/run/.<prefix>_config where prefix is what is passed in by the user.
2576
2577 =item B<SocketMemory> I<MB>
2578
2579 A string containing amount of Memory to allocate from hugepages on specific
2580 sockets in MB. This is an optional value.
2581
2582 =back
2583
2584 =over 3
2585
2586 =item B<SharedMemObj> I<Mask>
2587
2588 A string containing the name of the shared memory object that should be used to
2589 share stats from the DPDK secondary process to the collectd dpdkstat plugin.
2590 Defaults to dpdk_collectd_stats if no other value is configured.
2591
2592 =item B<EnabledPortMask> I<Mask>
2593
2594 A hexidecimal bit mask of the DPDK ports which should be enabled. A mask
2595 of 0x0 means that all ports will be disabled. A bitmask of all Fs means
2596 that all ports will be enabled. This is an optional argument - default
2597 is all ports enabled.
2598
2599 =item B<PortName> I<Name>
2600
2601 A string containing an optional name for the enabled DPDK ports. Each PortName
2602 option should contain only one port name; specify as many PortName options as
2603 desired. Default naming convention will be used if PortName is blank. If there
2604 are less PortName options than there are enabled ports, the default naming
2605 convention will be used for the additional ports.
2606
2607 =back
2608
2609 =head2 Plugin C<email>
2610
2611 =over 4
2612
2613 =item B<SocketFile> I<Path>
2614
2615 Sets the socket-file which is to be created.
2616
2617 =item B<SocketGroup> I<Group>
2618
2619 If running as root change the group of the UNIX-socket after it has been
2620 created. Defaults to B<collectd>.
2621
2622 =item B<SocketPerms> I<Permissions>
2623
2624 Change the file permissions of the UNIX-socket after it has been created. The
2625 permissions must be given as a numeric, octal value as you would pass to
2626 L<chmod(1)>. Defaults to B<0770>.
2627
2628 =item B<MaxConns> I<Number>
2629
2630 Sets the maximum number of connections that can be handled in parallel. Since
2631 this many threads will be started immediately setting this to a very high
2632 value will waste valuable resources. Defaults to B<5> and will be forced to be
2633 at most B<16384> to prevent typos and dumb mistakes.
2634
2635 =back
2636
2637 =head2 Plugin C<ethstat>
2638
2639 The I<ethstat plugin> collects information about network interface cards (NICs)
2640 by talking directly with the underlying kernel driver using L<ioctl(2)>.
2641
2642 B<Synopsis:>
2643
2644  <Plugin "ethstat">
2645    Interface "eth0"
2646    Map "rx_csum_offload_errors" "if_rx_errors" "checksum_offload"
2647    Map "multicast" "if_multicast"
2648  </Plugin>
2649
2650 B<Options:>
2651
2652 =over 4
2653
2654 =item B<Interface> I<Name>
2655
2656 Collect statistical information about interface I<Name>.
2657
2658 =item B<Map> I<Name> I<Type> [I<TypeInstance>]
2659
2660 By default, the plugin will submit values as type C<derive> and I<type
2661 instance> set to I<Name>, the name of the metric as reported by the driver. If
2662 an appropriate B<Map> option exists, the given I<Type> and, optionally,
2663 I<TypeInstance> will be used.
2664
2665 =item B<MappedOnly> B<true>|B<false>
2666
2667 When set to B<true>, only metrics that can be mapped to a I<type> will be
2668 collected, all other metrics will be ignored. Defaults to B<false>.
2669
2670 =back
2671
2672 =head2 Plugin C<exec>
2673
2674 Please make sure to read L<collectd-exec(5)> before using this plugin. It
2675 contains valuable information on when the executable is executed and the
2676 output that is expected from it.
2677
2678 =over 4
2679
2680 =item B<Exec> I<User>[:[I<Group>]] I<Executable> [I<E<lt>argE<gt>> [I<E<lt>argE<gt>> ...]]
2681
2682 =item B<NotificationExec> I<User>[:[I<Group>]] I<Executable> [I<E<lt>argE<gt>> [I<E<lt>argE<gt>> ...]]
2683
2684 Execute the executable I<Executable> as user I<User>. If the user name is
2685 followed by a colon and a group name, the effective group is set to that group.
2686 The real group and saved-set group will be set to the default group of that
2687 user. If no group is given the effective group ID will be the same as the real
2688 group ID.
2689
2690 Please note that in order to change the user and/or group the daemon needs
2691 superuser privileges. If the daemon is run as an unprivileged user you must
2692 specify the same user/group here. If the daemon is run with superuser
2693 privileges, you must supply a non-root user here.
2694
2695 The executable may be followed by optional arguments that are passed to the
2696 program. Please note that due to the configuration parsing numbers and boolean
2697 values may be changed. If you want to be absolutely sure that something is
2698 passed as-is please enclose it in quotes.
2699
2700 The B<Exec> and B<NotificationExec> statements change the semantics of the
2701 programs executed, i.E<nbsp>e. the data passed to them and the response
2702 expected from them. This is documented in great detail in L<collectd-exec(5)>.
2703
2704 =back
2705
2706 =head2 Plugin C<fhcount>
2707
2708 The C<fhcount> plugin provides statistics about used, unused and total number of
2709 file handles on Linux.
2710
2711 The I<fhcount plugin> provides the following configuration options:
2712
2713 =over 4
2714
2715 =item B<ValuesAbsolute> B<true>|B<false>
2716
2717 Enables or disables reporting of file handles usage in absolute numbers,
2718 e.g. file handles used. Defaults to B<true>.
2719
2720 =item B<ValuesPercentage> B<false>|B<true>
2721
2722 Enables or disables reporting of file handles usage in percentages, e.g.
2723 percent of file handles used. Defaults to B<false>.
2724
2725 =back
2726
2727 =head2 Plugin C<filecount>
2728
2729 The C<filecount> plugin counts the number of files in a certain directory (and
2730 its subdirectories) and their combined size. The configuration is very straight
2731 forward:
2732
2733   <Plugin "filecount">
2734     <Directory "/var/qmail/queue/mess">
2735       Instance "qmail-message"
2736     </Directory>
2737     <Directory "/var/qmail/queue/todo">
2738       Instance "qmail-todo"
2739     </Directory>
2740     <Directory "/var/lib/php5">
2741       Instance "php5-sessions"
2742       Name "sess_*"
2743     </Directory>
2744   </Plugin>
2745
2746 The example above counts the number of files in QMail's queue directories and
2747 the number of PHP5 sessions. Jfiy: The "todo" queue holds the messages that
2748 QMail has not yet looked at, the "message" queue holds the messages that were
2749 classified into "local" and "remote".
2750
2751 As you can see, the configuration consists of one or more C<Directory> blocks,
2752 each of which specifies a directory in which to count the files. Within those
2753 blocks, the following options are recognized:
2754
2755 =over 4
2756
2757 =item B<Plugin> I<Plugin>
2758
2759 Use I<Plugin> as the plugin name when submitting values.
2760 Defaults to B<filecount>.
2761
2762 =item B<Instance> I<Instance>
2763
2764 Sets the plugin instance to I<Instance>. If not given, the instance is set to
2765 the directory name with all slashes replaced by underscores and all leading
2766 underscores removed. Empty value is allowed.
2767
2768 =item B<Name> I<Pattern>
2769
2770 Only count files that match I<Pattern>, where I<Pattern> is a shell-like
2771 wildcard as understood by L<fnmatch(3)>. Only the B<filename> is checked
2772 against the pattern, not the entire path. In case this makes it easier for you:
2773 This option has been named after the B<-name> parameter to L<find(1)>.
2774
2775 =item B<MTime> I<Age>
2776
2777 Count only files of a specific age: If I<Age> is greater than zero, only files
2778 that haven't been touched in the last I<Age> seconds are counted. If I<Age> is
2779 a negative number, this is inversed. For example, if B<-60> is specified, only
2780 files that have been modified in the last minute will be counted.
2781
2782 The number can also be followed by a "multiplier" to easily specify a larger
2783 timespan. When given in this notation, the argument must in quoted, i.E<nbsp>e.
2784 must be passed as string. So the B<-60> could also be written as B<"-1m"> (one
2785 minute). Valid multipliers are C<s> (second), C<m> (minute), C<h> (hour), C<d>
2786 (day), C<w> (week), and C<y> (year). There is no "month" multiplier. You can
2787 also specify fractional numbers, e.E<nbsp>g. B<"0.5d"> is identical to
2788 B<"12h">.
2789
2790 =item B<Size> I<Size>
2791
2792 Count only files of a specific size. When I<Size> is a positive number, only
2793 files that are at least this big are counted. If I<Size> is a negative number,
2794 this is inversed, i.E<nbsp>e. only files smaller than the absolute value of
2795 I<Size> are counted.
2796
2797 As with the B<MTime> option, a "multiplier" may be added. For a detailed
2798 description see above. Valid multipliers here are C<b> (byte), C<k> (kilobyte),
2799 C<m> (megabyte), C<g> (gigabyte), C<t> (terabyte), and C<p> (petabyte). Please
2800 note that there are 1000 bytes in a kilobyte, not 1024.
2801
2802 =item B<Recursive> I<true>|I<false>
2803
2804 Controls whether or not to recurse into subdirectories. Enabled by default.
2805
2806 =item B<IncludeHidden> I<true>|I<false>
2807
2808 Controls whether or not to include "hidden" files and directories in the count.
2809 "Hidden" files and directories are those, whose name begins with a dot.
2810 Defaults to I<false>, i.e. by default hidden files and directories are ignored.
2811
2812 =item B<FilesSizeType> I<Type>
2813
2814 Sets the type used to dispatch files combined size. Empty value ("") disables
2815 reporting. Defaults to B<bytes>.
2816
2817 =item B<FilesCountType> I<Type>
2818
2819 Sets the type used to dispatch number of files. Empty value ("") disables
2820 reporting. Defaults to B<files>.
2821
2822 =item B<TypeInstance> I<Instance>
2823
2824 Sets the I<type instance> used to dispatch values. Defaults to an empty string
2825 (no plugin instance).
2826
2827 =back
2828
2829 =head2 Plugin C<GenericJMX>
2830
2831 The I<GenericJMX plugin> is written in I<Java> and therefore documented in
2832 L<collectd-java(5)>.
2833
2834 =head2 Plugin C<gmond>
2835
2836 The I<gmond> plugin received the multicast traffic sent by B<gmond>, the
2837 statistics collection daemon of Ganglia. Mappings for the standard "metrics"
2838 are built-in, custom mappings may be added via B<Metric> blocks, see below.
2839
2840 Synopsis:
2841
2842  <Plugin "gmond">
2843    MCReceiveFrom "239.2.11.71" "8649"
2844    <Metric "swap_total">
2845      Type "swap"
2846      TypeInstance "total"
2847      DataSource "value"
2848    </Metric>
2849    <Metric "swap_free">
2850      Type "swap"
2851      TypeInstance "free"
2852      DataSource "value"
2853    </Metric>
2854  </Plugin>
2855
2856 The following metrics are built-in:
2857
2858 =over 4
2859
2860 =item *
2861
2862 load_one, load_five, load_fifteen
2863
2864 =item *
2865
2866 cpu_user, cpu_system, cpu_idle, cpu_nice, cpu_wio
2867
2868 =item *
2869
2870 mem_free, mem_shared, mem_buffers, mem_cached, mem_total
2871
2872 =item *
2873
2874 bytes_in, bytes_out
2875
2876 =item *
2877
2878 pkts_in, pkts_out
2879
2880 =back
2881
2882 Available configuration options:
2883
2884 =over 4
2885
2886 =item B<MCReceiveFrom> I<MCGroup> [I<Port>]
2887
2888 Sets sets the multicast group and UDP port to which to subscribe.
2889
2890 Default: B<239.2.11.71>E<nbsp>/E<nbsp>B<8649>
2891
2892 =item E<lt>B<Metric> I<Name>E<gt>
2893
2894 These blocks add a new metric conversion to the internal table. I<Name>, the
2895 string argument to the B<Metric> block, is the metric name as used by Ganglia.
2896
2897 =over 4
2898
2899 =item B<Type> I<Type>
2900
2901 Type to map this metric to. Required.
2902
2903 =item B<TypeInstance> I<Instance>
2904
2905 Type-instance to use. Optional.
2906
2907 =item B<DataSource> I<Name>
2908
2909 Data source to map this metric to. If the configured type has exactly one data
2910 source, this is optional. Otherwise the option is required.
2911
2912 =back
2913
2914 =back
2915
2916 =head2 Plugin C<gps>
2917
2918 The C<gps plugin> connects to gpsd on the host machine.
2919 The host, port, timeout and pause are configurable.
2920
2921 This is useful if you run an NTP server using a GPS for source and you want to
2922 monitor it.
2923
2924 Mind your GPS must send $--GSA for having the data reported!
2925
2926 The following elements are collected:
2927
2928 =over 4
2929
2930 =item B<satellites>
2931
2932 Number of satellites used for fix (type instance "used") and in view (type
2933 instance "visible"). 0 means no GPS satellites are visible.
2934
2935 =item B<dilution_of_precision>
2936
2937 Vertical and horizontal dilution (type instance "horizontal" or "vertical").
2938 It should be between 0 and 3.
2939 Look at the documentation of your GPS to know more.
2940
2941 =back
2942
2943 Synopsis:
2944
2945  LoadPlugin gps
2946  <Plugin "gps">
2947    # Connect to localhost on gpsd regular port:
2948    Host "127.0.0.1"
2949    Port "2947"
2950    # 15 ms timeout
2951    Timeout 0.015
2952    # PauseConnect of 5 sec. between connection attempts.
2953    PauseConnect 5
2954  </Plugin>
2955
2956 Available configuration options:
2957
2958 =over 4
2959
2960 =item B<Host> I<Host>
2961
2962 The host on which gpsd daemon runs. Defaults to B<localhost>.
2963
2964 =item B<Port> I<Port>
2965
2966 Port to connect to gpsd on the host machine. Defaults to B<2947>.
2967
2968 =item B<Timeout> I<Seconds>
2969
2970 Timeout in seconds (default 0.015 sec).
2971
2972 The GPS data stream is fetch by the plugin form the daemon.
2973 It waits for data to be available, if none arrives it times out
2974 and loop for another reading.
2975 Mind to put a low value gpsd expects value in the micro-seconds area
2976 (recommended is 500 us) since the waiting function is blocking.
2977 Value must be between 500 us and 5 sec., if outside that range the
2978 default value is applied.
2979
2980 This only applies from gpsd release-2.95.
2981
2982 =item B<PauseConnect> I<Seconds>
2983
2984 Pause to apply between attempts of connection to gpsd in seconds (default 5 sec).
2985
2986 =back
2987
2988 =head2 Plugin C<grpc>
2989
2990 The I<grpc> plugin provides an RPC interface to submit values to or query
2991 values from collectd based on the open source gRPC framework. It exposes an
2992 end-point for dispatching values to the daemon.
2993
2994 The B<gRPC> homepage can be found at L<https://grpc.io/>.
2995
2996 =over 4
2997
2998 =item B<Server> I<Host> I<Port>
2999
3000 The B<Server> statement sets the address of a server to which to send metrics
3001 via the C<DispatchValues> function.
3002
3003 The argument I<Host> may be a hostname, an IPv4 address, or an IPv6 address.
3004
3005 Optionally, B<Server> may be specified as a configuration block which supports
3006 the following options:
3007
3008 =over 4
3009
3010 =item B<EnableSSL> B<false>|B<true>
3011
3012 Whether to require SSL for outgoing connections. Default: false.
3013
3014 =item B<SSLCACertificateFile> I<Filename>
3015
3016 =item B<SSLCertificateFile> I<Filename>
3017
3018 =item B<SSLCertificateKeyFile> I<Filename>
3019
3020 Filenames specifying SSL certificate and key material to be used with SSL
3021 connections.
3022
3023 =back
3024
3025 =item B<Listen> I<Host> I<Port>
3026
3027 The B<Listen> statement sets the network address to bind to. When multiple
3028 statements are specified, the daemon will bind to all of them. If none are
3029 specified, it defaults to B<0.0.0.0:50051>.
3030
3031 The argument I<Host> may be a hostname, an IPv4 address, or an IPv6 address.
3032
3033 Optionally, B<Listen> may be specified as a configuration block which
3034 supports the following options:
3035
3036 =over 4
3037
3038 =item B<EnableSSL> I<true>|I<false>
3039
3040 Whether to enable SSL for incoming connections. Default: false.
3041
3042 =item B<SSLCACertificateFile> I<Filename>
3043
3044 =item B<SSLCertificateFile> I<Filename>
3045
3046 =item B<SSLCertificateKeyFile> I<Filename>
3047
3048 Filenames specifying SSL certificate and key material to be used with SSL
3049 connections.
3050
3051 =back
3052
3053 =back
3054
3055 =head2 Plugin C<hddtemp>
3056
3057 To get values from B<hddtemp> collectd connects to B<localhost> (127.0.0.1),
3058 port B<7634/tcp>. The B<Host> and B<Port> options can be used to change these
3059 default values, see below. C<hddtemp> has to be running to work correctly. If
3060 C<hddtemp> is not running timeouts may appear which may interfere with other
3061 statistics..
3062
3063 The B<hddtemp> homepage can be found at
3064 L<http://www.guzu.net/linux/hddtemp.php>.
3065
3066 =over 4
3067
3068 =item B<Host> I<Hostname>
3069
3070 Hostname to connect to. Defaults to B<127.0.0.1>.
3071
3072 =item B<Port> I<Port>
3073
3074 TCP-Port to connect to. Defaults to B<7634>.
3075
3076 =back
3077
3078 =head2 Plugin C<hugepages>
3079
3080 To collect B<hugepages> information, collectd reads directories
3081 "/sys/devices/system/node/*/hugepages" and
3082 "/sys/kernel/mm/hugepages".
3083 Reading of these directories can be disabled by the following
3084 options (default is enabled).
3085
3086 =over 4
3087
3088 =item B<ReportPerNodeHP> B<true>|B<false>
3089
3090 If enabled, information will be collected from the hugepage
3091 counters in "/sys/devices/system/node/*/hugepages".
3092 This is used to check the per-node hugepage statistics on
3093 a NUMA system.
3094
3095 =item B<ReportRootHP> B<true>|B<false>
3096
3097 If enabled, information will be collected from the hugepage
3098 counters in "/sys/kernel/mm/hugepages".
3099 This can be used on both NUMA and non-NUMA systems to check
3100 the overall hugepage statistics.
3101
3102 =item B<ValuesPages> B<true>|B<false>
3103
3104 Whether to report hugepages metrics in number of pages.
3105 Defaults to B<true>.
3106
3107 =item B<ValuesBytes> B<false>|B<true>
3108
3109 Whether to report hugepages metrics in bytes.
3110 Defaults to B<false>.
3111
3112 =item B<ValuesPercentage> B<false>|B<true>
3113
3114 Whether to report hugepages metrics as percentage.
3115 Defaults to B<false>.
3116
3117 =back
3118
3119 =head2 Plugin C<intel_pmu>
3120
3121 The I<intel_pmu> plugin collects performance counters data on Intel CPUs using
3122 Linux perf interface. All events are reported on a per core basis.
3123
3124 B<Synopsis:>
3125
3126   <Plugin intel_pmu>
3127     ReportHardwareCacheEvents true
3128     ReportKernelPMUEvents true
3129     ReportSoftwareEvents true
3130     EventList "/var/cache/pmu/GenuineIntel-6-2D-core.json"
3131     HardwareEvents "L2_RQSTS.CODE_RD_HIT,L2_RQSTS.CODE_RD_MISS" "L2_RQSTS.ALL_CODE_RD"
3132   </Plugin>
3133
3134 B<Options:>
3135
3136 =over 4
3137
3138 =item B<ReportHardwareCacheEvents> B<false>|B<true>
3139
3140 Enable or disable measuring of hardware CPU cache events:
3141   - L1-dcache-loads
3142   - L1-dcache-load-misses
3143   - L1-dcache-stores
3144   - L1-dcache-store-misses
3145   - L1-dcache-prefetches
3146   - L1-dcache-prefetch-misses
3147   - L1-icache-loads
3148   - L1-icache-load-misses
3149   - L1-icache-prefetches
3150   - L1-icache-prefetch-misses
3151   - LLC-loads
3152   - LLC-load-misses
3153   - LLC-stores
3154   - LLC-store-misses
3155   - LLC-prefetches
3156   - LLC-prefetch-misses
3157   - dTLB-loads
3158   - dTLB-load-misses
3159   - dTLB-stores
3160   - dTLB-store-misses
3161   - dTLB-prefetches
3162   - dTLB-prefetch-misses
3163   - iTLB-loads
3164   - iTLB-load-misses
3165   - branch-loads
3166   - branch-load-misses
3167
3168 =item B<ReportKernelPMUEvents> B<false>|B<true>
3169
3170 Enable or disable measuring of the following events:
3171   - cpu-cycles
3172   - instructions
3173   - cache-references
3174   - cache-misses
3175   - branches
3176   - branch-misses
3177   - bus-cycles
3178
3179 =item B<ReportSoftwareEvents> B<false>|B<true>
3180
3181 Enable or disable measuring of software events provided by kernel:
3182   - cpu-clock
3183   - task-clock
3184   - context-switches
3185   - cpu-migrations
3186   - page-faults
3187   - minor-faults
3188   - major-faults
3189   - alignment-faults
3190   - emulation-faults
3191
3192 =item B<EventList> I<filename>
3193
3194 JSON performance counter event list file name. To be able to monitor all Intel
3195 CPU specific events JSON event list file should be downloaded. Use the pmu-tools
3196 event_download.py script to download event list for current CPU.
3197
3198 =item B<HardwareEvents> I<events>
3199
3200 This field is a list of event names or groups of comma separated event names.
3201 This option requires B<EventList> option to be configured.
3202
3203 =back
3204
3205 =head2 Plugin C<intel_rdt>
3206
3207 The I<intel_rdt> plugin collects information provided by monitoring features of
3208 Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring
3209 Technology (CMT), Memory Bandwidth Monitoring (MBM). These features provide
3210 information about utilization of shared resources. CMT monitors last level cache
3211 occupancy (LLC). MBM supports two types of events reporting local and remote
3212 memory bandwidth. Local memory bandwidth (MBL) reports the bandwidth of
3213 accessing memory associated with the local socket. Remote memory bandwidth (MBR)
3214 reports the bandwidth of accessing the remote socket. Also this technology
3215 allows to monitor instructions per clock (IPC).
3216 Monitor events are hardware dependant. Monitoring capabilities are detected on
3217 plugin initialization and only supported events are monitored.
3218
3219 B<Note:> I<intel_rdt> plugin is using model-specific registers (MSRs), which
3220 require an additional capability to be enabled if collectd is run as a service.
3221 Please refer to I<contrib/systemd.collectd.service> file for more details.
3222
3223 B<Synopsis:>
3224
3225   <Plugin "intel_rdt">
3226     Cores "0-2" "3,4,6" "8-10,15"
3227   </Plugin>
3228
3229 B<Options:>
3230
3231 =over 4
3232
3233 =item B<Interval> I<seconds>
3234
3235 The interval within which to retrieve statistics on monitored events in seconds.
3236 For milliseconds divide the time by 1000 for example if the desired interval
3237 is 50ms, set interval to 0.05. Due to limited capacity of counters it is not
3238 recommended to set interval higher than 1 sec.
3239
3240 =item B<Cores> I<cores groups>
3241
3242 All events are reported on a per core basis. Monitoring of the events can be
3243 configured for group of cores (aggregated statistics). This field defines groups
3244 of cores on which to monitor supported events. The field is represented as list
3245 of strings with core group values. Each string represents a list of cores in a
3246 group. Allowed formats are:
3247     0,1,2,3
3248     0-10,20-18
3249     1,3,5-8,10,0x10-12
3250
3251 If an empty string is provided as value for this field default cores
3252 configuration is applied - a separate group is created for each core.
3253
3254 =back
3255
3256 B<Note:> By default global interval is used to retrieve statistics on monitored
3257 events. To configure a plugin specific interval use B<Interval> option of the
3258 intel_rdt <LoadPlugin> block. For milliseconds divide the time by 1000 for
3259 example if the desired interval is 50ms, set interval to 0.05.
3260 Due to limited capacity of counters it is not recommended to set interval higher
3261 than 1 sec.
3262
3263 =head2 Plugin C<interface>
3264
3265 =over 4
3266
3267 =item B<Interface> I<Interface>
3268
3269 Select this interface. By default these interfaces will then be collected. For
3270 a more detailed description see B<IgnoreSelected> below.
3271
3272 See F</"IGNORELISTS"> for details.
3273
3274 =item B<IgnoreSelected> I<true>|I<false>
3275
3276 If no configuration is given, the B<interface>-plugin will collect data from
3277 all interfaces. This may not be practical, especially for loopback- and
3278 similar interfaces. Thus, you can use the B<Interface>-option to pick the
3279 interfaces you're interested in. Sometimes, however, it's easier/preferred
3280 to collect all interfaces I<except> a few ones. This option enables you to
3281 do that: By setting B<IgnoreSelected> to I<true> the effect of
3282 B<Interface> is inverted: All selected interfaces are ignored and all
3283 other interfaces are collected.
3284
3285 It is possible to use regular expressions to match interface names, if the
3286 name is surrounded by I</.../> and collectd was compiled with support for
3287 regexps. This is useful if there's a need to collect (or ignore) data
3288 for a group of interfaces that are similarly named, without the need to
3289 explicitly list all of them (especially useful if the list is dynamic).
3290 Example:
3291
3292  Interface "lo"
3293  Interface "/^veth/"
3294  Interface "/^tun[0-9]+/"
3295  IgnoreSelected "true"
3296
3297 This will ignore the loopback interface, all interfaces with names starting
3298 with I<veth> and all interfaces with names starting with I<tun> followed by
3299 at least one digit.
3300
3301 =item B<ReportInactive> I<true>|I<false>
3302
3303 When set to I<false>, only interfaces with non-zero traffic will be
3304 reported. Note that the check is done by looking into whether a
3305 package was sent at any time from boot and the corresponding counter
3306 is non-zero. So, if the interface has been sending data in the past
3307 since boot, but not during the reported time-interval, it will still
3308 be reported.
3309
3310 The default value is I<true> and results in collection of the data
3311 from all interfaces that are selected by B<Interface> and
3312 B<IgnoreSelected> options.
3313
3314 =item B<UniqueName> I<true>|I<false>
3315
3316 Interface name is not unique on Solaris (KSTAT), interface name is unique
3317 only within a module/instance. Following tuple is considered unique:
3318    (ks_module, ks_instance, ks_name)
3319 If this option is set to true, interface name contains above three fields
3320 separated by an underscore. For more info on KSTAT, visit
3321 L<http://docs.oracle.com/cd/E23824_01/html/821-1468/kstat-3kstat.html#REFMAN3Ekstat-3kstat>
3322
3323 This option is only available on Solaris.
3324
3325 =back
3326
3327 =head2 Plugin C<ipmi>
3328
3329 =over 4
3330
3331 =item B<Sensor> I<Sensor>
3332
3333 Selects sensors to collect or to ignore, depending on B<IgnoreSelected>.
3334
3335 See F</"IGNORELISTS"> for details.
3336
3337 =item B<IgnoreSelected> I<true>|I<false>
3338
3339 If no configuration if given, the B<ipmi> plugin will collect data from all
3340 sensors found of type "temperature", "voltage", "current" and "fanspeed".
3341 This option enables you to do that: By setting B<IgnoreSelected> to I<true>
3342 the effect of B<Sensor> is inverted: All selected sensors are ignored and
3343 all other sensors are collected.
3344
3345 =item B<NotifySensorAdd> I<true>|I<false>
3346
3347 If a sensor appears after initialization time of a minute a notification
3348 is sent.
3349
3350 =item B<NotifySensorRemove> I<true>|I<false>
3351
3352 If a sensor disappears a notification is sent.
3353
3354 =item B<NotifySensorNotPresent> I<true>|I<false>
3355
3356 If you have for example dual power supply and one of them is (un)plugged then
3357 a notification is sent.
3358
3359 =back
3360
3361 =head2 Plugin C<iptables>
3362
3363 =over 4
3364
3365 =item B<Chain> I<Table> I<Chain> [I<Comment|Number> [I<Name>]]
3366
3367 =item B<Chain6> I<Table> I<Chain> [I<Comment|Number> [I<Name>]]
3368
3369 Select the iptables/ip6tables filter rules to count packets and bytes from.
3370
3371 If only I<Table> and I<Chain> are given, this plugin will collect the counters
3372 of all rules which have a comment-match. The comment is then used as
3373 type-instance.
3374
3375 If I<Comment> or I<Number> is given, only the rule with the matching comment or
3376 the I<n>th rule will be collected. Again, the comment (or the number) will be
3377 used as the type-instance.
3378
3379 If I<Name> is supplied, it will be used as the type-instance instead of the
3380 comment or the number.
3381
3382 =back
3383
3384 =head2 Plugin C<irq>
3385
3386 =over 4
3387
3388 =item B<Irq> I<Irq>
3389
3390 Select this irq. By default these irqs will then be collected. For a more
3391 detailed description see B<IgnoreSelected> below.
3392
3393 See F</"IGNORELISTS"> for details.
3394
3395 =item B<IgnoreSelected> I<true>|I<false>
3396
3397 If no configuration if given, the B<irq>-plugin will collect data from all
3398 irqs. This may not be practical, especially if no interrupts happen. Thus, you
3399 can use the B<Irq>-option to pick the interrupt you're interested in.
3400 Sometimes, however, it's easier/preferred to collect all interrupts I<except> a
3401 few ones. This option enables you to do that: By setting B<IgnoreSelected> to
3402 I<true> the effect of B<Irq> is inverted: All selected interrupts are ignored
3403 and all other interrupts are collected.
3404
3405 =back
3406
3407 =head2 Plugin C<java>
3408
3409 The I<Java> plugin makes it possible to write extensions for collectd in Java.
3410 This section only discusses the syntax and semantic of the configuration
3411 options. For more in-depth information on the I<Java> plugin, please read
3412 L<collectd-java(5)>.
3413
3414 Synopsis:
3415
3416  <Plugin "java">
3417    JVMArg "-verbose:jni"
3418    JVMArg "-Djava.class.path=/opt/collectd/lib/collectd/bindings/java"
3419    LoadPlugin "org.collectd.java.Foobar"
3420    <Plugin "org.collectd.java.Foobar">
3421      # To be parsed by the plugin
3422    </Plugin>
3423  </Plugin>
3424
3425 Available configuration options:
3426
3427 =over 4
3428
3429 =item B<JVMArg> I<Argument>
3430
3431 Argument that is to be passed to the I<Java Virtual Machine> (JVM). This works
3432 exactly the way the arguments to the I<java> binary on the command line work.
3433 Execute C<javaE<nbsp>--help> for details.
3434
3435 Please note that B<all> these options must appear B<before> (i.E<nbsp>e. above)
3436 any other options! When another option is found, the JVM will be started and
3437 later options will have to be ignored!
3438
3439 =item B<LoadPlugin> I<JavaClass>
3440
3441 Instantiates a new I<JavaClass> object. The constructor of this object very
3442 likely then registers one or more callback methods with the server.
3443
3444 See L<collectd-java(5)> for details.
3445
3446 When the first such option is found, the virtual machine (JVM) is created. This
3447 means that all B<JVMArg> options must appear before (i.E<nbsp>e. above) all
3448 B<LoadPlugin> options!
3449
3450 =item B<Plugin> I<Name>
3451
3452 The entire block is passed to the Java plugin as an
3453 I<org.collectd.api.OConfigItem> object.
3454
3455 For this to work, the plugin has to register a configuration callback first,
3456 see L<collectd-java(5)/"config callback">. This means, that the B<Plugin> block
3457 must appear after the appropriate B<LoadPlugin> block. Also note, that I<Name>
3458 depends on the (Java) plugin registering the callback and is completely
3459 independent from the I<JavaClass> argument passed to B<LoadPlugin>.
3460
3461 =back
3462
3463 =head2 Plugin C<load>
3464
3465 The I<Load plugin> collects the system load. These numbers give a rough overview
3466 over the utilization of a machine. The system load is defined as the number of
3467 runnable tasks in the run-queue and is provided by many operating systems as a
3468 one, five or fifteen minute average.
3469
3470 The following configuration options are available:
3471
3472 =over 4
3473
3474 =item B<ReportRelative> B<false>|B<true>
3475
3476 When enabled, system load divided by number of available CPU cores is reported
3477 for intervals 1 min, 5 min and 15 min. Defaults to false.
3478
3479 =back
3480
3481
3482 =head2 Plugin C<logfile>
3483
3484 =over 4
3485
3486 =item B<LogLevel> B<debug|info|notice|warning|err>
3487
3488 Sets the log-level. If, for example, set to B<notice>, then all events with
3489 severity B<notice>, B<warning>, or B<err> will be written to the logfile.
3490
3491 Please note that B<debug> is only available if collectd has been compiled with
3492 debugging support.
3493
3494 =item B<File> I<File>
3495
3496 Sets the file to write log messages to. The special strings B<stdout> and
3497 B<stderr> can be used to write to the standard output and standard error
3498 channels, respectively. This, of course, only makes much sense when I<collectd>
3499 is running in foreground- or non-daemon-mode.
3500
3501 =item B<Timestamp> B<true>|B<false>
3502
3503 Prefix all lines printed by the current time. Defaults to B<true>.
3504
3505 =item B<PrintSeverity> B<true>|B<false>
3506
3507 When enabled, all lines are prefixed by the severity of the log message, for
3508 example "warning". Defaults to B<false>.
3509
3510 =back
3511
3512 B<Note>: There is no need to notify the daemon after moving or removing the
3513 log file (e.E<nbsp>g. when rotating the logs). The plugin reopens the file
3514 for each line it writes.
3515
3516 =head2 Plugin C<log_logstash>
3517
3518 The I<log logstash plugin> behaves like the logfile plugin but formats
3519 messages as JSON events for logstash to parse and input.
3520
3521 =over 4
3522
3523 =item B<LogLevel> B<debug|info|notice|warning|err>
3524
3525 Sets the log-level. If, for example, set to B<notice>, then all events with
3526 severity B<notice>, B<warning>, or B<err> will be written to the logfile.
3527
3528 Please note that B<debug> is only available if collectd has been compiled with
3529 debugging support.
3530
3531 =item B<File> I<File>
3532
3533 Sets the file to write log messages to. The special strings B<stdout> and
3534 B<stderr> can be used to write to the standard output and standard error
3535 channels, respectively. This, of course, only makes much sense when I<collectd>
3536 is running in foreground- or non-daemon-mode.
3537
3538 =back
3539
3540 B<Note>: There is no need to notify the daemon after moving or removing the
3541 log file (e.E<nbsp>g. when rotating the logs). The plugin reopens the file
3542 for each line it writes.
3543
3544 =head2 Plugin C<lpar>
3545
3546 The I<LPAR plugin> reads CPU statistics of I<Logical Partitions>, a
3547 virtualization technique for IBM POWER processors. It takes into account CPU
3548 time stolen from or donated to a partition, in addition to the usual user,
3549 system, I/O statistics.
3550
3551 The following configuration options are available:
3552
3553 =over 4
3554
3555 =item B<CpuPoolStats> B<false>|B<true>
3556
3557 When enabled, statistics about the processor pool are read, too. The partition
3558 needs to have pool authority in order to be able to acquire this information.
3559 Defaults to false.
3560
3561 =item B<ReportBySerial> B<false>|B<true>
3562
3563 If enabled, the serial of the physical machine the partition is currently
3564 running on is reported as I<hostname> and the logical hostname of the machine
3565 is reported in the I<plugin instance>. Otherwise, the logical hostname will be
3566 used (just like other plugins) and the I<plugin instance> will be empty.
3567 Defaults to false.
3568
3569 =back
3570
3571 =head2 Plugin C<lua>
3572
3573 This plugin embeds a Lua interpreter into collectd and provides an interface
3574 to collectd's plugin system. See L<collectd-lua(5)> for its documentation.
3575
3576
3577 =head2 Plugin C<mbmon>
3578
3579 The C<mbmon plugin> uses mbmon to retrieve temperature, voltage, etc.
3580
3581 Be default collectd connects to B<localhost> (127.0.0.1), port B<411/tcp>. The
3582 B<Host> and B<Port> options can be used to change these values, see below.
3583 C<mbmon> has to be running to work correctly. If C<mbmon> is not running
3584 timeouts may appear which may interfere with other statistics..
3585
3586 C<mbmon> must be run with the -r option ("print TAG and Value format");
3587 Debian's F</etc/init.d/mbmon> script already does this, other people
3588 will need to ensure that this is the case.
3589
3590 =over 4
3591
3592 =item B<Host> I<Hostname>
3593
3594 Hostname to connect to. Defaults to B<127.0.0.1>.
3595
3596 =item B<Port> I<Port>
3597
3598 TCP-Port to connect to. Defaults to B<411>.
3599
3600 =back
3601
3602 =head2 Plugin C<mcelog>
3603
3604 The C<mcelog plugin> uses mcelog to retrieve machine check exceptions.
3605
3606 By default the plugin connects to B<"/var/run/mcelog-client"> to check if the
3607 mcelog server is running. When the server is running, the plugin will tail the
3608 specified logfile to retrieve machine check exception information and send a
3609 notification with the details from the logfile. The plugin will use the mcelog
3610 client protocol to retrieve memory related machine check exceptions. Note that
3611 for memory exceptions, notifications are only sent when there is a change in
3612 the number of corrected/uncorrected memory errors.
3613
3614 =head3 The Memory block
3615
3616 Note: these options cannot be used in conjunction with the logfile options, they are mutually
3617 exclusive.
3618
3619 =over 3
3620
3621 =item B<McelogClientSocket> I<Path>
3622 Connect to the mcelog client socket using the UNIX domain socket at I<Path>.
3623 Defaults to B<"/var/run/mcelog-client">.
3624
3625 =item B<PersistentNotification> B<true>|B<false>
3626 Override default configuration to only send notifications when sent when there
3627 is a change in the number of corrected/uncorrected memory errors. When set to
3628 true notifications will be sent for every read cycle. Default is false. Does
3629 not affect the stats being dispatched.
3630
3631 =back
3632
3633 =over 4
3634
3635 =item B<McelogLogfile> I<Path>
3636
3637 The mcelog file to parse. Defaults to B<"/var/log/mcelog">. Note: this option
3638 cannot be used in conjunction with the memory block options, they are mutually
3639 exclusive.
3640
3641 =back
3642
3643 =head2 Plugin C<md>
3644
3645 The C<md plugin> collects information from Linux Software-RAID devices (md).
3646
3647 All reported values are of the type C<md_disks>. Reported type instances are
3648 I<active>, I<failed> (present but not operational), I<spare> (hot stand-by) and
3649 I<missing> (physically absent) disks.
3650
3651 =over 4
3652
3653 =item B<Device> I<Device>
3654
3655 Select md devices based on device name. The I<device name> is the basename of
3656 the device, i.e. the name of the block device without the leading C</dev/>.
3657 See B<IgnoreSelected> for more details.
3658
3659 See F</"IGNORELISTS"> for details.
3660
3661 =item B<IgnoreSelected> B<true>|B<false>
3662
3663 Invert device selection: If set to B<true>, all md devices B<except> those
3664 listed using B<Device> are collected. If B<false> (the default), only those
3665 listed are collected. If no configuration is given, the B<md> plugin will
3666 collect data from all md devices.
3667
3668 =back
3669
3670 =head2 Plugin C<memcachec>
3671
3672 The C<memcachec plugin> connects to a memcached server, queries one or more
3673 given I<pages> and parses the returned data according to user specification.
3674 The I<matches> used are the same as the matches used in the C<curl> and C<tail>
3675 plugins.
3676
3677 In order to talk to the memcached server, this plugin uses the I<libmemcached>
3678 library. Please note that there is another library with a very similar name,
3679 libmemcache (notice the missing `d'), which is not applicable.
3680
3681 Synopsis of the configuration:
3682
3683  <Plugin "memcachec">
3684    <Page "plugin_instance">
3685      Server "localhost"
3686      Key "page_key"
3687      Plugin "plugin_name"
3688      <Match>
3689        Regex "(\\d+) bytes sent"
3690        DSType CounterAdd
3691        Type "ipt_octets"
3692        Instance "type_instance"
3693      </Match>
3694    </Page>
3695  </Plugin>
3696
3697 The configuration options are:
3698
3699 =over 4
3700
3701 =item E<lt>B<Page> I<Name>E<gt>
3702
3703 Each B<Page> block defines one I<page> to be queried from the memcached server.
3704 The block requires one string argument which is used as I<plugin instance>.
3705
3706 =item B<Server> I<Address>
3707
3708 Sets the server address to connect to when querying the page. Must be inside a
3709 B<Page> block.
3710
3711 =item B<Key> I<Key>
3712
3713 When connected to the memcached server, asks for the page I<Key>.
3714
3715 =item B<Plugin> I<Plugin>
3716
3717 Use I<Plugin> as the plugin name when submitting values.
3718 Defaults to 'memcachec'.
3719
3720 =item E<lt>B<Match>E<gt>
3721
3722 Match blocks define which strings to look for and how matches substrings are
3723 interpreted. For a description of match blocks, please see L<"Plugin tail">.
3724
3725 =back
3726
3727 =head2 Plugin C<memcached>
3728
3729 The B<memcached plugin> connects to a memcached server and queries statistics
3730 about cache utilization, memory and bandwidth used.
3731 L<http://memcached.org/>
3732
3733  <Plugin "memcached">
3734    <Instance "name">
3735      #Host "memcache.example.com"
3736      Address "127.0.0.1"
3737      Port 11211
3738    </Instance>
3739  </Plugin>
3740
3741 The plugin configuration consists of one or more B<Instance> blocks which
3742 specify one I<memcached> connection each. Within the B<Instance> blocks, the
3743 following options are allowed:
3744
3745 =over 4
3746
3747 =item B<Host> I<Hostname>
3748
3749 Sets the B<host> field of dispatched values. Defaults to the global hostname
3750 setting.
3751 For backwards compatibility, values are also dispatched with the global
3752 hostname when B<Host> is set to B<127.0.0.1> or B<localhost> and B<Address> is
3753 not set.
3754
3755 =item B<Address> I<Address>
3756
3757 Hostname or IP to connect to. For backwards compatibility, defaults to the
3758 value of B<Host> or B<127.0.0.1> if B<Host> is unset.
3759
3760 =item B<Port> I<Port>
3761
3762 TCP port to connect to. Defaults to B<11211>.
3763
3764 =item B<Socket> I<Path>
3765
3766 Connect to I<memcached> using the UNIX domain socket at I<Path>. If this
3767 setting is given, the B<Address> and B<Port> settings are ignored.
3768
3769 =back
3770
3771 =head2 Plugin C<mic>
3772
3773 The B<mic plugin> gathers CPU statistics, memory usage and temperatures from
3774 Intel's Many Integrated Core (MIC) systems.
3775
3776 B<Synopsis:>
3777
3778  <Plugin mic>
3779    ShowCPU true
3780    ShowCPUCores true
3781    ShowMemory true
3782
3783    ShowTemperatures true
3784    Temperature vddg
3785    Temperature vddq
3786    IgnoreSelectedTemperature true
3787
3788    ShowPower true
3789    Power total0
3790    Power total1
3791    IgnoreSelectedPower true
3792  </Plugin>
3793
3794 The following options are valid inside the B<PluginE<nbsp>mic> block:
3795
3796 =over 4
3797
3798 =item B<ShowCPU> B<true>|B<false>
3799
3800 If enabled (the default) a sum of the CPU usage across all cores is reported.
3801
3802 =item B<ShowCPUCores> B<true>|B<false>
3803
3804 If enabled (the default) per-core CPU usage is reported.
3805
3806 =item B<ShowMemory> B<true>|B<false>
3807
3808 If enabled (the default) the physical memory usage of the MIC system is
3809 reported.
3810
3811 =item B<ShowTemperatures> B<true>|B<false>
3812
3813 If enabled (the default) various temperatures of the MIC system are reported.
3814
3815 =item B<Temperature> I<Name>
3816
3817 This option controls which temperatures are being reported. Whether matching
3818 temperatures are being ignored or I<only> matching temperatures are reported
3819 depends on the B<IgnoreSelectedTemperature> setting below. By default I<all>
3820 temperatures are reported.
3821
3822 =item B<IgnoreSelectedTemperature> B<false>|B<true>
3823
3824 Controls the behavior of the B<Temperature> setting above. If set to B<false>
3825 (the default) only temperatures matching a B<Temperature> option are reported
3826 or, if no B<Temperature> option is specified, all temperatures are reported. If
3827 set to B<true>, matching temperatures are I<ignored> and all other temperatures
3828 are reported.
3829
3830 Known temperature names are:
3831
3832 =over 4
3833
3834 =item die
3835
3836 Die of the CPU
3837
3838 =item devmem
3839
3840 Device Memory
3841
3842 =item fin
3843
3844 Fan In
3845
3846 =item fout
3847
3848 Fan Out
3849
3850 =item vccp
3851
3852 Voltage ccp
3853
3854 =item vddg
3855
3856 Voltage ddg
3857
3858 =item vddq
3859
3860 Voltage ddq
3861
3862 =back
3863
3864 =item B<ShowPower> B<true>|B<false>
3865
3866 If enabled (the default) various temperatures of the MIC system are reported.
3867
3868 =item B<Power> I<Name>
3869
3870 This option controls which power readings are being reported. Whether matching
3871 power readings are being ignored or I<only> matching power readings are reported
3872 depends on the B<IgnoreSelectedPower> setting below. By default I<all>
3873 power readings are reported.
3874
3875 =item B<IgnoreSelectedPower> B<false>|B<true>
3876
3877 Controls the behavior of the B<Power> setting above. If set to B<false>
3878 (the default) only power readings matching a B<Power> option are reported
3879 or, if no B<Power> option is specified, all power readings are reported. If
3880 set to B<true>, matching power readings are I<ignored> and all other power readings
3881 are reported.
3882
3883 Known power names are:
3884
3885 =over 4
3886
3887 =item total0
3888
3889 Total power utilization averaged over Time Window 0 (uWatts).
3890
3891 =item total1
3892
3893 Total power utilization averaged over Time Window 0 (uWatts).
3894
3895 =item inst
3896
3897 Instantaneous power (uWatts).
3898
3899 =item imax
3900
3901 Max instantaneous power (uWatts).
3902
3903 =item pcie
3904
3905 PCI-E connector power (uWatts).
3906
3907 =item c2x3
3908
3909 2x3 connector power (uWatts).
3910
3911 =item c2x4
3912
3913 2x4 connector power (uWatts).
3914
3915 =item vccp
3916
3917 Core rail (uVolts).
3918
3919 =item vddg
3920
3921 Uncore rail (uVolts).
3922
3923 =item vddq
3924
3925 Memory subsystem rail (uVolts).
3926
3927 =back
3928
3929 =back
3930
3931 =head2 Plugin C<memory>
3932
3933 The I<memory plugin> provides the following configuration options:
3934
3935 =over 4
3936
3937 =item B<ValuesAbsolute> B<true>|B<false>
3938
3939 Enables or disables reporting of physical memory usage in absolute numbers,
3940 i.e. bytes. Defaults to B<true>.
3941
3942 =item B<ValuesPercentage> B<false>|B<true>
3943
3944 Enables or disables reporting of physical memory usage in percentages, e.g.
3945 percent of physical memory used. Defaults to B<false>.
3946
3947 This is useful for deploying I<collectd> in a heterogeneous environment in
3948 which the sizes of physical memory vary.
3949
3950 =back
3951
3952 =head2 Plugin C<modbus>
3953
3954 The B<modbus plugin> connects to a Modbus "slave" via Modbus/TCP or Modbus/RTU and
3955 reads register values. It supports reading single registers (unsigned 16E<nbsp>bit
3956 values), large integer values (unsigned 32E<nbsp>bit values) and floating point
3957 values (two registers interpreted as IEEE floats in big endian notation).
3958
3959 B<Synopsis:>
3960
3961  <Data "voltage-input-1">
3962    RegisterBase 0
3963    RegisterType float
3964    RegisterCmd ReadHolding
3965    Type voltage
3966    Instance "input-1"
3967  </Data>
3968
3969  <Data "voltage-input-2">
3970    RegisterBase 2
3971    RegisterType float
3972    RegisterCmd ReadHolding
3973    Type voltage
3974    Instance "input-2"
3975  </Data>
3976
3977  <Data "supply-temperature-1">
3978    RegisterBase 0
3979    RegisterType Int16
3980    RegisterCmd ReadHolding
3981    Type temperature
3982    Instance "temp-1"
3983  </Data>
3984
3985  <Host "modbus.example.com">
3986    Address "192.168.0.42"
3987    Port    "502"
3988    Interval 60
3989
3990    <Slave 1>
3991      Instance "power-supply"
3992      Collect  "voltage-input-1"
3993      Collect  "voltage-input-2"
3994    </Slave>
3995  </Host>
3996
3997  <Host "localhost">
3998    Device "/dev/ttyUSB0"
3999    Baudrate 38400
4000    Interval 20
4001
4002    <Slave 1>
4003      Instance "temperature"
4004      Collect  "supply-temperature-1"
4005    </Slave>
4006  </Host>
4007
4008 =over 4
4009
4010 =item E<lt>B<Data> I<Name>E<gt> blocks
4011
4012 Data blocks define a mapping between register numbers and the "types" used by
4013 I<collectd>.
4014
4015 Within E<lt>DataE<nbsp>/E<gt> blocks, the following options are allowed:
4016
4017 =over 4
4018
4019 =item B<RegisterBase> I<Number>
4020
4021 Configures the base register to read from the device. If the option
4022 B<RegisterType> has been set to B<Uint32> or B<Float>, this and the next
4023 register will be read (the register number is increased by one).
4024
4025 =item B<RegisterType> B<Int16>|B<Int32>|B<Uint16>|B<Uint32>|B<Float>
4026
4027 Specifies what kind of data is returned by the device. If the type is B<Int32>,
4028 B<Uint32> or B<Float>, two 16E<nbsp>bit registers will be read and the data is
4029 combined into one value. Defaults to B<Uint16>.
4030
4031 =item B<RegisterCmd> B<ReadHolding>|B<ReadInput>
4032
4033 Specifies register type to be collected from device. Works only with libmodbus
4034 2.9.2 or higher. Defaults to B<ReadHolding>.
4035
4036 =item B<Type> I<Type>
4037
4038 Specifies the "type" (data set) to use when dispatching the value to
4039 I<collectd>. Currently, only data sets with exactly one data source are
4040 supported.
4041
4042 =item B<Instance> I<Instance>
4043
4044 Sets the type instance to use when dispatching the value to I<collectd>. If
4045 unset, an empty string (no type instance) is used.
4046
4047 =back
4048
4049 =item E<lt>B<Host> I<Name>E<gt> blocks
4050
4051 Host blocks are used to specify to which hosts to connect and what data to read
4052 from their "slaves". The string argument I<Name> is used as hostname when
4053 dispatching the values to I<collectd>.
4054
4055 Within E<lt>HostE<nbsp>/E<gt> blocks, the following options are allowed:
4056
4057 =over 4
4058
4059 =item B<Address> I<Hostname>
4060
4061 For Modbus/TCP, specifies the node name (the actual network address) used to
4062 connect to the host. This may be an IP address or a hostname. Please note that
4063 the used I<libmodbus> library only supports IPv4 at the moment.
4064
4065 =item B<Port> I<Service>
4066
4067 for Modbus/TCP, specifies the port used to connect to the host. The port can
4068 either be given as a number or as a service name. Please note that the
4069 I<Service> argument must be a string, even if ports are given in their numerical
4070 form. Defaults to "502".
4071
4072 =item B<Device> I<Devicenode>
4073
4074 For Modbus/RTU, specifies the path to the serial device being used.
4075
4076 =item B<Baudrate> I<Baudrate>
4077
4078 For Modbus/RTU, specifies the baud rate of the serial device.
4079 Note, connections currently support only 8/N/1.
4080
4081 =item B<Interval> I<Interval>
4082
4083 Sets the interval (in seconds) in which the values will be collected from this
4084 host. By default the global B<Interval> setting will be used.
4085
4086 =item E<lt>B<Slave> I<ID>E<gt>
4087
4088 Over each connection, multiple Modbus devices may be reached. The slave ID
4089 is used to specify which device should be addressed. For each device you want
4090 to query, one B<Slave> block must be given.
4091
4092 Within E<lt>SlaveE<nbsp>/E<gt> blocks, the following options are allowed:
4093
4094 =over 4
4095
4096 =item B<Instance> I<Instance>
4097
4098 Specify the plugin instance to use when dispatching the values to I<collectd>.
4099 By default "slave_I<ID>" is used.
4100
4101 =item B<Collect> I<DataName>
4102
4103 Specifies which data to retrieve from the device. I<DataName> must be the same
4104 string as the I<Name> argument passed to a B<Data> block. You can specify this
4105 option multiple times to collect more than one value from a slave. At least one
4106 B<Collect> option is mandatory.
4107
4108 =back
4109
4110 =back
4111
4112 =back
4113
4114 =head2 Plugin C<mqtt>
4115
4116 The I<MQTT plugin> can send metrics to MQTT (B<Publish> blocks) and receive
4117 values from MQTT (B<Subscribe> blocks).
4118
4119 B<Synopsis:>
4120
4121  <Plugin mqtt>
4122    <Publish "name">
4123      Host "mqtt.example.com"
4124      Prefix "collectd"
4125    </Publish>
4126    <Subscribe "name">
4127      Host "mqtt.example.com"
4128      Topic "collectd/#"
4129    </Subscribe>
4130  </Plugin>
4131
4132 The plugin's configuration is in B<Publish> and/or B<Subscribe> blocks,
4133 configuring the sending and receiving direction respectively. The plugin will
4134 register a write callback named C<mqtt/I<name>> where I<name> is the string
4135 argument given to the B<Publish> block. Both types of blocks share many but not
4136 all of the following options. If an option is valid in only one of the blocks,
4137 it will be mentioned explicitly.
4138
4139 B<Options:>
4140
4141 =over 4
4142
4143 =item B<Host> I<Hostname>
4144
4145 Hostname of the MQTT broker to connect to.
4146
4147 =item B<Port> I<Service>
4148
4149 Port number or service name of the MQTT broker to connect to.
4150
4151 =item B<User> I<UserName>
4152
4153 Username used when authenticating to the MQTT broker.
4154
4155 =item B<Password> I<Password>
4156
4157 Password used when authenticating to the MQTT broker.
4158
4159 =item B<ClientId> I<ClientId>
4160
4161 MQTT client ID to use. Defaults to the hostname used by I<collectd>.
4162
4163 =item B<QoS> [B<0>-B<2>]
4164
4165 Sets the I<Quality of Service>, with the values C<0>, C<1> and C<2> meaning:
4166
4167 =over 4
4168
4169 =item B<0>
4170
4171 At most once
4172
4173 =item B<1>
4174
4175 At least once
4176
4177 =item B<2>
4178
4179 Exactly once
4180
4181 =back
4182
4183 In B<Publish> blocks, this option determines the QoS flag set on outgoing
4184 messages and defaults to B<0>. In B<Subscribe> blocks, determines the maximum
4185 QoS setting the client is going to accept and defaults to B<2>. If the QoS flag
4186 on a message is larger than the maximum accepted QoS of a subscriber, the
4187 message's QoS will be downgraded.
4188
4189 =item B<Prefix> I<Prefix> (Publish only)
4190
4191 This plugin will use one topic per I<value list> which will looks like a path.
4192 I<Prefix> is used as the first path element and defaults to B<collectd>.
4193
4194 An example topic name would be:
4195
4196  collectd/cpu-0/cpu-user
4197
4198 =item B<Retain> B<false>|B<true> (Publish only)
4199
4200 Controls whether the MQTT broker will retain (keep a copy of) the last message
4201 sent to each topic and deliver it to new subscribers. Defaults to B<false>.
4202
4203 =item B<StoreRates> B<true>|B<false> (Publish only)
4204
4205 Controls whether C<DERIVE> and C<COUNTER> metrics are converted to a I<rate>
4206 before sending. Defaults to B<true>.
4207
4208 =item B<CleanSession> B<true>|B<false> (Subscribe only)
4209
4210 Controls whether the MQTT "cleans" the session up after the subscriber
4211 disconnects or if it maintains the subscriber's subscriptions and all messages
4212 that arrive while the subscriber is disconnected. Defaults to B<true>.
4213
4214 =item B<Topic> I<TopicName> (Subscribe only)
4215
4216 Configures the topic(s) to subscribe to. You can use the single level C<+> and
4217 multi level C<#> wildcards. Defaults to B<collectd/#>, i.e. all topics beneath
4218 the B<collectd> branch.
4219
4220 =item B<CACert> I<file>
4221
4222 Path to the PEM-encoded CA certificate file. Setting this option enables TLS
4223 communication with the MQTT broker, and as such, B<Port> should be the TLS-enabled
4224 port of the MQTT broker.
4225 This option enables the use of TLS.
4226
4227 =item B<CertificateFile> I<file>
4228
4229 Path to the PEM-encoded certificate file to use as client certificate when
4230 connecting to the MQTT broker.
4231 Only valid if B<CACert> and B<CertificateKeyFile> are also set.
4232
4233 =item B<CertificateKeyFile> I<file>
4234
4235 Path to the unencrypted PEM-encoded key file corresponding to B<CertificateFile>.
4236 Only valid if B<CACert> and B<CertificateFile> are also set.
4237
4238 =item B<TLSProtocol> I<protocol>
4239
4240 If configured, this specifies the string protocol version (e.g. C<tlsv1>,
4241 C<tlsv1.2>) to use for the TLS connection to the broker. If not set a default
4242 version is used which depends on the version of OpenSSL the Mosquitto library
4243 was linked against.
4244 Only valid if B<CACert> is set.
4245
4246 =item B<CipherSuite> I<ciphersuite>
4247
4248 A string describing the ciphers available for use. See L<ciphers(1)> and the
4249 C<openssl ciphers> utility for more information. If unset, the default ciphers
4250 will be used.
4251 Only valid if B<CACert> is set.
4252
4253 =back
4254
4255 =head2 Plugin C<mysql>
4256
4257 The C<mysql plugin> requires B<mysqlclient> to be installed. It connects to
4258 one or more databases when started and keeps the connection up as long as
4259 possible. When the connection is interrupted for whatever reason it will try
4260 to re-connect. The plugin will complain loudly in case anything goes wrong.
4261
4262 This plugin issues the MySQL C<SHOW STATUS> / C<SHOW GLOBAL STATUS> command
4263 and collects information about MySQL network traffic, executed statements,
4264 requests, the query cache and threads by evaluating the
4265 C<Bytes_{received,sent}>, C<Com_*>, C<Handler_*>, C<Qcache_*> and C<Threads_*>
4266 return values. Please refer to the B<MySQL reference manual>, I<5.1.6. Server
4267 Status Variables> for an explanation of these values.
4268
4269 Optionally, master and slave statistics may be collected in a MySQL
4270 replication setup. In that case, information about the synchronization state
4271 of the nodes are collected by evaluating the C<Position> return value of the
4272 C<SHOW MASTER STATUS> command and the C<Seconds_Behind_Master>,
4273 C<Read_Master_Log_Pos> and C<Exec_Master_Log_Pos> return values of the
4274 C<SHOW SLAVE STATUS> command. See the B<MySQL reference manual>,
4275 I<12.5.5.21 SHOW MASTER STATUS Syntax> and
4276 I<12.5.5.31 SHOW SLAVE STATUS Syntax> for details.
4277
4278 Synopsis:
4279
4280   <Plugin mysql>
4281     <Database foo>
4282       Host "hostname"
4283       User "username"
4284       Password "password"
4285       Port "3306"
4286       MasterStats true
4287       ConnectTimeout 10
4288       SSLKey "/path/to/key.pem"
4289       SSLCert "/path/to/cert.pem"
4290       SSLCA "/path/to/ca.pem"
4291       SSLCAPath "/path/to/cas/"
4292       SSLCipher "DHE-RSA-AES256-SHA"
4293     </Database>
4294
4295     <Database bar>
4296       Alias "squeeze"
4297       Host "localhost"
4298       Socket "/var/run/mysql/mysqld.sock"
4299       SlaveStats true
4300       SlaveNotifications true
4301     </Database>
4302
4303    <Database galera>
4304       Alias "galera"
4305       Host "localhost"
4306       Socket "/var/run/mysql/mysqld.sock"
4307       WsrepStats true
4308    </Database>
4309   </Plugin>
4310
4311 A B<Database> block defines one connection to a MySQL database. It accepts a
4312 single argument which specifies the name of the database. None of the other
4313 options are required. MySQL will use default values as documented in the
4314 "mysql_real_connect()" and "mysql_ssl_set()" sections in the
4315 B<MySQL reference manual>.
4316
4317 =over 4
4318
4319 =item B<Alias> I<Alias>
4320
4321 Alias to use as sender instead of hostname when reporting. This may be useful
4322 when having cryptic hostnames.
4323
4324 =item B<Host> I<Hostname>
4325
4326 Hostname of the database server. Defaults to B<localhost>.
4327
4328 =item B<User> I<Username>
4329
4330 Username to use when connecting to the database. The user does not have to be
4331 granted any privileges (which is synonym to granting the C<USAGE> privilege),
4332 unless you want to collectd replication statistics (see B<MasterStats> and
4333 B<SlaveStats> below). In this case, the user needs the C<REPLICATION CLIENT>
4334 (or C<SUPER>) privileges. Else, any existing MySQL user will do.
4335
4336 =item B<Password> I<Password>
4337
4338 Password needed to log into the database.
4339
4340 =item B<Database> I<Database>
4341
4342 Select this database. Defaults to I<no database> which is a perfectly reasonable
4343 option for what this plugin does.
4344
4345 =item B<Port> I<Port>
4346
4347 TCP-port to connect to. The port must be specified in its numeric form, but it
4348 must be passed as a string nonetheless. For example:
4349
4350   Port "3306"
4351
4352 If B<Host> is set to B<localhost> (the default), this setting has no effect.
4353 See the documentation for the C<mysql_real_connect> function for details.
4354
4355 =item B<Socket> I<Socket>
4356
4357 Specifies the path to the UNIX domain socket of the MySQL server. This option
4358 only has any effect, if B<Host> is set to B<localhost> (the default).
4359 Otherwise, use the B<Port> option above. See the documentation for the
4360 C<mysql_real_connect> function for details.
4361
4362 =item B<InnodbStats> I<true|false>
4363
4364 If enabled, metrics about the InnoDB storage engine are collected.
4365 Disabled by default.
4366
4367 =item B<MasterStats> I<true|false>
4368
4369 =item B<SlaveStats> I<true|false>
4370
4371 Enable the collection of master / slave statistics in a replication setup. In
4372 order to be able to get access to these statistics, the user needs special
4373 privileges. See the B<User> documentation above. Defaults to B<false>.
4374
4375 =item B<SlaveNotifications> I<true|false>
4376
4377 If enabled, the plugin sends a notification if the replication slave I/O and /
4378 or SQL threads are not running. Defaults to B<false>.
4379
4380 =item B<WsrepStats> I<true|false>
4381
4382  Enable the collection of wsrep plugin statistics, used in Master-Master
4383  replication setups like in MySQL Galera/Percona XtraDB Cluster.
4384  User needs only privileges to execute 'SHOW GLOBAL STATUS'
4385
4386 =item B<ConnectTimeout> I<Seconds>
4387
4388 Sets the connect timeout for the MySQL client.
4389
4390 =item B<SSLKey> I<Path>
4391
4392 If provided, the X509 key in PEM format.
4393
4394 =item B<SSLCert> I<Path>
4395
4396 If provided, the X509 cert in PEM format.
4397
4398 =item B<SSLCA> I<Path>
4399
4400 If provided, the CA file in PEM format (check OpenSSL docs).
4401
4402 =item B<SSLCAPath> I<Path>
4403
4404 If provided, the CA directory (check OpenSSL docs).
4405
4406 =item B<SSLCipher> I<String>
4407
4408 If provided, the SSL cipher to use.
4409
4410 =back
4411
4412 =head2 Plugin C<netapp>
4413
4414 The netapp plugin can collect various performance and capacity information
4415 from a NetApp filer using the NetApp API.
4416
4417 Please note that NetApp has a wide line of products and a lot of different
4418 software versions for each of these products. This plugin was developed for a
4419 NetApp FAS3040 running OnTap 7.2.3P8 and tested on FAS2050 7.3.1.1L1,
4420 FAS3140 7.2.5.1 and FAS3020 7.2.4P9. It I<should> work for most combinations of
4421 model and software version but it is very hard to test this.
4422 If you have used this plugin with other models and/or software version, feel
4423 free to send us a mail to tell us about the results, even if it's just a short
4424 "It works".
4425
4426 To collect these data collectd will log in to the NetApp via HTTP(S) and HTTP
4427 basic authentication.
4428
4429 B<Do not use a regular user for this!> Create a special collectd user with just
4430 the minimum of capabilities needed. The user only needs the "login-http-admin"
4431 capability as well as a few more depending on which data will be collected.
4432 Required capabilities are documented below.
4433
4434 =head3 Synopsis
4435
4436  <Plugin "netapp">
4437    <Host "netapp1.example.com">
4438     Protocol      "https"
4439     Address       "10.0.0.1"
4440     Port          443
4441     User          "username"
4442     Password      "aef4Aebe"
4443     Interval      30
4444
4445     <WAFL>
4446       Interval 30
4447       GetNameCache   true
4448       GetDirCache    true
4449       GetBufferCache true
4450       GetInodeCache  true
4451     </WAFL>
4452
4453     <Disks>
4454       Interval 30
4455       GetBusy true
4456     </Disks>
4457
4458     <VolumePerf>
4459       Interval 30
4460       GetIO      "volume0"
4461       IgnoreSelectedIO      false
4462       GetOps     "volume0"
4463       IgnoreSelectedOps     false
4464       GetLatency "volume0"
4465       IgnoreSelectedLatency false
4466     </VolumePerf>
4467
4468     <VolumeUsage>
4469       Interval 30
4470       GetCapacity "vol0"
4471       GetCapacity "vol1"
4472       IgnoreSelectedCapacity false
4473       GetSnapshot "vol1"
4474       GetSnapshot "vol3"
4475       IgnoreSelectedSnapshot false
4476     </VolumeUsage>
4477
4478     <Quota>
4479       Interval 60
4480     </Quota>
4481
4482     <Snapvault>
4483       Interval 30
4484     </Snapvault>
4485
4486     <System>
4487       Interval 30
4488       GetCPULoad     true
4489       GetInterfaces  true
4490       GetDiskOps     true
4491       GetDiskIO      true
4492     </System>
4493
4494     <VFiler vfilerA>
4495       Interval 60
4496
4497       SnapVault true
4498       # ...
4499     </VFiler>
4500    </Host>
4501  </Plugin>
4502
4503 The netapp plugin accepts the following configuration options:
4504
4505 =over 4
4506
4507 =item B<Host> I<Name>
4508
4509 A host block defines one NetApp filer. It will appear in collectd with the name
4510 you specify here which does not have to be its real name nor its hostname (see
4511 the B<Address> option below).
4512
4513 =item B<VFiler> I<Name>
4514
4515 A B<VFiler> block may only be used inside a host block. It accepts all the
4516 same options as the B<Host> block (except for cascaded B<VFiler> blocks) and
4517 will execute all NetApp API commands in the context of the specified
4518 VFiler(R). It will appear in collectd with the name you specify here which
4519 does not have to be its real name. The VFiler name may be specified using the
4520 B<VFilerName> option. If this is not specified, it will default to the name
4521 you specify here.
4522
4523 The VFiler block inherits all connection related settings from the surrounding
4524 B<Host> block (which appear before the B<VFiler> block) but they may be
4525 overwritten inside the B<VFiler> block.
4526
4527 This feature is useful, for example, when using a VFiler as SnapVault target
4528 (supported since OnTap 8.1). In that case, the SnapVault statistics are not
4529 available in the host filer (vfiler0) but only in the respective VFiler
4530 context.
4531
4532 =item B<Protocol> B<httpd>|B<http>
4533
4534 The protocol collectd will use to query this host.
4535
4536 Optional
4537
4538 Type: string
4539
4540 Default: https
4541
4542 Valid options: http, https
4543
4544 =item B<Address> I<Address>
4545
4546 The hostname or IP address of the host.
4547
4548 Optional
4549
4550 Type: string
4551
4552 Default: The "host" block's name.
4553
4554 =item B<Port> I<Port>
4555
4556 The TCP port to connect to on the host.
4557
4558 Optional
4559
4560 Type: integer
4561
4562 Default: 80 for protocol "http", 443 for protocol "https"
4563
4564 =item B<User> I<User>
4565
4566 =item B<Password> I<Password>
4567
4568 The username and password to use to login to the NetApp.
4569
4570 Mandatory
4571
4572 Type: string
4573
4574 =item B<VFilerName> I<Name>
4575
4576 The name of the VFiler in which context to execute API commands. If not
4577 specified, the name provided to the B<VFiler> block will be used instead.
4578
4579 Optional
4580
4581 Type: string
4582
4583 Default: name of the B<VFiler> block
4584
4585 B<Note:> This option may only be used inside B<VFiler> blocks.
4586
4587 =item B<Interval> I<Interval>
4588
4589 B<TODO>
4590
4591 =back
4592
4593 The following options decide what kind of data will be collected. You can
4594 either use them as a block and fine tune various parameters inside this block,
4595 use them as a single statement to just accept all default values, or omit it to
4596 not collect any data.
4597
4598 The following options are valid inside all blocks:
4599
4600 =over 4
4601
4602 =item B<Interval> I<Seconds>
4603
4604 Collect the respective statistics every I<Seconds> seconds. Defaults to the
4605 host specific setting.
4606
4607 =back
4608
4609 =head3 The System block
4610
4611 This will collect various performance data about the whole system.
4612
4613 B<Note:> To get this data the collectd user needs the
4614 "api-perf-object-get-instances" capability.
4615
4616 =over 4
4617
4618 =item B<Interval> I<Seconds>
4619
4620 Collect disk statistics every I<Seconds> seconds.
4621
4622 =item B<GetCPULoad> B<true>|B<false>
4623
4624 If you set this option to true the current CPU usage will be read. This will be
4625 the average usage between all CPUs in your NetApp without any information about
4626 individual CPUs.
4627
4628 B<Note:> These are the same values that the NetApp CLI command "sysstat"
4629 returns in the "CPU" field.
4630
4631 Optional
4632
4633 Type: boolean
4634
4635 Default: true
4636
4637 Result: Two value lists of type "cpu", and type instances "idle" and "system".
4638
4639 =item B<GetInterfaces> B<true>|B<false>
4640
4641 If you set this option to true the current traffic of the network interfaces
4642 will be read. This will be the total traffic over all interfaces of your NetApp
4643 without any information about individual interfaces.
4644
4645 B<Note:> This is the same values that the NetApp CLI command "sysstat" returns
4646 in the "Net kB/s" field.
4647
4648 B<Or is it?>
4649
4650 Optional
4651
4652 Type: boolean
4653
4654 Default: true
4655
4656 Result: One value list of type "if_octects".
4657
4658 =item B<GetDiskIO> B<true>|B<false>
4659
4660 If you set this option to true the current IO throughput will be read. This
4661 will be the total IO of your NetApp without any information about individual
4662 disks, volumes or aggregates.
4663
4664 B<Note:> This is the same values that the NetApp CLI command "sysstat" returns
4665 in the "DiskE<nbsp>kB/s" field.
4666
4667 Optional
4668
4669 Type: boolean
4670
4671 Default: true
4672
4673 Result: One value list of type "disk_octets".
4674
4675 =item B<GetDiskOps> B<true>|B<false>
4676
4677 If you set this option to true the current number of HTTP, NFS, CIFS, FCP,
4678 iSCSI, etc. operations will be read. This will be the total number of
4679 operations on your NetApp without any information about individual volumes or
4680 aggregates.
4681
4682 B<Note:> These are the same values that the NetApp CLI command "sysstat"
4683 returns in the "NFS", "CIFS", "HTTP", "FCP" and "iSCSI" fields.
4684
4685 Optional
4686
4687 Type: boolean
4688
4689 Default: true
4690
4691 Result: A variable number of value lists of type "disk_ops_complex". Each type
4692 of operation will result in one value list with the name of the operation as
4693 type instance.
4694
4695 =back
4696
4697 =head3 The WAFL block
4698
4699 This will collect various performance data about the WAFL file system. At the
4700 moment this just means cache performance.
4701
4702 B<Note:> To get this data the collectd user needs the
4703 "api-perf-object-get-instances" capability.
4704
4705 B<Note:> The interface to get these values is classified as "Diagnostics" by
4706 NetApp. This means that it is not guaranteed to be stable even between minor
4707 releases.
4708
4709 =over 4
4710
4711 =item B<Interval> I<Seconds>
4712
4713 Collect disk statistics every I<Seconds> seconds.
4714
4715 =item B<GetNameCache> B<true>|B<false>
4716
4717 Optional
4718
4719 Type: boolean
4720
4721 Default: true
4722
4723 Result: One value list of type "cache_ratio" and type instance
4724 "name_cache_hit".
4725
4726 =item B<GetDirCache> B<true>|B<false>
4727
4728 Optional
4729
4730 Type: boolean
4731
4732 Default: true
4733
4734 Result: One value list of type "cache_ratio" and type instance "find_dir_hit".
4735
4736 =item B<GetInodeCache> B<true>|B<false>
4737
4738 Optional
4739
4740 Type: boolean
4741
4742 Default: true
4743
4744 Result: One value list of type "cache_ratio" and type instance
4745 "inode_cache_hit".
4746
4747 =item B<GetBufferCache> B<true>|B<false>
4748
4749 B<Note:> This is the same value that the NetApp CLI command "sysstat" returns
4750 in the "Cache hit" field.
4751
4752 Optional
4753
4754 Type: boolean
4755
4756 Default: true
4757
4758 Result: One value list of type "cache_ratio" and type instance "buf_hash_hit".
4759
4760 =back
4761
4762 =head3 The Disks block
4763
4764 This will collect performance data about the individual disks in the NetApp.
4765
4766 B<Note:> To get this data the collectd user needs the
4767 "api-perf-object-get-instances" capability.
4768
4769 =over 4
4770
4771 =item B<Interval> I<Seconds>
4772
4773 Collect disk statistics every I<Seconds> seconds.
4774
4775 =item B<GetBusy> B<true>|B<false>
4776
4777 If you set this option to true the busy time of all disks will be calculated
4778 and the value of the busiest disk in the system will be written.
4779
4780 B<Note:> This is the same values that the NetApp CLI command "sysstat" returns
4781 in the "Disk util" field. Probably.
4782
4783 Optional
4784
4785 Type: boolean
4786
4787 Default: true
4788
4789 Result: One value list of type "percent" and type instance "disk_busy".
4790
4791 =back
4792
4793 =head3 The VolumePerf block
4794
4795 This will collect various performance data about the individual volumes.
4796
4797 You can select which data to collect about which volume using the following
4798 options. They follow the standard ignorelist semantic.
4799
4800 B<Note:> To get this data the collectd user needs the
4801 I<api-perf-object-get-instances> capability.
4802
4803 =over 4
4804
4805 =item B<Interval> I<Seconds>
4806
4807 Collect volume performance data every I<Seconds> seconds.
4808
4809 =item B<GetIO> I<Volume>
4810
4811 =item B<GetOps> I<Volume>
4812
4813 =item B<GetLatency> I<Volume>
4814
4815 Select the given volume for IO, operations or latency statistics collection.
4816 The argument is the name of the volume without the C</vol/> prefix.
4817
4818 Since the standard ignorelist functionality is used here, you can use a string
4819 starting and ending with a slash to specify regular expression matching: To
4820 match the volumes "vol0", "vol2" and "vol7", you can use this regular
4821 expression:
4822
4823   GetIO "/^vol[027]$/"
4824
4825 If no regular expression is specified, an exact match is required. Both,
4826 regular and exact matching are case sensitive.
4827
4828 If no volume was specified at all for either of the three options, that data
4829 will be collected for all available volumes.
4830
4831 See F</"IGNORELISTS"> for details.
4832
4833 =item B<IgnoreSelectedIO> B<true>|B<false>
4834
4835 =item B<IgnoreSelectedOps> B<true>|B<false>
4836
4837 =item B<IgnoreSelectedLatency> B<true>|B<false>
4838
4839 When set to B<true>, the volumes selected for IO, operations or latency
4840 statistics collection will be ignored and the data will be collected for all
4841 other volumes.
4842
4843 When set to B<false>, data will only be collected for the specified volumes and
4844 all other volumes will be ignored.
4845
4846 If no volumes have been specified with the above B<Get*> options, all volumes
4847 will be collected regardless of the B<IgnoreSelected*> option.
4848
4849 Defaults to B<false>
4850
4851 =back
4852
4853 =head3 The VolumeUsage block
4854
4855 This will collect capacity data about the individual volumes.
4856
4857 B<Note:> To get this data the collectd user needs the I<api-volume-list-info>
4858 capability.
4859
4860 =over 4
4861
4862 =item B<Interval> I<Seconds>
4863
4864 Collect volume usage statistics every I<Seconds> seconds.
4865
4866 =item B<GetCapacity> I<VolumeName>
4867
4868 The current capacity of the volume will be collected. This will result in two
4869 to four value lists, depending on the configuration of the volume. All data
4870 sources are of type "df_complex" with the name of the volume as
4871 plugin_instance.
4872
4873 There will be type_instances "used" and "free" for the number of used and
4874 available bytes on the volume.  If the volume has some space reserved for
4875 snapshots, a type_instance "snap_reserved" will be available.  If the volume
4876 has SIS enabled, a type_instance "sis_saved" will be available. This is the
4877 number of bytes saved by the SIS feature.
4878
4879 B<Note:> The current NetApp API has a bug that results in this value being
4880 reported as a 32E<nbsp>bit number. This plugin tries to guess the correct
4881 number which works most of the time.  If you see strange values here, bug
4882 NetApp support to fix this.
4883
4884 Repeat this option to specify multiple volumes.
4885
4886 =item B<IgnoreSelectedCapacity> B<true>|B<false>
4887
4888 Specify whether to collect only the volumes selected by the B<GetCapacity>
4889 option or to ignore those volumes. B<IgnoreSelectedCapacity> defaults to
4890 B<false>. However, if no B<GetCapacity> option is specified at all, all
4891 capacities will be selected anyway.
4892
4893 =item B<GetSnapshot> I<VolumeName>
4894
4895 Select volumes from which to collect snapshot information.
4896
4897 Usually, the space used for snapshots is included in the space reported as
4898 "used". If snapshot information is collected as well, the space used for
4899 snapshots is subtracted from the used space.
4900
4901 To make things even more interesting, it is possible to reserve space to be
4902 used for snapshots. If the space required for snapshots is less than that
4903 reserved space, there is "reserved free" and "reserved used" space in addition
4904 to "free" and "used". If the space required for snapshots exceeds the reserved
4905 space, that part allocated in the normal space is subtracted from the "used"
4906 space again.
4907
4908 Repeat this option to specify multiple volumes.
4909
4910 =item B<IgnoreSelectedSnapshot>
4911
4912 Specify whether to collect only the volumes selected by the B<GetSnapshot>
4913 option or to ignore those volumes. B<IgnoreSelectedSnapshot> defaults to
4914 B<false>. However, if no B<GetSnapshot> option is specified at all, all
4915 capacities will be selected anyway.
4916
4917 =back
4918
4919 =head3 The Quota block
4920
4921 This will collect (tree) quota statistics (used disk space and number of used
4922 files). This mechanism is useful to get usage information for single qtrees.
4923 In case the quotas are not used for any other purpose, an entry similar to the
4924 following in C</etc/quotas> would be sufficient:
4925
4926   /vol/volA/some_qtree tree - - - - -
4927
4928 After adding the entry, issue C<quota on -w volA> on the NetApp filer.
4929
4930 =over 4
4931
4932 =item B<Interval> I<Seconds>
4933
4934 Collect SnapVault(R) statistics every I<Seconds> seconds.
4935
4936 =back
4937
4938 =head3 The SnapVault block
4939
4940 This will collect statistics about the time and traffic of SnapVault(R)
4941 transfers.
4942
4943 =over 4
4944
4945 =item B<Interval> I<Seconds>
4946
4947 Collect SnapVault(R) statistics every I<Seconds> seconds.
4948
4949 =back
4950
4951 =head2 Plugin C<netlink>
4952
4953 The C<netlink> plugin uses a netlink socket to query the Linux kernel about
4954 statistics of various interface and routing aspects.
4955
4956 =over 4
4957
4958 =item B<Interface> I<Interface>
4959
4960 =item B<VerboseInterface> I<Interface>
4961
4962 Instruct the plugin to collect interface statistics. This is basically the same
4963 as the statistics provided by the C<interface> plugin (see above) but
4964 potentially much more detailed.
4965
4966 When configuring with B<Interface> only the basic statistics will be collected,
4967 namely octets, packets, and errors. These statistics are collected by
4968 the C<interface> plugin, too, so using both at the same time is no benefit.
4969
4970 When configured with B<VerboseInterface> all counters B<except> the basic ones,
4971 so that no data needs to be collected twice if you use the C<interface> plugin.
4972 This includes dropped packets, received multicast packets, collisions and a
4973 whole zoo of differentiated RX and TX errors. You can try the following command
4974 to get an idea of what awaits you:
4975
4976   ip -s -s link list
4977
4978 If I<Interface> is B<All>, all interfaces will be selected.
4979
4980 =item B<QDisc> I<Interface> [I<QDisc>]
4981
4982 =item B<Class> I<Interface> [I<Class>]
4983
4984 =item B<Filter> I<Interface> [I<Filter>]
4985
4986 Collect the octets and packets that pass a certain qdisc, class or filter.
4987
4988 QDiscs and classes are identified by their type and handle (or classid).
4989 Filters don't necessarily have a handle, therefore the parent's handle is used.
4990 The notation used in collectd differs from that used in tc(1) in that it
4991 doesn't skip the major or minor number if it's zero and doesn't print special
4992 ids by their name. So, for example, a qdisc may be identified by
4993 C<pfifo_fast-1:0> even though the minor number of B<all> qdiscs is zero and
4994 thus not displayed by tc(1).
4995
4996 If B<QDisc>, B<Class>, or B<Filter> is given without the second argument,
4997 i.E<nbsp>.e. without an identifier, all qdiscs, classes, or filters that are
4998 associated with that interface will be collected.
4999
5000 Since a filter itself doesn't necessarily have a handle, the parent's handle is
5001 used. This may lead to problems when more than one filter is attached to a
5002 qdisc or class. This isn't nice, but we don't know how this could be done any
5003 better. If you have a idea, please don't hesitate to tell us.
5004
5005 As with the B<Interface> option you can specify B<All> as the interface,
5006 meaning all interfaces.
5007
5008 Here are some examples to help you understand the above text more easily:
5009
5010   <Plugin netlink>
5011     VerboseInterface "All"
5012     QDisc "eth0" "pfifo_fast-1:0"
5013     QDisc "ppp0"
5014     Class "ppp0" "htb-1:10"
5015     Filter "ppp0" "u32-1:0"
5016   </Plugin>
5017
5018 See F</"IGNORELISTS"> for details.
5019
5020 =item B<IgnoreSelected>
5021
5022 The behavior is the same as with all other similar plugins: If nothing is
5023 selected at all, everything is collected. If some things are selected using the
5024 options described above, only these statistics are collected. If you set
5025 B<IgnoreSelected> to B<true>, this behavior is inverted, i.E<nbsp>e. the
5026 specified statistics will not be collected.
5027
5028 =back
5029
5030 =head2 Plugin C<network>
5031
5032 The Network plugin sends data to a remote instance of collectd, receives data
5033 from a remote instance, or both at the same time. Data which has been received
5034 from the network is usually not transmitted again, but this can be activated, see
5035 the B<Forward> option below.
5036
5037 The default IPv6 multicast group is C<ff18::efc0:4a42>. The default IPv4
5038 multicast group is C<239.192.74.66>. The default I<UDP> port is B<25826>.
5039
5040 Both, B<Server> and B<Listen> can be used as single option or as block. When
5041 used as block, given options are valid for this socket only. The following
5042 example will export the metrics twice: Once to an "internal" server (without
5043 encryption and signing) and one to an external server (with cryptographic
5044 signature):
5045
5046  <Plugin "network">
5047    # Export to an internal server
5048    # (demonstrates usage without additional options)
5049    Server "collectd.internal.tld"
5050
5051    # Export to an external server
5052    # (demonstrates usage with signature options)
5053    <Server "collectd.external.tld">
5054      SecurityLevel "sign"
5055      Username "myhostname"
5056      Password "ohl0eQue"
5057    </Server>
5058  </Plugin>
5059
5060 =over 4
5061
5062 =item B<E<lt>Server> I<Host> [I<Port>]B<E<gt>>
5063
5064 The B<Server> statement/block sets the server to send datagrams to. The
5065 statement may occur multiple times to send each datagram to multiple
5066 destinations.
5067
5068 The argument I<Host> may be a hostname, an IPv4 address or an IPv6 address. The
5069 optional second argument specifies a port number or a service name. If not
5070 given, the default, B<25826>, is used.
5071
5072 The following options are recognized within B<Server> blocks:
5073
5074 =over 4
5075
5076 =item B<SecurityLevel> B<Encrypt>|B<Sign>|B<None>
5077
5078 Set the security you require for network communication. When the security level
5079 has been set to B<Encrypt>, data sent over the network will be encrypted using
5080 I<AES-256>. The integrity of encrypted packets is ensured using I<SHA-1>. When
5081 set to B<Sign>, transmitted data is signed using the I<HMAC-SHA-256> message
5082 authentication code. When set to B<None>, data is sent without any security.
5083
5084 This feature is only available if the I<network> plugin was linked with
5085 I<libgcrypt>.
5086
5087 =item B<Username> I<Username>
5088
5089 Sets the username to transmit. This is used by the server to lookup the
5090 password. See B<AuthFile> below. All security levels except B<None> require
5091 this setting.
5092
5093 This feature is only available if the I<network> plugin was linked with
5094 I<libgcrypt>.
5095
5096 =item B<Password> I<Password>
5097
5098 Sets a password (shared secret) for this socket. All security levels except
5099 B<None> require this setting.
5100
5101 This feature is only available if the I<network> plugin was linked with
5102 I<libgcrypt>.
5103
5104 =item B<Interface> I<Interface name>
5105
5106 Set the outgoing interface for IP packets. This applies at least
5107 to IPv6 packets and if possible to IPv4. If this option is not applicable,
5108 undefined or a non-existent interface name is specified, the default
5109 behavior is to let the kernel choose the appropriate interface. Be warned
5110 that the manual selection of an interface for unicast traffic is only
5111 necessary in rare cases.
5112
5113 =item B<ResolveInterval> I<Seconds>
5114
5115 Sets the interval at which to re-resolve the DNS for the I<Host>. This is
5116 useful to force a regular DNS lookup to support a high availability setup. If
5117 not specified, re-resolves are never attempted.
5118
5119 =back
5120
5121 =item B<E<lt>Listen> I<Host> [I<Port>]B<E<gt>>
5122
5123 The B<Listen> statement sets the interfaces to bind to. When multiple
5124 statements are found the daemon will bind to multiple interfaces.
5125
5126 The argument I<Host> may be a hostname, an IPv4 address or an IPv6 address. If
5127 the argument is a multicast address the daemon will join that multicast group.
5128 The optional second argument specifies a port number or a service name. If not
5129 given, the default, B<25826>, is used.
5130
5131 The following options are recognized within C<E<lt>ListenE<gt>> blocks:
5132
5133 =over 4
5134
5135 =item B<SecurityLevel> B<Encrypt>|B<Sign>|B<None>
5136
5137 Set the security you require for network communication. When the security level
5138 has been set to B<Encrypt>, only encrypted data will be accepted. The integrity
5139 of encrypted packets is ensured using I<SHA-1>. When set to B<Sign>, only
5140 signed and encrypted data is accepted. When set to B<None>, all data will be
5141 accepted. If an B<AuthFile> option was given (see below), encrypted data is
5142 decrypted if possible.
5143
5144 This feature is only available if the I<network> plugin was linked with
5145 I<libgcrypt>.
5146
5147 =item B<AuthFile> I<Filename>
5148
5149 Sets a file in which usernames are mapped to passwords. These passwords are
5150 used to verify signatures and to decrypt encrypted network packets. If
5151 B<SecurityLevel> is set to B<None>, this is optional. If given, signed data is
5152 verified and encrypted packets are decrypted. Otherwise, signed data is
5153 accepted without checking the signature and encrypted data cannot be decrypted.
5154 For the other security levels this option is mandatory.
5155
5156 The file format is very simple: Each line consists of a username followed by a
5157 colon and any number of spaces followed by the password. To demonstrate, an
5158 example file could look like this:
5159
5160   user0: foo
5161   user1: bar
5162
5163 Each time a packet is received, the modification time of the file is checked
5164 using L<stat(2)>. If the file has been changed, the contents is re-read. While
5165 the file is being read, it is locked using L<fcntl(2)>.
5166
5167 =item B<Interface> I<Interface name>
5168
5169 Set the incoming interface for IP packets explicitly. This applies at least
5170 to IPv6 packets and if possible to IPv4. If this option is not applicable,
5171 undefined or a non-existent interface name is specified, the default
5172 behavior is, to let the kernel choose the appropriate interface. Thus incoming
5173 traffic gets only accepted, if it arrives on the given interface.
5174
5175 =back
5176
5177 =item B<TimeToLive> I<1-255>
5178
5179 Set the time-to-live of sent packets. This applies to all, unicast and
5180 multicast, and IPv4 and IPv6 packets. The default is to not change this value.
5181 That means that multicast packets will be sent with a TTL of C<1> (one) on most
5182 operating systems.
5183
5184 =item B<MaxPacketSize> I<1024-65535>
5185
5186 Set the maximum size for datagrams received over the network. Packets larger
5187 than this will be truncated. Defaults to 1452E<nbsp>bytes, which is the maximum
5188 payload size that can be transmitted in one Ethernet frame using IPv6E<nbsp>/
5189 UDP.
5190
5191 On the server side, this limit should be set to the largest value used on
5192 I<any> client. Likewise, the value on the client must not be larger than the
5193 value on the server, or data will be lost.
5194
5195 B<Compatibility:> Versions prior to I<versionE<nbsp>4.8> used a fixed sized
5196 buffer of 1024E<nbsp>bytes. Versions I<4.8>, I<4.9> and I<4.10> used a default
5197 value of 1024E<nbsp>bytes to avoid problems when sending data to an older
5198 server.
5199
5200 =item B<Forward> I<true|false>
5201
5202 If set to I<true>, write packets that were received via the network plugin to
5203 the sending sockets. This should only be activated when the B<Listen>- and
5204 B<Server>-statements differ. Otherwise packets may be send multiple times to
5205 the same multicast group. While this results in more network traffic than
5206 necessary it's not a huge problem since the plugin has a duplicate detection,
5207 so the values will not loop.
5208
5209 =item B<ReportStats> B<true>|B<false>
5210
5211 The network plugin cannot only receive and send statistics, it can also create
5212 statistics about itself. Collectd data included the number of received and
5213 sent octets and packets, the length of the receive queue and the number of
5214 values handled. When set to B<true>, the I<Network plugin> will make these
5215 statistics available. Defaults to B<false>.
5216
5217 =back
5218
5219 =head2 Plugin C<nfs>
5220
5221 The I<nfs plugin> collects information about the usage of the Network File
5222 System (NFS). It counts the number of procedure calls for each procedure,
5223 grouped by version and whether the system runs as server or client.
5224
5225 It is possibly to omit metrics for a specific NFS version by setting one or
5226 more of the following options to B<false> (all of them default to B<true>).
5227
5228 =over 4
5229
5230 =item B<ReportV2> B<true>|B<false>
5231
5232 =item B<ReportV3> B<true>|B<false>
5233
5234 =item B<ReportV4> B<true>|B<false>
5235
5236 =back
5237
5238 =head2 Plugin C<nginx>
5239
5240 This plugin collects the number of connections and requests handled by the
5241 C<nginx daemon> (speak: engineE<nbsp>X), a HTTP and mail server/proxy. It
5242 queries the page provided by the C<ngx_http_stub_status_module> module, which
5243 isn't compiled by default. Please refer to
5244 L<http://wiki.codemongers.com/NginxStubStatusModule> for more information on
5245 how to compile and configure nginx and this module.
5246
5247 The following options are accepted by the C<nginx plugin>:
5248
5249 =over 4
5250
5251 =item B<URL> I<http://host/nginx_status>
5252
5253 Sets the URL of the C<ngx_http_stub_status_module> output.
5254
5255 =item B<User> I<Username>
5256
5257 Optional user name needed for authentication.
5258
5259 =item B<Password> I<Password>
5260
5261 Optional password needed for authentication.
5262
5263 =item B<VerifyPeer> B<true|false>
5264
5265 Enable or disable peer SSL certificate verification. See
5266 L<http://curl.haxx.se/docs/sslcerts.html> for details. Enabled by default.
5267
5268 =item B<VerifyHost> B<true|false>
5269
5270 Enable or disable peer host name verification. If enabled, the plugin checks
5271 if the C<Common Name> or a C<Subject Alternate Name> field of the SSL
5272 certificate matches the host name provided by the B<URL> option. If this
5273 identity check fails, the connection is aborted. Obviously, only works when
5274 connecting to a SSL enabled server. Enabled by default.
5275
5276 =item B<CACert> I<File>
5277
5278 File that holds one or more SSL certificates. If you want to use HTTPS you will
5279 possibly need this option. What CA certificates come bundled with C<libcurl>
5280 and are checked by default depends on the distribution you use.
5281
5282 =item B<Timeout> I<Milliseconds>
5283
5284 The B<Timeout> option sets the overall timeout for HTTP requests to B<URL>, in
5285 milliseconds. By default, the configured B<Interval> is used to set the
5286 timeout.
5287
5288 =back
5289
5290 =head2 Plugin C<notify_desktop>
5291
5292 This plugin sends a desktop notification to a notification daemon, as defined
5293 in the Desktop Notification Specification. To actually display the
5294 notifications, B<notification-daemon> is required and B<collectd> has to be
5295 able to access the X server (i.E<nbsp>e., the C<DISPLAY> and C<XAUTHORITY>
5296 environment variables have to be set correctly) and the D-Bus message bus.
5297
5298 The Desktop Notification Specification can be found at
5299 L<http://www.galago-project.org/specs/notification/>.
5300
5301 =over 4
5302
5303 =item B<OkayTimeout> I<timeout>
5304
5305 =item B<WarningTimeout> I<timeout>
5306
5307 =item B<FailureTimeout> I<timeout>
5308
5309 Set the I<timeout>, in milliseconds, after which to expire the notification
5310 for C<OKAY>, C<WARNING> and C<FAILURE> severities respectively. If zero has
5311 been specified, the displayed notification will not be closed at all - the
5312 user has to do so herself. These options default to 5000. If a negative number
5313 has been specified, the default is used as well.
5314
5315 =back
5316
5317 =head2 Plugin C<notify_email>
5318
5319 The I<notify_email> plugin uses the I<ESMTP> library to send notifications to a
5320 configured email address.
5321
5322 I<libESMTP> is available from L<http://www.stafford.uklinux.net/libesmtp/>.
5323
5324 Available configuration options:
5325
5326 =over 4
5327
5328 =item B<From> I<Address>
5329
5330 Email address from which the emails should appear to come from.
5331
5332 Default: C<root@localhost>
5333
5334 =item B<Recipient> I<Address>
5335
5336 Configures the email address(es) to which the notifications should be mailed.
5337 May be repeated to send notifications to multiple addresses.
5338
5339 At least one B<Recipient> must be present for the plugin to work correctly.
5340
5341 =item B<SMTPServer> I<Hostname>
5342
5343 Hostname of the SMTP server to connect to.
5344
5345 Default: C<localhost>
5346
5347 =item B<SMTPPort> I<Port>
5348
5349 TCP port to connect to.
5350
5351 Default: C<25>
5352
5353 =item B<SMTPUser> I<Username>
5354
5355 Username for ASMTP authentication. Optional.
5356
5357 =item B<SMTPPassword> I<Password>
5358
5359 Password for ASMTP authentication. Optional.
5360
5361 =item B<Subject> I<Subject>
5362
5363 Subject-template to use when sending emails. There must be exactly two
5364 string-placeholders in the subject, given in the standard I<printf(3)> syntax,
5365 i.E<nbsp>e. C<%s>. The first will be replaced with the severity, the second
5366 with the hostname.
5367
5368 Default: C<Collectd notify: %s@%s>
5369
5370 =back
5371
5372 =head2 Plugin C<notify_nagios>
5373
5374 The I<notify_nagios> plugin writes notifications to Nagios' I<command file> as
5375 a I<passive service check result>.
5376
5377 Available configuration options:
5378
5379 =over 4
5380
5381 =item B<CommandFile> I<Path>
5382
5383 Sets the I<command file> to write to. Defaults to F</usr/local/nagios/var/rw/nagios.cmd>.
5384
5385 =back
5386
5387 =head2 Plugin C<ntpd>
5388
5389 The C<ntpd> plugin collects per-peer ntp data such as time offset and time
5390 dispersion.
5391
5392 For talking to B<ntpd>, it mimics what the B<ntpdc> control program does on
5393 the wire - using B<mode 7> specific requests. This mode is deprecated with
5394 newer B<ntpd> releases (4.2.7p230 and later). For the C<ntpd> plugin to work
5395 correctly with them, the ntp daemon must be explicitly configured to
5396 enable B<mode 7> (which is disabled by default). Refer to the I<ntp.conf(5)>
5397 manual page for details.
5398
5399 Available configuration options for the C<ntpd> plugin:
5400
5401 =over 4
5402
5403 =item B<Host> I<Hostname>
5404
5405 Hostname of the host running B<ntpd>. Defaults to B<localhost>.
5406
5407 =item B<Port> I<Port>
5408
5409 UDP-Port to connect to. Defaults to B<123>.
5410
5411 =item B<ReverseLookups> B<true>|B<false>
5412
5413 Sets whether or not to perform reverse lookups on peers. Since the name or
5414 IP-address may be used in a filename it is recommended to disable reverse
5415 lookups. The default is to do reverse lookups to preserve backwards
5416 compatibility, though.
5417
5418 =item B<IncludeUnitID> B<true>|B<false>
5419
5420 When a peer is a refclock, include the unit ID in the I<type instance>.
5421 Defaults to B<false> for backward compatibility.
5422
5423 If two refclock peers use the same driver and this is B<false>, the plugin will
5424 try to write simultaneous measurements from both to the same type instance.
5425 This will result in error messages in the log and only one set of measurements
5426 making it through.
5427
5428 =back
5429
5430 =head2 Plugin C<nut>
5431
5432 =over 4
5433
5434 =item B<UPS> I<upsname>B<@>I<hostname>[B<:>I<port>]
5435
5436 Add a UPS to collect data from. The format is identical to the one accepted by
5437 L<upsc(8)>.
5438
5439 =item B<ForceSSL> B<true>|B<false>
5440
5441 Stops connections from falling back to unsecured if an SSL connection
5442 cannot be established. Defaults to false if undeclared.
5443
5444 =item B<VerifyPeer> I<true>|I<false>
5445
5446 If set to true, requires a CAPath be provided. Will use the CAPath to find
5447 certificates to use as Trusted Certificates to validate a upsd server certificate.
5448 If validation of the upsd server certificate fails, the connection will not be
5449 established. If ForceSSL is undeclared or set to false, setting VerifyPeer to true
5450 will override and set ForceSSL to true.
5451
5452 =item B<CAPath> I/path/to/certs/folder
5453
5454 If VerifyPeer is set to true, this is required. Otherwise this is ignored.
5455 The folder pointed at must contain certificate(s) named according to their hash.
5456 Ex: XXXXXXXX.Y where X is the hash value of a cert and Y is 0. If name collisions
5457 occur because two different certs have the same hash value, Y can be  incremented
5458 in order to avoid conflict. To create a symbolic link to a certificate the following
5459 command can be used from within the directory where the cert resides:
5460
5461 C<ln -s some.crt ./$(openssl x509 -hash -noout -in some.crt).0>
5462
5463 Alternatively, the package openssl-perl provides a command C<c_rehash> that will
5464 generate links like the one described above for ALL certs in a given folder.
5465 Example usage:
5466 C<c_rehash /path/to/certs/folder>
5467
5468 =item B<ConnectTimeout> I<Milliseconds>
5469
5470 The B<ConnectTimeout> option sets the connect timeout, in milliseconds.
5471 By default, the configured B<Interval> is used to set the timeout.
5472
5473 =back
5474
5475 =head2 Plugin C<olsrd>
5476
5477 The I<olsrd> plugin connects to the TCP port opened by the I<txtinfo> plugin of
5478 the Optimized Link State Routing daemon and reads information about the current
5479 state of the meshed network.
5480
5481 The following configuration options are understood:
5482
5483 =over 4
5484
5485 =item B<Host> I<Host>
5486
5487 Connect to I<Host>. Defaults to B<"localhost">.
5488
5489 =item B<Port> I<Port>
5490
5491 Specifies the port to connect to. This must be a string, even if you give the
5492 port as a number rather than a service name. Defaults to B<"2006">.
5493
5494 =item B<CollectLinks> B<No>|B<Summary>|B<Detail>
5495
5496 Specifies what information to collect about links, i.E<nbsp>e. direct
5497 connections of the daemon queried. If set to B<No>, no information is
5498 collected. If set to B<Summary>, the number of links and the average of all
5499 I<link quality> (LQ) and I<neighbor link quality> (NLQ) values is calculated.
5500 If set to B<Detail> LQ and NLQ are collected per link.
5501
5502 Defaults to B<Detail>.
5503
5504 =item B<CollectRoutes> B<No>|B<Summary>|B<Detail>
5505
5506 Specifies what information to collect about routes of the daemon queried. If
5507 set to B<No>, no information is collected. If set to B<Summary>, the number of
5508 routes and the average I<metric> and I<ETX> is calculated. If set to B<Detail>
5509 metric and ETX are collected per route.
5510
5511 Defaults to B<Summary>.
5512
5513 =item B<CollectTopology> B<No>|B<Summary>|B<Detail>
5514
5515 Specifies what information to collect about the global topology. If set to
5516 B<No>, no information is collected. If set to B<Summary>, the number of links
5517 in the entire topology and the average I<link quality> (LQ) is calculated.
5518 If set to B<Detail> LQ and NLQ are collected for each link in the entire topology.
5519
5520 Defaults to B<Summary>.
5521
5522 =back
5523
5524 =head2 Plugin C<onewire>
5525
5526 B<EXPERIMENTAL!> See notes below.
5527
5528 The C<onewire> plugin uses the B<owcapi> library from the B<owfs> project
5529 L<http://owfs.org/> to read sensors connected via the onewire bus.
5530
5531 It can be used in two possible modes - standard or advanced.
5532
5533 In the standard mode only temperature sensors (sensors with the family code
5534 C<10>, C<22> and C<28> - e.g. DS1820, DS18S20, DS1920) can be read. If you have
5535 other sensors you would like to have included, please send a sort request to
5536 the mailing list. You can select sensors to be read or to be ignored depending
5537 on the option B<IgnoreSelected>). When no list is provided the whole bus is
5538 walked and all sensors are read.
5539
5540 Hubs (the DS2409 chips) are working, but read the note, why this plugin is
5541 experimental, below.
5542
5543 In the advanced mode you can configure any sensor to be read (only numerical
5544 value) using full OWFS path (e.g. "/uncached/10.F10FCA000800/temperature").
5545 In this mode you have to list all the sensors. Neither default bus walk nor
5546 B<IgnoreSelected> are used here. Address and type (file) is extracted from
5547 the path automatically and should produce compatible structure with the "standard"
5548 mode (basically the path is expected as for example
5549 "/uncached/10.F10FCA000800/temperature" where it would extract address part
5550 "F10FCA000800" and the rest after the slash is considered the type - here
5551 "temperature").
5552 There are two advantages to this mode - you can access virtually any sensor
5553 (not just temperature), select whether to use cached or directly read values
5554 and it is slighlty faster. The downside is more complex configuration.
5555
5556 The two modes are distinguished automatically by the format of the address.
5557 It is not possible to mix the two modes. Once a full path is detected in any
5558 B<Sensor> then the whole addressing (all sensors) is considered to be this way
5559 (and as standard addresses will fail parsing they will be ignored).
5560
5561 =over 4
5562
5563 =item B<Device> I<Device>
5564
5565 Sets the device to read the values from. This can either be a "real" hardware
5566 device, such as a serial port or an USB port, or the address of the
5567 L<owserver(1)> socket, usually B<localhost:4304>.
5568
5569 Though the documentation claims to automatically recognize the given address
5570 format, with versionE<nbsp>2.7p4 we had to specify the type explicitly. So
5571 with that version, the following configuration worked for us:
5572
5573   <Plugin onewire>
5574     Device "-s localhost:4304"
5575   </Plugin>
5576
5577 This directive is B<required> and does not have a default value.
5578
5579 =item B<Sensor> I<Sensor>
5580
5581 In the standard mode selects sensors to collect or to ignore
5582 (depending on B<IgnoreSelected>, see below). Sensors are specified without
5583 the family byte at the beginning, so you have to use for example C<F10FCA000800>,
5584 and B<not> include the leading C<10.> family byte and point.
5585 When no B<Sensor> is configured the whole Onewire bus is walked and all supported
5586 sensors (see above) are read.
5587
5588 In the advanced mode the B<Sensor> specifies full OWFS path - e.g.
5589 C</uncached/10.F10FCA000800/temperature> (or when cached values are OK
5590 C</10.F10FCA000800/temperature>). B<IgnoreSelected> is not used.
5591
5592 As there can be multiple devices on the bus you can list multiple sensor (use
5593 multiple B<Sensor> elements).
5594
5595 See F</"IGNORELISTS"> for details.
5596
5597 =item B<IgnoreSelected> I<true>|I<false>
5598
5599 If no configuration is given, the B<onewire> plugin will collect data from all
5600 sensors found. This may not be practical, especially if sensors are added and
5601 removed regularly. Sometimes, however, it's easier/preferred to collect only
5602 specific sensors or all sensors I<except> a few specified ones. This option
5603 enables you to do that: By setting B<IgnoreSelected> to I<true> the effect of
5604 B<Sensor> is inverted: All selected interfaces are ignored and all other
5605 interfaces are collected.
5606
5607 Used only in the standard mode - see above.
5608
5609 =item B<Interval> I<Seconds>
5610
5611 Sets the interval in which all sensors should be read. If not specified, the
5612 global B<Interval> setting is used.
5613
5614 =back
5615
5616 B<EXPERIMENTAL!> The C<onewire> plugin is experimental, because it doesn't yet
5617 work with big setups. It works with one sensor being attached to one
5618 controller, but as soon as you throw in a couple more senors and maybe a hub
5619 or two, reading all values will take more than ten seconds (the default
5620 interval). We will probably add some separate thread for reading the sensors
5621 and some cache or something like that, but it's not done yet. We will try to
5622 maintain backwards compatibility in the future, but we can't promise. So in
5623 short: If it works for you: Great! But keep in mind that the config I<might>
5624 change, though this is unlikely. Oh, and if you want to help improving this
5625 plugin, just send a short notice to the mailing list. ThanksE<nbsp>:)
5626
5627 =head2 Plugin C<openldap>
5628
5629 To use the C<openldap> plugin you first need to configure the I<OpenLDAP>
5630 server correctly. The backend database C<monitor> needs to be loaded and
5631 working. See slapd-monitor(5) for the details.
5632
5633 The configuration of the C<openldap> plugin consists of one or more B<Instance>
5634 blocks. Each block requires one string argument as the instance name. For
5635 example:
5636
5637  <Plugin "openldap">
5638    <Instance "foo">
5639      URL "ldap://localhost/"
5640    </Instance>
5641    <Instance "bar">
5642      URL "ldaps://localhost/"
5643    </Instance>
5644  </Plugin>
5645
5646 The instance name will be used as the I<plugin instance>. To emulate the old
5647 (versionE<nbsp>4) behavior, you can use an empty string (""). In order for the
5648 plugin to work correctly, each instance name must be unique. This is not
5649 enforced by the plugin and it is your responsibility to ensure it is.
5650
5651 The following options are accepted within each B<Instance> block:
5652
5653 =over 4
5654
5655 =item B<URL> I<ldap://host/binddn>
5656
5657 Sets the URL to use to connect to the I<OpenLDAP> server. This option is
5658 I<mandatory>.
5659
5660 =item B<BindDN> I<BindDN>
5661
5662 Name in the form of an LDAP distinguished name intended to be used for
5663 authentication. Defaults to empty string to establish an anonymous authorization.
5664
5665 =item B<Password> I<Password>
5666
5667 Password for simple bind authentication. If this option is not set,
5668 unauthenticated bind operation is used.
5669
5670 =item B<StartTLS> B<true|false>
5671
5672 Defines whether TLS must be used when connecting to the I<OpenLDAP> server.
5673 Disabled by default.
5674
5675 =item B<VerifyHost> B<true|false>
5676
5677 Enables or disables peer host name verification. If enabled, the plugin checks
5678 if the C<Common Name> or a C<Subject Alternate Name> field of the SSL
5679 certificate matches the host name provided by the B<URL> option. If this
5680 identity check fails, the connection is aborted. Enabled by default.
5681
5682 =item B<CACert> I<File>
5683
5684 File that holds one or more SSL certificates. If you want to use TLS/SSL you
5685 may possibly need this option. What CA certificates are checked by default
5686 depends on the distribution you use and can be changed with the usual ldap
5687 client configuration mechanisms. See ldap.conf(5) for the details.
5688
5689 =item B<Timeout> I<Seconds>
5690
5691 Sets the timeout value for ldap operations, in seconds. By default, the
5692 configured B<Interval> is used to set the timeout. Use B<-1> to disable
5693 (infinite timeout).
5694
5695 =item B<Version> I<Version>
5696
5697 An integer which sets the LDAP protocol version number to use when connecting
5698 to the I<OpenLDAP> server. Defaults to B<3> for using I<LDAPv3>.
5699
5700 =back
5701
5702 =head2 Plugin C<openvpn>
5703
5704 The OpenVPN plugin reads a status file maintained by OpenVPN and gathers
5705 traffic statistics about connected clients.
5706
5707 To set up OpenVPN to write to the status file periodically, use the
5708 B<--status> option of OpenVPN.
5709
5710 So, in a nutshell you need:
5711
5712   openvpn $OTHER_OPTIONS \
5713     --status "/var/run/openvpn-status" 10
5714
5715 Available options:
5716
5717 =over 4
5718
5719 =item B<StatusFile> I<File>
5720
5721 Specifies the location of the status file.
5722
5723 =item B<ImprovedNamingSchema> B<true>|B<false>
5724
5725 When enabled, the filename of the status file will be used as plugin instance
5726 and the client's "common name" will be used as type instance. This is required
5727 when reading multiple status files. Enabling this option is recommended, but to
5728 maintain backwards compatibility this option is disabled by default.
5729
5730 =item B<CollectCompression> B<true>|B<false>
5731
5732 Sets whether or not statistics about the compression used by OpenVPN should be
5733 collected. This information is only available in I<single> mode. Enabled by
5734 default.
5735
5736 =item B<CollectIndividualUsers> B<true>|B<false>
5737
5738 Sets whether or not traffic information is collected for each connected client
5739 individually. If set to false, currently no traffic data is collected at all
5740 because aggregating this data in a save manner is tricky. Defaults to B<true>.
5741
5742 =item B<CollectUserCount> B<true>|B<false>
5743
5744 When enabled, the number of currently connected clients or users is collected.
5745 This is especially interesting when B<CollectIndividualUsers> is disabled, but
5746 can be configured independently from that option. Defaults to B<false>.
5747
5748 =back
5749
5750 =head2 Plugin C<oracle>
5751
5752 The "oracle" plugin uses the Oracle® Call Interface I<(OCI)> to connect to an
5753 Oracle® Database and lets you execute SQL statements there. It is very similar
5754 to the "dbi" plugin, because it was written around the same time. See the "dbi"
5755 plugin's documentation above for details.
5756
5757   <Plugin oracle>
5758     <Query "out_of_stock">
5759       Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category"
5760       <Result>
5761         Type "gauge"
5762         # InstancePrefix "foo"
5763         InstancesFrom "category"
5764         ValuesFrom "value"
5765       </Result>
5766     </Query>
5767     <Database "product_information">
5768       ConnectID "db01"
5769       Username "oracle"
5770       Password "secret"
5771       Query "out_of_stock"
5772     </Database>
5773   </Plugin>
5774
5775 =head3 B<Query> blocks
5776
5777 The Query blocks are handled identically to the Query blocks of the "dbi"
5778 plugin. Please see its documentation above for details on how to specify
5779 queries.
5780
5781 =head3 B<Database> blocks
5782
5783 Database blocks define a connection to a database and which queries should be
5784 sent to that database. Each database needs a "name" as string argument in the
5785 starting tag of the block. This name will be used as "PluginInstance" in the
5786 values submitted to the daemon. Other than that, that name is not used.
5787
5788 =over 4
5789
5790 =item B<ConnectID> I<ID>
5791
5792 Defines the "database alias" or "service name" to connect to. Usually, these
5793 names are defined in the file named C<$ORACLE_HOME/network/admin/tnsnames.ora>.
5794
5795 =item B<Host> I<Host>
5796
5797 Hostname to use when dispatching values for this database. Defaults to using
5798 the global hostname of the I<collectd> instance.
5799
5800 =item B<Username> I<Username>
5801
5802 Username used for authentication.
5803
5804 =item B<Password> I<Password>
5805
5806 Password used for authentication.
5807
5808 =item B<Query> I<QueryName>
5809
5810 Associates the query named I<QueryName> with this database connection. The
5811 query needs to be defined I<before> this statement, i.E<nbsp>e. all query
5812 blocks you want to refer to must be placed above the database block you want to
5813 refer to them from.
5814
5815 =back
5816
5817 =head2 Plugin C<ovs_events>
5818
5819 The I<ovs_events> plugin monitors the link status of I<Open vSwitch> (OVS)
5820 connected interfaces, dispatches the values to collectd and sends the
5821 notification whenever the link state change occurs. This plugin uses OVS
5822 database to get a link state change notification.
5823
5824 B<Synopsis:>
5825
5826  <Plugin "ovs_events">
5827    Port 6640
5828    Address "127.0.0.1"
5829    Socket "/var/run/openvswitch/db.sock"
5830    Interfaces "br0" "veth0"
5831    SendNotification true
5832    DispatchValues false
5833  </Plugin>
5834
5835 The plugin provides the following configuration options:
5836
5837 =over 4
5838
5839 =item B<Address> I<node>
5840
5841 The address of the OVS DB server JSON-RPC interface used by the plugin. To
5842 enable the interface, OVS DB daemon should be running with C<--remote=ptcp:>
5843 option. See L<ovsdb-server(1)> for more details. The option may be either
5844 network hostname, IPv4 numbers-and-dots notation or IPv6 hexadecimal string
5845 format. Defaults to B<'localhost'>.
5846
5847 =item B<Port> I<service>
5848
5849 TCP-port to connect to. Either a service name or a port number may be given.
5850 Defaults to B<6640>.
5851
5852 =item B<Socket> I<path>
5853
5854 The UNIX domain socket path of OVS DB server JSON-RPC interface used by the
5855 plugin. To enable the interface, the OVS DB daemon should be running with
5856 C<--remote=punix:> option. See L<ovsdb-server(1)> for more details. If this
5857 option is set, B<Address> and B<Port> options are ignored.
5858
5859 =item B<Interfaces> [I<ifname> ...]
5860
5861 List of interface names to be monitored by this plugin. If this option is not
5862 specified or is empty then all OVS connected interfaces on all bridges are
5863 monitored.
5864
5865 Default: empty (all interfaces on all bridges are monitored)
5866
5867 =item B<SendNotification> I<true|false>
5868
5869 If set to true, OVS link notifications (interface status and OVS DB connection
5870 terminate) are sent to collectd. Default value is true.
5871
5872 =item B<DispatchValues> I<true|false>
5873
5874 Dispatch the OVS DB interface link status value with configured plugin interval.
5875 Defaults to false. Please note, if B<SendNotification> and B<DispatchValues>
5876 options are false, no OVS information will be provided by the plugin.
5877
5878 =back
5879
5880 B<Note:> By default, the global interval setting is used within which to
5881 retrieve the OVS link status. To configure a plugin-specific interval, please
5882 use B<Interval> option of the OVS B<LoadPlugin> block settings. For milliseconds
5883 simple divide the time by 1000 for example if the desired interval is 50ms, set
5884 interval to 0.05.
5885
5886 =head2 Plugin C<ovs_stats>
5887
5888 The I<ovs_stats> plugin collects statistics of OVS connected interfaces.
5889 This plugin uses OVSDB management protocol (RFC7047) monitor mechanism to get
5890 statistics from OVSDB
5891
5892 B<Synopsis:>
5893
5894  <Plugin "ovs_stats">
5895    Port 6640
5896    Address "127.0.0.1"
5897    Socket "/var/run/openvswitch/db.sock"
5898    Bridges "br0" "br_ext"
5899  </Plugin>
5900
5901 The plugin provides the following configuration options:
5902
5903 =over 4
5904
5905 =item B<Address> I<node>
5906
5907 The address of the OVS DB server JSON-RPC interface used by the plugin. To
5908 enable the interface, OVS DB daemon should be running with C<--remote=ptcp:>
5909 option. See L<ovsdb-server(1)> for more details. The option may be either
5910 network hostname, IPv4 numbers-and-dots notation or IPv6 hexadecimal string
5911 format. Defaults to B<'localhost'>.
5912
5913 =item B<Port> I<service>
5914
5915 TCP-port to connect to. Either a service name or a port number may be given.
5916 Defaults to B<6640>.
5917
5918 =item B<Socket> I<path>
5919
5920 The UNIX domain socket path of OVS DB server JSON-RPC interface used by the
5921 plugin. To enable the interface, the OVS DB daemon should be running with
5922 C<--remote=punix:> option. See L<ovsdb-server(1)> for more details. If this
5923 option is set, B<Address> and B<Port> options are ignored.
5924
5925 =item B<Bridges> [I<brname> ...]
5926
5927 List of OVS bridge names to be monitored by this plugin. If this option is
5928 omitted or is empty then all OVS bridges will be monitored.
5929
5930 Default: empty (monitor all bridges)
5931
5932 =back
5933
5934 =head2 Plugin C<perl>
5935
5936 This plugin embeds a Perl-interpreter into collectd and provides an interface
5937 to collectd's plugin system. See L<collectd-perl(5)> for its documentation.
5938
5939 =head2 Plugin C<pinba>
5940
5941 The I<Pinba plugin> receives profiling information from I<Pinba>, an extension
5942 for the I<PHP> interpreter. At the end of executing a script, i.e. after a
5943 PHP-based webpage has been delivered, the extension will send a UDP packet
5944 containing timing information, peak memory usage and so on. The plugin will
5945 wait for such packets, parse them and account the provided information, which
5946 is then dispatched to the daemon once per interval.
5947
5948 Synopsis:
5949
5950  <Plugin pinba>
5951    Address "::0"
5952    Port "30002"
5953    # Overall statistics for the website.
5954    <View "www-total">
5955      Server "www.example.com"
5956    </View>
5957    # Statistics for www-a only
5958    <View "www-a">
5959      Host "www-a.example.com"
5960      Server "www.example.com"
5961    </View>
5962    # Statistics for www-b only
5963    <View "www-b">
5964      Host "www-b.example.com"
5965      Server "www.example.com"
5966    </View>
5967  </Plugin>
5968
5969 The plugin provides the following configuration options:
5970
5971 =over 4
5972
5973 =item B<Address> I<Node>
5974
5975 Configures the address used to open a listening socket. By default, plugin will
5976 bind to the I<any> address C<::0>.
5977
5978 =item B<Port> I<Service>
5979
5980 Configures the port (service) to bind to. By default the default Pinba port
5981 "30002" will be used. The option accepts service names in addition to port
5982 numbers and thus requires a I<string> argument.
5983
5984 =item E<lt>B<View> I<Name>E<gt> block
5985
5986 The packets sent by the Pinba extension include the hostname of the server, the
5987 server name (the name of the virtual host) and the script that was executed.
5988 Using B<View> blocks it is possible to separate the data into multiple groups
5989 to get more meaningful statistics. Each packet is added to all matching groups,
5990 so that a packet may be accounted for more than once.
5991
5992 =over 4
5993
5994 =item B<Host> I<Host>
5995
5996 Matches the hostname of the system the webserver / script is running on. This
5997 will contain the result of the L<gethostname(2)> system call. If not
5998 configured, all hostnames will be accepted.
5999
6000 =item B<Server> I<Server>
6001
6002 Matches the name of the I<virtual host>, i.e. the contents of the
6003 C<$_SERVER["SERVER_NAME"]> variable when within PHP. If not configured, all
6004 server names will be accepted.
6005
6006 =item B<Script> I<Script>
6007
6008 Matches the name of the I<script name>, i.e. the contents of the
6009 C<$_SERVER["SCRIPT_NAME"]> variable when within PHP. If not configured, all
6010 script names will be accepted.
6011
6012 =back
6013
6014 =back
6015
6016 =head2 Plugin C<ping>
6017
6018 The I<Ping> plugin starts a new thread which sends ICMP "ping" packets to the
6019 configured hosts periodically and measures the network latency. Whenever the
6020 C<read> function of the plugin is called, it submits the average latency, the
6021 standard deviation and the drop rate for each host.
6022
6023 Available configuration options:
6024
6025 =over 4
6026
6027 =item B<Host> I<IP-address>
6028
6029 Host to ping periodically. This option may be repeated several times to ping
6030 multiple hosts.
6031
6032 =item B<Interval> I<Seconds>
6033
6034 Sets the interval in which to send ICMP echo packets to the configured hosts.
6035 This is B<not> the interval in which metrics are read from the plugin but the
6036 interval in which the hosts are "pinged". Therefore, the setting here should be
6037 smaller than or equal to the global B<Interval> setting. Fractional times, such
6038 as "1.24" are allowed.
6039
6040 Default: B<1.0>
6041
6042 =item B<Timeout> I<Seconds>
6043
6044 Time to wait for a response from the host to which an ICMP packet had been
6045 sent. If a reply was not received after I<Seconds> seconds, the host is assumed
6046 to be down or the packet to be dropped. This setting must be smaller than the
6047 B<Interval> setting above for the plugin to work correctly. Fractional
6048 arguments are accepted.
6049
6050 Default: B<0.9>
6051
6052 =item B<TTL> I<0-255>
6053
6054 Sets the Time-To-Live of generated ICMP packets.
6055
6056 =item B<Size> I<size>
6057
6058 Sets the size of the data payload in ICMP packet to specified I<size> (it
6059 will be filled with regular ASCII pattern). If not set, default 56 byte
6060 long string is used so that the packet size of an ICMPv4 packet is exactly
6061 64 bytes, similar to the behaviour of normal ping(1) command.
6062
6063 =item B<SourceAddress> I<host>
6064
6065 Sets the source address to use. I<host> may either be a numerical network
6066 address or a network hostname.
6067
6068 =item B<Device> I<name>
6069
6070 Sets the outgoing network device to be used. I<name> has to specify an
6071 interface name (e.E<nbsp>g. C<eth0>). This might not be supported by all
6072 operating systems.
6073
6074 =item B<MaxMissed> I<Packets>
6075
6076 Trigger a DNS resolve after the host has not replied to I<Packets> packets. This
6077 enables the use of dynamic DNS services (like dyndns.org) with the ping plugin.
6078
6079 Default: B<-1> (disabled)
6080
6081 =back
6082
6083 =head2 Plugin C<postgresql>
6084
6085 The C<postgresql> plugin queries statistics from PostgreSQL databases. It
6086 keeps a persistent connection to all configured databases and tries to
6087 reconnect if the connection has been interrupted. A database is configured by
6088 specifying a B<Database> block as described below. The default statistics are
6089 collected from PostgreSQL's B<statistics collector> which thus has to be
6090 enabled for this plugin to work correctly. This should usually be the case by
6091 default. See the section "The Statistics Collector" of the B<PostgreSQL
6092 Documentation> for details.
6093
6094 By specifying custom database queries using a B<Query> block as described
6095 below, you may collect any data that is available from some PostgreSQL
6096 database. This way, you are able to access statistics of external daemons
6097 which are available in a PostgreSQL database or use future or special
6098 statistics provided by PostgreSQL without the need to upgrade your collectd
6099 installation.
6100
6101 Starting with version 5.2, the C<postgresql> plugin supports writing data to
6102 PostgreSQL databases as well. This has been implemented in a generic way. You
6103 need to specify an SQL statement which will then be executed by collectd in
6104 order to write the data (see below for details). The benefit of that approach
6105 is that there is no fixed database layout. Rather, the layout may be optimized
6106 for the current setup.
6107
6108 The B<PostgreSQL Documentation> manual can be found at
6109 L<http://www.postgresql.org/docs/manuals/>.
6110
6111   <Plugin postgresql>
6112     <Query magic>
6113       Statement "SELECT magic FROM wizard WHERE host = $1;"
6114       Param hostname
6115       <Result>
6116         Type gauge
6117         InstancePrefix "magic"
6118         ValuesFrom magic
6119       </Result>
6120     </Query>
6121
6122     <Query rt36_tickets>
6123       Statement "SELECT COUNT(type) AS count, type \
6124                         FROM (SELECT CASE \
6125                                      WHEN resolved = 'epoch' THEN 'open' \
6126                                      ELSE 'resolved' END AS type \
6127                                      FROM tickets) type \
6128                         GROUP BY type;"
6129       <Result>
6130         Type counter
6131         InstancePrefix "rt36_tickets"
6132         InstancesFrom "type"
6133         ValuesFrom "count"
6134       </Result>
6135     </Query>
6136
6137     <Writer sqlstore>
6138       Statement "SELECT collectd_insert($1, $2, $3, $4, $5, $6, $7, $8, $9);"
6139       StoreRates true
6140     </Writer>
6141
6142     <Database foo>
6143       Host "hostname"
6144       Port "5432"
6145       User "username"
6146       Password "secret"
6147       SSLMode "prefer"
6148       KRBSrvName "kerberos_service_name"
6149       Query magic
6150     </Database>
6151
6152     <Database bar>
6153       Interval 300
6154       Service "service_name"
6155       Query backend # predefined
6156       Query rt36_tickets
6157     </Database>
6158
6159     <Database qux>
6160       # ...
6161       Writer sqlstore
6162       CommitInterval 10
6163     </Database>
6164   </Plugin>
6165
6166 The B<Query> block defines one database query which may later be used by a
6167 database definition. It accepts a single mandatory argument which specifies
6168 the name of the query. The names of all queries have to be unique (see the
6169 B<MinVersion> and B<MaxVersion> options below for an exception to this
6170 rule).
6171
6172 In each B<Query> block, there is one or more B<Result> blocks. Multiple
6173 B<Result> blocks may be used to extract multiple values from a single query.
6174
6175 The following configuration options are available to define the query:
6176
6177 =over 4
6178
6179 =item B<Statement> I<sql query statement>
6180
6181 Specify the I<sql query statement> which the plugin should execute. The string
6182 may contain the tokens B<$1>, B<$2>, etc. which are used to reference the
6183 first, second, etc. parameter. The value of the parameters is specified by the
6184 B<Param> configuration option - see below for details. To include a literal
6185 B<$> character followed by a number, surround it with single quotes (B<'>).
6186
6187 Any SQL command which may return data (such as C<SELECT> or C<SHOW>) is
6188 allowed. Note, however, that only a single command may be used. Semicolons are
6189 allowed as long as a single non-empty command has been specified only.
6190
6191 The returned lines will be handled separately one after another.
6192
6193 =item B<Param> I<hostname>|I<database>|I<instance>|I<username>|I<interval>
6194
6195 Specify the parameters which should be passed to the SQL query. The parameters
6196 are referred to in the SQL query as B<$1>, B<$2>, etc. in the same order as
6197 they appear in the configuration file. The value of the parameter is
6198 determined depending on the value of the B<Param> option as follows:
6199
6200 =over 4
6201
6202 =item I<hostname>
6203
6204 The configured hostname of the database connection. If a UNIX domain socket is
6205 used, the parameter expands to "localhost".
6206
6207 =item I<database>
6208
6209 The name of the database of the current connection.
6210
6211 =item I<instance>
6212
6213 The name of the database plugin instance. See the B<Instance> option of the
6214 database specification below for details.
6215
6216 =item I<username>
6217
6218 The username used to connect to the database.
6219
6220 =item I<interval>
6221
6222 The interval with which this database is queried (as specified by the database
6223 specific or global B<Interval> options).
6224
6225 =back
6226
6227 Please note that parameters are only supported by PostgreSQL's protocol
6228 version 3 and above which was introduced in version 7.4 of PostgreSQL.
6229
6230 =item B<PluginInstanceFrom> I<column>
6231
6232 Specify how to create the "PluginInstance" for reporting this query results.
6233 Only one column is supported. You may concatenate fields and string values in
6234 the query statement to get the required results.
6235
6236 =item B<MinVersion> I<version>
6237
6238 =item B<MaxVersion> I<version>
6239
6240 Specify the minimum or maximum version of PostgreSQL that this query should be
6241 used with. Some statistics might only be available with certain versions of
6242 PostgreSQL. This allows you to specify multiple queries with the same name but
6243 which apply to different versions, thus allowing you to use the same
6244 configuration in a heterogeneous environment.
6245
6246 The I<version> has to be specified as the concatenation of the major, minor
6247 and patch-level versions, each represented as two-decimal-digit numbers. For
6248 example, version 8.2.3 will become 80203.
6249
6250 =back
6251
6252 The B<Result> block defines how to handle the values returned from the query.
6253 It defines which column holds which value and how to dispatch that value to
6254 the daemon.
6255
6256 =over 4
6257
6258 =item B<Type> I<type>
6259
6260 The I<type> name to be used when dispatching the values. The type describes
6261 how to handle the data and where to store it. See L<types.db(5)> for more
6262 details on types and their configuration. The number and type of values (as
6263 selected by the B<ValuesFrom> option) has to match the type of the given name.
6264
6265 This option is mandatory.
6266
6267 =item B<InstancePrefix> I<prefix>
6268
6269 =item B<InstancesFrom> I<column0> [I<column1> ...]
6270
6271 Specify how to create the "TypeInstance" for each data set (i.E<nbsp>e. line).
6272 B<InstancePrefix> defines a static prefix that will be prepended to all type
6273 instances. B<InstancesFrom> defines the column names whose values will be used
6274 to create the type instance. Multiple values will be joined together using the
6275 hyphen (C<->) as separation character.
6276
6277 The plugin itself does not check whether or not all built instances are
6278 different. It is your responsibility to assure that each is unique.
6279
6280 Both options are optional. If none is specified, the type instance will be
6281 empty.
6282
6283 =item B<ValuesFrom> I<column0> [I<column1> ...]
6284
6285 Names the columns whose content is used as the actual data for the data sets
6286 that are dispatched to the daemon. How many such columns you need is
6287 determined by the B<Type> setting as explained above. If you specify too many
6288 or not enough columns, the plugin will complain about that and no data will be
6289 submitted to the daemon.
6290
6291 The actual data type, as seen by PostgreSQL, is not that important as long as
6292 it represents numbers. The plugin will automatically cast the values to the
6293 right type if it know how to do that. For that, it uses the L<strtoll(3)> and
6294 L<strtod(3)> functions, so anything supported by those functions is supported
6295 by the plugin as well.
6296
6297 This option is required inside a B<Result> block and may be specified multiple
6298 times. If multiple B<ValuesFrom> options are specified, the columns are read
6299 in the given order.
6300
6301 =back
6302
6303 The following predefined queries are available (the definitions can be found
6304 in the F<postgresql_default.conf> file which, by default, is available at
6305 C<I<prefix>/share/collectd/>):
6306
6307 =over 4
6308
6309 =item B<backends>
6310
6311 This query collects the number of backends, i.E<nbsp>e. the number of
6312 connected clients.
6313
6314 =item B<transactions>
6315
6316 This query collects the numbers of committed and rolled-back transactions of
6317 the user tables.
6318
6319 =item B<queries>
6320
6321 This query collects the numbers of various table modifications (i.E<nbsp>e.
6322 insertions, updates, deletions) of the user tables.
6323
6324 =item B<query_plans>
6325
6326 This query collects the numbers of various table scans and returned tuples of
6327 the user tables.
6328
6329 =item B<table_states>
6330
6331 This query collects the numbers of live and dead rows in the user tables.
6332
6333 =item B<disk_io>
6334
6335 This query collects disk block access counts for user tables.
6336
6337 =item B<disk_usage>
6338
6339 This query collects the on-disk size of the database in bytes.
6340
6341 =back
6342
6343 In addition, the following detailed queries are available by default. Please
6344 note that each of those queries collects information B<by table>, thus,
6345 potentially producing B<a lot> of data. For details see the description of the
6346 non-by_table queries above.
6347
6348 =over 4
6349
6350 =item B<queries_by_table>
6351
6352 =item B<query_plans_by_table>
6353
6354 =item B<table_states_by_table>
6355
6356 =item B<disk_io_by_table>
6357
6358 =back
6359
6360 The B<Writer> block defines a PostgreSQL writer backend. It accepts a single
6361 mandatory argument specifying the name of the writer. This will then be used
6362 in the B<Database> specification in order to activate the writer instance. The
6363 names of all writers have to be unique. The following options may be
6364 specified:
6365
6366 =over 4
6367
6368 =item B<Statement> I<sql statement>
6369
6370 This mandatory option specifies the SQL statement that will be executed for
6371 each submitted value. A single SQL statement is allowed only. Anything after
6372 the first semicolon will be ignored.
6373
6374 Nine parameters will be passed to the statement and should be specified as
6375 tokens B<$1>, B<$2>, through B<$9> in the statement string. The following
6376 values are made available through those parameters:
6377
6378 =over 4
6379
6380 =item B<$1>
6381
6382 The timestamp of the queried value as an RFC 3339-formatted local time.
6383
6384 =item B<$2>
6385
6386 The hostname of the queried value.
6387
6388 =item B<$3>
6389
6390 The plugin name of the queried value.
6391
6392 =item B<$4>
6393
6394 The plugin instance of the queried value. This value may be B<NULL> if there
6395 is no plugin instance.
6396
6397 =item B<$5>
6398
6399 The type of the queried value (cf. L<types.db(5)>).
6400
6401 =item B<$6>
6402
6403 The type instance of the queried value. This value may be B<NULL> if there is
6404 no type instance.
6405
6406 =item B<$7>
6407
6408 An array of names for the submitted values (i.E<nbsp>e., the name of the data
6409 sources of the submitted value-list).
6410
6411 =item B<$8>
6412
6413 An array of types for the submitted values (i.E<nbsp>e., the type of the data
6414 sources of the submitted value-list; C<counter>, C<gauge>, ...). Note, that if
6415 B<StoreRates> is enabled (which is the default, see below), all types will be
6416 C<gauge>.
6417
6418 =item B<$9>
6419
6420 An array of the submitted values. The dimensions of the value name and value
6421 arrays match.
6422
6423 =back
6424
6425 In general, it is advisable to create and call a custom function in the
6426 PostgreSQL database for this purpose. Any procedural language supported by
6427 PostgreSQL will do (see chapter "Server Programming" in the PostgreSQL manual
6428 for details).
6429
6430 =item B<StoreRates> B<false>|B<true>
6431
6432 If set to B<true> (the default), convert counter values to rates. If set to
6433 B<false> counter values are stored as is, i.E<nbsp>e. as an increasing integer
6434 number.
6435
6436 =back
6437
6438 The B<Database> block defines one PostgreSQL database for which to collect
6439 statistics. It accepts a single mandatory argument which specifies the
6440 database name. None of the other options are required. PostgreSQL will use
6441 default values as documented in the section "CONNECTING TO A DATABASE" in the
6442 L<psql(1)> manpage. However, be aware that those defaults may be influenced by
6443 the user collectd is run as and special environment variables. See the manpage
6444 for details.
6445
6446 =over 4
6447
6448 =item B<Interval> I<seconds>
6449
6450 Specify the interval with which the database should be queried. The default is
6451 to use the global B<Interval> setting.
6452
6453 =item B<CommitInterval> I<seconds>
6454
6455 This option may be used for database connections which have "writers" assigned
6456 (see above). If specified, it causes a writer to put several updates into a
6457 single transaction. This transaction will last for the specified amount of
6458 time. By default, each update will be executed in a separate transaction. Each
6459 transaction generates a fair amount of overhead which can, thus, be reduced by
6460 activating this option. The draw-back is, that data covering the specified
6461 amount of time will be lost, for example, if a single statement within the
6462 transaction fails or if the database server crashes.
6463
6464 =item B<Instance> I<name>
6465
6466 Specify the plugin instance name that should be used instead of the database
6467 name (which is the default, if this option has not been specified). This
6468 allows one to query multiple databases of the same name on the same host (e.g.
6469 when running multiple database server versions in parallel).
6470 The plugin instance name can also be set from the query result using
6471 the B<PluginInstanceFrom> option in B<Query> block.
6472
6473 =item B<Host> I<hostname>
6474
6475 Specify the hostname or IP of the PostgreSQL server to connect to. If the
6476 value begins with a slash, it is interpreted as the directory name in which to
6477 look for the UNIX domain socket.
6478
6479 This option is also used to determine the hostname that is associated with a
6480 collected data set. If it has been omitted or either begins with with a slash
6481 or equals B<localhost> it will be replaced with the global hostname definition
6482 of collectd. Any other value will be passed literally to collectd when
6483 dispatching values. Also see the global B<Hostname> and B<FQDNLookup> options.
6484
6485 =item B<Port> I<port>
6486
6487 Specify the TCP port or the local UNIX domain socket file extension of the
6488 server.
6489
6490 =item B<User> I<username>
6491
6492 Specify the username to be used when connecting to the server.
6493
6494 =item B<Password> I<password>
6495
6496 Specify the password to be used when connecting to the server.
6497
6498 =item B<ExpireDelay> I<delay>
6499
6500 Skip expired values in query output.
6501
6502 =item B<SSLMode> I<disable>|I<allow>|I<prefer>|I<require>
6503
6504 Specify whether to use an SSL connection when contacting the server. The
6505 following modes are supported:
6506
6507 =over 4
6508
6509 =item I<disable>
6510
6511 Do not use SSL at all.
6512
6513 =item I<allow>
6514
6515 First, try to connect without using SSL. If that fails, try using SSL.
6516
6517 =item I<prefer> (default)
6518
6519 First, try to connect using SSL. If that fails, try without using SSL.
6520
6521 =item I<require>
6522
6523 Use SSL only.
6524
6525 =back
6526
6527 =item B<Instance> I<name>
6528
6529 Specify the plugin instance name that should be used instead of the database
6530 name (which is the default, if this option has not been specified). This
6531 allows one to query multiple databases of the same name on the same host (e.g.
6532 when running multiple database server versions in parallel).
6533
6534 =item B<KRBSrvName> I<kerberos_service_name>
6535
6536 Specify the Kerberos service name to use when authenticating with Kerberos 5
6537 or GSSAPI. See the sections "Kerberos authentication" and "GSSAPI" of the
6538 B<PostgreSQL Documentation> for details.
6539
6540 =item B<Service> I<service_name>
6541
6542 Specify the PostgreSQL service name to use for additional parameters. That
6543 service has to be defined in F<pg_service.conf> and holds additional
6544 connection parameters. See the section "The Connection Service File" in the
6545 B<PostgreSQL Documentation> for details.
6546
6547 =item B<Query> I<query>
6548
6549 Specifies a I<query> which should be executed in the context of the database
6550 connection. This may be any of the predefined or user-defined queries. If no
6551 such option is given, it defaults to "backends", "transactions", "queries",
6552 "query_plans", "table_states", "disk_io" and "disk_usage" (unless a B<Writer>
6553 has been specified). Else, the specified queries are used only.
6554
6555 =item B<Writer> I<writer>
6556
6557 Assigns the specified I<writer> backend to the database connection. This
6558 causes all collected data to be send to the database using the settings
6559 defined in the writer configuration (see the section "FILTER CONFIGURATION"
6560 below for details on how to selectively send data to certain plugins).
6561
6562 Each writer will register a flush callback which may be used when having long
6563 transactions enabled (see the B<CommitInterval> option above). When issuing
6564 the B<FLUSH> command (see L<collectd-unixsock(5)> for details) the current
6565 transaction will be committed right away. Two different kinds of flush
6566 callbacks are available with the C<postgresql> plugin:
6567
6568 =over 4
6569
6570 =item B<postgresql>
6571
6572 Flush all writer backends.
6573
6574 =item B<postgresql->I<database>
6575
6576 Flush all writers of the specified I<database> only.
6577
6578 =back
6579
6580 =back
6581
6582 =head2 Plugin C<powerdns>
6583
6584 The C<powerdns> plugin queries statistics from an authoritative PowerDNS
6585 nameserver and/or a PowerDNS recursor. Since both offer a wide variety of
6586 values, many of which are probably meaningless to most users, but may be useful
6587 for some. So you may chose which values to collect, but if you don't, some
6588 reasonable defaults will be collected.
6589
6590   <Plugin "powerdns">
6591     <Server "server_name">
6592       Collect "latency"
6593       Collect "udp-answers" "udp-queries"
6594       Socket "/var/run/pdns.controlsocket"
6595     </Server>
6596     <Recursor "recursor_name">
6597       Collect "questions"
6598       Collect "cache-hits" "cache-misses"
6599       Socket "/var/run/pdns_recursor.controlsocket"
6600     </Recursor>
6601     LocalSocket "/opt/collectd/var/run/collectd-powerdns"
6602   </Plugin>
6603
6604 =over 4
6605
6606 =item B<Server> and B<Recursor> block
6607
6608 The B<Server> block defines one authoritative server to query, the B<Recursor>
6609 does the same for an recursing server. The possible options in both blocks are
6610 the same, though. The argument defines a name for the serverE<nbsp>/ recursor
6611 and is required.
6612
6613 =over 4
6614
6615 =item B<Collect> I<Field>
6616
6617 Using the B<Collect> statement you can select which values to collect. Here,
6618 you specify the name of the values as used by the PowerDNS servers, e.E<nbsp>g.
6619 C<dlg-only-drops>, C<answers10-100>.
6620
6621 The method of getting the values differs for B<Server> and B<Recursor> blocks:
6622 When querying the server a C<SHOW *> command is issued in any case, because
6623 that's the only way of getting multiple values out of the server at once.
6624 collectd then picks out the values you have selected. When querying the
6625 recursor, a command is generated to query exactly these values. So if you
6626 specify invalid fields when querying the recursor, a syntax error may be
6627 returned by the daemon and collectd may not collect any values at all.
6628
6629 If no B<Collect> statement is given, the following B<Server> values will be
6630 collected:
6631
6632 =over 4
6633
6634 =item latency
6635
6636 =item packetcache-hit
6637
6638 =item packetcache-miss
6639
6640 =item packetcache-size
6641
6642 =item query-cache-hit
6643
6644 =item query-cache-miss
6645
6646 =item recursing-answers
6647
6648 =item recursing-questions
6649
6650 =item tcp-answers
6651
6652 =item tcp-queries
6653
6654 =item udp-answers
6655
6656 =item udp-queries
6657
6658 =back
6659
6660 The following B<Recursor> values will be collected by default:
6661
6662 =over 4
6663
6664 =item noerror-answers
6665
6666 =item nxdomain-answers
6667
6668 =item servfail-answers
6669
6670 =item sys-msec
6671
6672 =item user-msec
6673
6674 =item qa-latency
6675
6676 =item cache-entries
6677
6678 =item cache-hits
6679
6680 =item cache-misses
6681
6682 =item questions
6683
6684 =back
6685
6686 Please note that up to that point collectd doesn't know what values are
6687 available on the server and values that are added do not need a change of the
6688 mechanism so far. However, the values must be mapped to collectd's naming
6689 scheme, which is done using a lookup table that lists all known values. If
6690 values are added in the future and collectd does not know about them, you will
6691 get an error much like this:
6692
6693   powerdns plugin: submit: Not found in lookup table: foobar = 42
6694
6695 In this case please file a bug report with the collectd team.
6696
6697 =item B<Socket> I<Path>
6698
6699 Configures the path to the UNIX domain socket to be used when connecting to the
6700 daemon. By default C<${localstatedir}/run/pdns.controlsocket> will be used for
6701 an authoritative server and C<${localstatedir}/run/pdns_recursor.controlsocket>
6702 will be used for the recursor.
6703
6704 =back
6705
6706 =item B<LocalSocket> I<Path>
6707
6708 Querying the recursor is done using UDP. When using UDP over UNIX domain
6709 sockets, the client socket needs a name in the file system, too. You can set
6710 this local name to I<Path> using the B<LocalSocket> option. The default is
6711 C<I<prefix>/var/run/collectd-powerdns>.
6712
6713 =back
6714
6715 =head2 Plugin C<processes>
6716
6717 =over 4
6718
6719 =item B<Process> I<Name>
6720
6721 Select more detailed statistics of processes matching this name. The statistics
6722 collected for these selected processes are:
6723  - size of the resident segment size (RSS)
6724  - user- and system-time used
6725  - number of processes
6726  - number of threads
6727  - number of open files (under Linux)
6728  - io data (where available)
6729  - context switches (under Linux)
6730  - minor and major pagefaults.
6731
6732 Some platforms have a limit on the length of process names. I<Name> must stay
6733 below this limit.
6734
6735 =item B<ProcessMatch> I<name> I<regex>
6736
6737 Similar to the B<Process> option this allows one to select more detailed
6738 statistics of processes matching the specified I<regex> (see L<regex(7)> for
6739 details). The statistics of all matching processes are summed up and
6740 dispatched to the daemon using the specified I<name> as an identifier. This
6741 allows one to "group" several processes together. I<name> must not contain
6742 slashes.
6743
6744 =item B<CollectContextSwitch> I<Boolean>
6745
6746 Collect context switch of the process.
6747
6748 =back
6749
6750 =head2 Plugin C<protocols>
6751
6752 Collects a lot of information about various network protocols, such as I<IP>,
6753 I<TCP>, I<UDP>, etc.
6754
6755 Available configuration options:
6756
6757 =over 4
6758
6759 =item B<Value> I<Selector>
6760
6761 Selects whether or not to select a specific value. The string being matched is
6762 of the form "I<Protocol>:I<ValueName>", where I<Protocol> will be used as the
6763 plugin instance and I<ValueName> will be used as type instance. An example of
6764 the string being used would be C<Tcp:RetransSegs>.
6765
6766 You can use regular expressions to match a large number of values with just one
6767 configuration option. To select all "extended" I<TCP> values, you could use the
6768 following statement:
6769
6770   Value "/^TcpExt:/"
6771
6772 Whether only matched values are selected or all matched values are ignored
6773 depends on the B<IgnoreSelected>. By default, only matched values are selected.
6774 If no value is configured at all, all values will be selected.
6775
6776 See F</"IGNORELISTS"> for details.
6777
6778 =item B<IgnoreSelected> B<true>|B<false>
6779
6780 If set to B<true>, inverts the selection made by B<Value>, i.E<nbsp>e. all
6781 matching values will be ignored.
6782
6783 =back
6784
6785 =head2 Plugin C<python>
6786
6787 This plugin embeds a Python-interpreter into collectd and provides an interface
6788 to collectd's plugin system. See L<collectd-python(5)> for its documentation.
6789
6790 =head2 Plugin C<routeros>
6791
6792 The C<routeros> plugin connects to a device running I<RouterOS>, the
6793 Linux-based operating system for routers by I<MikroTik>. The plugin uses
6794 I<librouteros> to connect and reads information about the interfaces and
6795 wireless connections of the device. The configuration supports querying
6796 multiple routers:
6797
6798   <Plugin "routeros">
6799     <Router>
6800       Host "router0.example.com"
6801       User "collectd"
6802       Password "secr3t"
6803       CollectInterface true
6804       CollectCPULoad true
6805       CollectMemory true
6806     </Router>
6807     <Router>
6808       Host "router1.example.com"
6809       User "collectd"
6810       Password "5ecret"
6811       CollectInterface true
6812       CollectRegistrationTable true
6813       CollectDF true
6814       CollectDisk true
6815     </Router>
6816   </Plugin>
6817
6818 As you can see above, the configuration of the I<routeros> plugin consists of
6819 one or more B<E<lt>RouterE<gt>> blocks. Within each block, the following
6820 options are understood:
6821
6822 =over 4
6823
6824 =item B<Host> I<Host>
6825
6826 Hostname or IP-address of the router to connect to.
6827
6828 =item B<Port> I<Port>
6829
6830 Port name or port number used when connecting. If left unspecified, the default
6831 will be chosen by I<librouteros>, currently "8728". This option expects a
6832 string argument, even when a numeric port number is given.
6833
6834 =item B<User> I<User>
6835
6836 Use the user name I<User> to authenticate. Defaults to "admin".
6837
6838 =item B<Password> I<Password>
6839
6840 Set the password used to authenticate.
6841
6842 =item B<CollectInterface> B<true>|B<false>
6843
6844 When set to B<true>, interface statistics will be collected for all interfaces
6845 present on the device. Defaults to B<false>.
6846
6847 =item B<CollectRegistrationTable> B<true>|B<false>
6848
6849 When set to B<true>, information about wireless LAN connections will be
6850 collected. Defaults to B<false>.
6851
6852 =item B<CollectCPULoad> B<true>|B<false>
6853
6854 When set to B<true>, information about the CPU usage will be collected. The
6855 number is a dimensionless value where zero indicates no CPU usage at all.
6856 Defaults to B<false>.
6857
6858 =item B<CollectMemory> B<true>|B<false>
6859
6860 When enabled, the amount of used and free memory will be collected. How used
6861 memory is calculated is unknown, for example whether or not caches are counted
6862 as used space.
6863 Defaults to B<false>.
6864
6865 =item B<CollectDF> B<true>|B<false>
6866
6867 When enabled, the amount of used and free disk space will be collected.
6868 Defaults to B<false>.
6869
6870 =item B<CollectDisk> B<true>|B<false>
6871
6872 When enabled, the number of sectors written and bad blocks will be collected.
6873 Defaults to B<false>.
6874
6875 =back
6876
6877 =head2 Plugin C<redis>
6878
6879 The I<Redis plugin> connects to one or more Redis servers and gathers
6880 information about each server's state. For each server there is a I<Node> block
6881 which configures the connection parameters for this node.
6882
6883   <Plugin redis>
6884     <Node "example">
6885         Host "localhost"
6886         Port "6379"
6887         Timeout 2000
6888         <Query "LLEN myqueue">
6889           Type "queue_length"
6890           Instance "myqueue"
6891         <Query>
6892     </Node>
6893   </Plugin>
6894
6895 The information shown in the synopsis above is the I<default configuration>
6896 which is used by the plugin if no configuration is present.
6897
6898 =over 4
6899
6900 =item B<Node> I<Nodename>
6901
6902 The B<Node> block identifies a new Redis node, that is a new Redis instance
6903 running in an specified host and port. The name for node is a canonical
6904 identifier which is used as I<plugin instance>. It is limited to
6905 64E<nbsp>characters in length.
6906
6907 =item B<Host> I<Hostname>
6908
6909 The B<Host> option is the hostname or IP-address where the Redis instance is
6910 running on.
6911
6912 =item B<Port> I<Port>
6913
6914 The B<Port> option is the TCP port on which the Redis instance accepts
6915 connections. Either a service name of a port number may be given. Please note
6916 that numerical port numbers must be given as a string, too.
6917
6918 =item B<Password> I<Password>
6919
6920 Use I<Password> to authenticate when connecting to I<Redis>.
6921
6922 =item B<Timeout> I<Milliseconds>
6923
6924 The B<Timeout> option set the socket timeout for node response. Since the Redis
6925 read function is blocking, you should keep this value as low as possible. Keep
6926 in mind that the sum of all B<Timeout> values for all B<Nodes> should be lower
6927 than B<Interval> defined globally.
6928
6929 =item B<Query> I<Querystring>
6930
6931 The B<Query> block identifies a query to execute against the redis server.
6932 There may be an arbitrary number of queries to execute.
6933
6934 =item B<Type> I<Collectd type>
6935
6936 Within a query definition, a valid collectd type to use as when submitting
6937 the result of the query. When not supplied, will default to B<gauge>.
6938
6939 =item B<Instance> I<Type instance>
6940
6941 Within a query definition, an optional type instance to use when submitting
6942 the result of the query. When not supplied will default to the escaped
6943 command, up to 64 chars.
6944
6945 =back
6946
6947 =head2 Plugin C<rrdcached>
6948
6949 The C<rrdcached> plugin uses the RRDtool accelerator daemon, L<rrdcached(1)>,
6950 to store values to RRD files in an efficient manner. The combination of the
6951 C<rrdcached> B<plugin> and the C<rrdcached> B<daemon> is very similar to the
6952 way the C<rrdtool> plugin works (see below). The added abstraction layer
6953 provides a number of benefits, though: Because the cache is not within
6954 C<collectd> anymore, it does not need to be flushed when C<collectd> is to be
6955 restarted. This results in much shorter (if any) gaps in graphs, especially
6956 under heavy load. Also, the C<rrdtool> command line utility is aware of the
6957 daemon so that it can flush values to disk automatically when needed. This
6958 allows one to integrate automated flushing of values into graphing solutions
6959 much more easily.
6960
6961 There are disadvantages, though: The daemon may reside on a different host, so
6962 it may not be possible for C<collectd> to create the appropriate RRD files
6963 anymore. And even if C<rrdcached> runs on the same host, it may run in a
6964 different base directory, so relative paths may do weird stuff if you're not
6965 careful.
6966
6967 So the B<recommended configuration> is to let C<collectd> and C<rrdcached> run
6968 on the same host, communicating via a UNIX domain socket. The B<DataDir>
6969 setting should be set to an absolute path, so that a changed base directory
6970 does not result in RRD files being createdE<nbsp>/ expected in the wrong place.
6971
6972 =over 4
6973
6974 =item B<DaemonAddress> I<Address>
6975
6976 Address of the daemon as understood by the C<rrdc_connect> function of the RRD
6977 library. See L<rrdcached(1)> for details. Example:
6978
6979   <Plugin "rrdcached">
6980     DaemonAddress "unix:/var/run/rrdcached.sock"
6981   </Plugin>
6982
6983 =item B<DataDir> I<Directory>
6984
6985 Set the base directory in which the RRD files reside. If this is a relative
6986 path, it is relative to the working base directory of the C<rrdcached> daemon!
6987 Use of an absolute path is recommended.
6988
6989 =item B<CreateFiles> B<true>|B<false>
6990
6991 Enables or disables the creation of RRD files. If the daemon is not running
6992 locally, or B<DataDir> is set to a relative path, this will not work as
6993 expected. Default is B<true>.
6994
6995 =item B<CreateFilesAsync> B<false>|B<true>
6996
6997 When enabled, new RRD files are enabled asynchronously, using a separate thread
6998 that runs in the background. This prevents writes to block, which is a problem
6999 especially when many hundreds of files need to be created at once. However,
7000 since the purpose of creating the files asynchronously is I<not> to block until
7001 the file is available, values before the file is available will be discarded.
7002 When disabled (the default) files are created synchronously, blocking for a
7003 short while, while the file is being written.
7004
7005 =item B<StepSize> I<Seconds>
7006
7007 B<Force> the stepsize of newly created RRD-files. Ideally (and per default)
7008 this setting is unset and the stepsize is set to the interval in which the data
7009 is collected. Do not use this option unless you absolutely have to for some
7010 reason. Setting this option may cause problems with the C<snmp plugin>, the
7011 C<exec plugin> or when the daemon is set up to receive data from other hosts.
7012
7013 =item B<HeartBeat> I<Seconds>
7014
7015 B<Force> the heartbeat of newly created RRD-files. This setting should be unset
7016 in which case the heartbeat is set to twice the B<StepSize> which should equal
7017 the interval in which data is collected. Do not set this option unless you have
7018 a very good reason to do so.
7019
7020 =item B<RRARows> I<NumRows>
7021
7022 The C<rrdtool plugin> calculates the number of PDPs per CDP based on the
7023 B<StepSize>, this setting and a timespan. This plugin creates RRD-files with
7024 three times five RRAs, i. e. five RRAs with the CFs B<MIN>, B<AVERAGE>, and
7025 B<MAX>. The five RRAs are optimized for graphs covering one hour, one day, one
7026 week, one month, and one year.
7027
7028 So for each timespan, it calculates how many PDPs need to be consolidated into
7029 one CDP by calculating:
7030   number of PDPs = timespan / (stepsize * rrarows)
7031
7032 Bottom line is, set this no smaller than the width of you graphs in pixels. The
7033 default is 1200.
7034
7035 =item B<RRATimespan> I<Seconds>
7036
7037 Adds an RRA-timespan, given in seconds. Use this option multiple times to have
7038 more then one RRA. If this option is never used, the built-in default of (3600,
7039 86400, 604800, 2678400, 31622400) is used.
7040
7041 For more information on how RRA-sizes are calculated see B<RRARows> above.
7042
7043 =item B<XFF> I<Factor>
7044
7045 Set the "XFiles Factor". The default is 0.1. If unsure, don't set this option.
7046 I<Factor> must be in the range C<[0.0-1.0)>, i.e. between zero (inclusive) and
7047 one (exclusive).
7048
7049 =item B<CollectStatistics> B<false>|B<true>
7050
7051 When set to B<true>, various statistics about the I<rrdcached> daemon will be
7052 collected, with "rrdcached" as the I<plugin name>. Defaults to B<false>.
7053
7054 Statistics are read via I<rrdcached>s socket using the STATS command.
7055 See L<rrdcached(1)> for details.
7056
7057 =back
7058
7059 =head2 Plugin C<rrdtool>
7060
7061 You can use the settings B<StepSize>, B<HeartBeat>, B<RRARows>, and B<XFF> to
7062 fine-tune your RRD-files. Please read L<rrdcreate(1)> if you encounter problems
7063 using these settings. If you don't want to dive into the depths of RRDtool, you
7064 can safely ignore these settings.
7065
7066 =over 4
7067
7068 =item B<DataDir> I<Directory>
7069
7070 Set the directory to store RRD files under. By default RRD files are generated
7071 beneath the daemon's working directory, i.e. the B<BaseDir>.
7072
7073 =item B<CreateFilesAsync> B<false>|B<true>
7074
7075 When enabled, new RRD files are enabled asynchronously, using a separate thread
7076 that runs in the background. This prevents writes to block, which is a problem
7077 especially when many hundreds of files need to be created at once. However,
7078 since the purpose of creating the files asynchronously is I<not> to block until
7079 the file is available, values before the file is available will be discarded.
7080 When disabled (the default) files are created synchronously, blocking for a
7081 short while, while the file is being written.
7082
7083 =item B<StepSize> I<Seconds>
7084
7085 B<Force> the stepsize of newly created RRD-files. Ideally (and per default)
7086 this setting is unset and the stepsize is set to the interval in which the data
7087 is collected. Do not use this option unless you absolutely have to for some
7088 reason. Setting this option may cause problems with the C<snmp plugin>, the
7089 C<exec plugin> or when the daemon is set up to receive data from other hosts.
7090
7091 =item B<HeartBeat> I<Seconds>
7092
7093 B<Force> the heartbeat of newly created RRD-files. This setting should be unset
7094 in which case the heartbeat is set to twice the B<StepSize> which should equal
7095 the interval in which data is collected. Do not set this option unless you have
7096 a very good reason to do so.
7097
7098 =item B<RRARows> I<NumRows>
7099
7100 The C<rrdtool plugin> calculates the number of PDPs per CDP based on the
7101 B<StepSize>, this setting and a timespan. This plugin creates RRD-files with
7102 three times five RRAs, i.e. five RRAs with the CFs B<MIN>, B<AVERAGE>, and
7103 B<MAX>. The five RRAs are optimized for graphs covering one hour, one day, one
7104 week, one month, and one year.
7105
7106 So for each timespan, it calculates how many PDPs need to be consolidated into
7107 one CDP by calculating:
7108   number of PDPs = timespan / (stepsize * rrarows)
7109
7110 Bottom line is, set this no smaller than the width of you graphs in pixels. The
7111 default is 1200.
7112
7113 =item B<RRATimespan> I<Seconds>
7114
7115 Adds an RRA-timespan, given in seconds. Use this option multiple times to have
7116 more then one RRA. If this option is never used, the built-in default of (3600,
7117 86400, 604800, 2678400, 31622400) is used.
7118
7119 For more information on how RRA-sizes are calculated see B<RRARows> above.
7120
7121 =item B<XFF> I<Factor>
7122
7123 Set the "XFiles Factor". The default is 0.1. If unsure, don't set this option.
7124 I<Factor> must be in the range C<[0.0-1.0)>, i.e. between zero (inclusive) and
7125 one (exclusive).
7126
7127 =item B<CacheFlush> I<Seconds>
7128
7129 When the C<rrdtool> plugin uses a cache (by setting B<CacheTimeout>, see below)
7130 it writes all values for a certain RRD-file if the oldest value is older than
7131 (or equal to) the number of seconds specified by B<CacheTimeout>.
7132 That check happens on new values arriwal. If some RRD-file is not updated
7133 anymore for some reason (the computer was shut down, the network is broken,
7134 etc.) some values may still be in the cache. If B<CacheFlush> is set, then
7135 every I<Seconds> seconds the entire cache is searched for entries older than
7136 B<CacheTimeout> + B<RandomTimeout> seconds. The entries found are written to
7137 disk. Since scanning the entire cache is kind of expensive and does nothing
7138 under normal circumstances, this value should not be too small. 900 seconds
7139 might be a good value, though setting this to 7200 seconds doesn't normally
7140 do much harm either.
7141
7142 Defaults to 10x B<CacheTimeout>.
7143 B<CacheFlush> must be larger than or equal to B<CacheTimeout>, otherwise the
7144 above default is used.
7145
7146 =item B<CacheTimeout> I<Seconds>
7147
7148 If this option is set to a value greater than zero, the C<rrdtool plugin> will
7149 save values in a cache, as described above. Writing multiple values at once
7150 reduces IO-operations and thus lessens the load produced by updating the files.
7151 The trade off is that the graphs kind of "drag behind" and that more memory is
7152 used.
7153
7154 =item B<WritesPerSecond> I<Updates>
7155
7156 When collecting many statistics with collectd and the C<rrdtool> plugin, you
7157 will run serious performance problems. The B<CacheFlush> setting and the
7158 internal update queue assert that collectd continues to work just fine even
7159 under heavy load, but the system may become very unresponsive and slow. This is
7160 a problem especially if you create graphs from the RRD files on the same
7161 machine, for example using the C<graph.cgi> script included in the
7162 C<contrib/collection3/> directory.
7163
7164 This setting is designed for very large setups. Setting this option to a value
7165 between 25 and 80 updates per second, depending on your hardware, will leave
7166 the server responsive enough to draw graphs even while all the cached values
7167 are written to disk. Flushed values, i.E<nbsp>e. values that are forced to disk
7168 by the B<FLUSH> command, are B<not> effected by this limit. They are still
7169 written as fast as possible, so that web frontends have up to date data when
7170 generating graphs.
7171
7172 For example: If you have 100,000 RRD files and set B<WritesPerSecond> to 30
7173 updates per second, writing all values to disk will take approximately
7174 56E<nbsp>minutes. Together with the flushing ability that's integrated into
7175 "collection3" you'll end up with a responsive and fast system, up to date
7176 graphs and basically a "backup" of your values every hour.
7177
7178 =item B<RandomTimeout> I<Seconds>
7179
7180 When set, the actual timeout for each value is chosen randomly between
7181 I<CacheTimeout>-I<RandomTimeout> and I<CacheTimeout>+I<RandomTimeout>. The
7182 intention is to avoid high load situations that appear when many values timeout
7183 at the same time. This is especially a problem shortly after the daemon starts,
7184 because all values were added to the internal cache at roughly the same time.
7185
7186 =back
7187
7188 =head2 Plugin C<sensors>
7189
7190 The I<Sensors plugin> uses B<lm_sensors> to retrieve sensor-values. This means
7191 that all the needed modules have to be loaded and lm_sensors has to be
7192 configured (most likely by editing F</etc/sensors.conf>. Read
7193 L<sensors.conf(5)> for details.
7194
7195 The B<lm_sensors> homepage can be found at
7196 L<http://secure.netroedge.com/~lm78/>.
7197
7198 =over 4
7199
7200 =item B<SensorConfigFile> I<File>
7201
7202 Read the I<lm_sensors> configuration from I<File>. When unset (recommended),
7203 the library's default will be used.
7204
7205 =item B<Sensor> I<chip-bus-address/type-feature>
7206
7207 Selects the name of the sensor which you want to collect or ignore, depending
7208 on the B<IgnoreSelected> below. For example, the option "B<Sensor>
7209 I<it8712-isa-0290/voltage-in1>" will cause collectd to gather data for the
7210 voltage sensor I<in1> of the I<it8712> on the isa bus at the address 0290.
7211
7212 See F</"IGNORELISTS"> for details.
7213
7214 =item B<IgnoreSelected> I<true>|I<false>
7215
7216 If no configuration if given, the B<sensors>-plugin will collect data from all
7217 sensors. This may not be practical, especially for uninteresting sensors.
7218 Thus, you can use the B<Sensor>-option to pick the sensors you're interested
7219 in. Sometimes, however, it's easier/preferred to collect all sensors I<except> a
7220 few ones. This option enables you to do that: By setting B<IgnoreSelected> to
7221 I<true> the effect of B<Sensor> is inverted: All selected sensors are ignored
7222 and all other sensors are collected.
7223
7224 =item B<UseLabels> I<true>|I<false>
7225
7226 Configures how sensor readings are reported. When set to I<true>, sensor
7227 readings are reported using their descriptive label (e.g. "VCore"). When set to
7228 I<false> (the default) the sensor name is used ("in0").
7229
7230 =back
7231
7232 =head2 Plugin C<sigrok>
7233
7234 The I<sigrok plugin> uses I<libsigrok> to retrieve measurements from any device
7235 supported by the L<sigrok|http://sigrok.org/> project.
7236
7237 B<Synopsis>
7238
7239  <Plugin sigrok>
7240    LogLevel 3
7241    <Device "AC Voltage">
7242       Driver "fluke-dmm"
7243       MinimumInterval 10
7244       Conn "/dev/ttyUSB2"
7245    </Device>
7246    <Device "Sound Level">
7247       Driver "cem-dt-885x"
7248       Conn "/dev/ttyUSB1"
7249    </Device>
7250  </Plugin>
7251
7252 =over 4
7253
7254 =item B<LogLevel> B<0-5>
7255
7256 The I<sigrok> logging level to pass on to the I<collectd> log, as a number
7257 between B<0> and B<5> (inclusive). These levels correspond to C<None>,
7258 C<Errors>, C<Warnings>, C<Informational>, C<Debug >and C<Spew>, respectively.
7259 The default is B<2> (C<Warnings>). The I<sigrok> log messages, regardless of
7260 their level, are always submitted to I<collectd> at its INFO log level.
7261
7262 =item E<lt>B<Device> I<Name>E<gt>
7263
7264 A sigrok-supported device, uniquely identified by this section's options. The
7265 I<Name> is passed to I<collectd> as the I<plugin instance>.
7266
7267 =item B<Driver> I<DriverName>
7268
7269 The sigrok driver to use for this device.
7270
7271 =item B<Conn> I<ConnectionSpec>
7272
7273 If the device cannot be auto-discovered, or more than one might be discovered
7274 by the driver, I<ConnectionSpec> specifies the connection string to the device.
7275 It can be of the form of a device path (e.g.E<nbsp>C</dev/ttyUSB2>), or, in
7276 case of a non-serial USB-connected device, the USB I<VendorID>B<.>I<ProductID>
7277 separated by a period (e.g.E<nbsp>C<0403.6001>). A USB device can also be
7278 specified as I<Bus>B<.>I<Address> (e.g.E<nbsp>C<1.41>).
7279
7280 =item B<SerialComm> I<SerialSpec>
7281
7282 For serial devices with non-standard port settings, this option can be used
7283 to specify them in a form understood by I<sigrok>, e.g.E<nbsp>C<9600/8n1>.
7284 This should not be necessary; drivers know how to communicate with devices they
7285 support.
7286
7287 =item B<MinimumInterval> I<Seconds>
7288
7289 Specifies the minimum time between measurement dispatches to I<collectd>, in
7290 seconds. Since some I<sigrok> supported devices can acquire measurements many
7291 times per second, it may be necessary to throttle these. For example, the
7292 I<RRD plugin> cannot process writes more than once per second.
7293
7294 The default B<MinimumInterval> is B<0>, meaning measurements received from the
7295 device are always dispatched to I<collectd>. When throttled, unused
7296 measurements are discarded.
7297
7298 =back
7299
7300 =head2 Plugin C<smart>
7301
7302 The C<smart> plugin collects SMART information from physical
7303 disks. Values collectd include temperature, power cycle count, poweron
7304 time and bad sectors. Also, all SMART attributes are collected along
7305 with the normalized current value, the worst value, the threshold and
7306 a human readable value.
7307
7308 Using the following two options you can ignore some disks or configure the
7309 collection only of specific disks.
7310
7311 =over 4
7312
7313 =item B<Disk> I<Name>
7314
7315 Select the disk I<Name>. Whether it is collected or ignored depends on the
7316 B<IgnoreSelected> setting, see below. As with other plugins that use the
7317 daemon's ignorelist functionality, a string that starts and ends with a slash
7318 is interpreted as a regular expression. Examples:
7319
7320   Disk "sdd"
7321   Disk "/hda[34]/"
7322
7323 See F</"IGNORELISTS"> for details.
7324
7325 =item B<IgnoreSelected> B<true>|B<false>
7326
7327 Sets whether selected disks, i.E<nbsp>e. the ones matches by any of the B<Disk>
7328 statements, are ignored or if all other disks are ignored. The behavior
7329 (hopefully) is intuitive: If no B<Disk> option is configured, all disks are
7330 collected. If at least one B<Disk> option is given and no B<IgnoreSelected> or
7331 set to B<false>, B<only> matching disks will be collected. If B<IgnoreSelected>
7332 is set to B<true>, all disks are collected B<except> the ones matched.
7333
7334 =item B<IgnoreSleepMode> B<true>|B<false>
7335
7336 Normally, the C<smart> plugin will ignore disks that are reported to be asleep.
7337 This option disables the sleep mode check and allows the plugin to collect data
7338 from these disks anyway. This is useful in cases where libatasmart mistakenly
7339 reports disks as asleep because it has not been updated to incorporate support
7340 for newer idle states in the ATA spec.
7341
7342 =item B<UseSerial> B<true>|B<false>
7343
7344 A disk's kernel name (e.g., sda) can change from one boot to the next. If this
7345 option is enabled, the C<smart> plugin will use the disk's serial number (e.g.,
7346 HGST_HUH728080ALE600_2EJ8VH8X) instead of the kernel name as the key for
7347 storing data. This ensures that the data for a given disk will be kept together
7348 even if the kernel name changes.
7349
7350 =back
7351
7352 =head2 Plugin C<snmp>
7353
7354 Since the configuration of the C<snmp plugin> is a little more complicated than
7355 other plugins, its documentation has been moved to an own manpage,
7356 L<collectd-snmp(5)>. Please see there for details.
7357
7358 =head2 Plugin C<snmp_agent>
7359
7360 The I<snmp_agent> plugin is an AgentX subagent that receives and handles queries
7361 from SNMP master agent and returns the data collected by read plugins.
7362 The I<snmp_agent> plugin handles requests only for OIDs specified in
7363 configuration file. To handle SNMP queries the plugin gets data from collectd
7364 and translates requested values from collectd's internal format to SNMP format.
7365 This plugin is a generic plugin and cannot work without configuration.
7366 For more details on AgentX subagent see
7367 <http://www.net-snmp.org/tutorial/tutorial-5/toolkit/demon/>
7368
7369 B<Synopsis:>
7370
7371   <Plugin snmp_agent>
7372     <Data "memAvailReal">
7373       Plugin "memory"
7374       #PluginInstance "some"
7375       Type "memory"
7376       TypeInstance "free"
7377       OIDs "1.3.6.1.4.1.2021.4.6.0"
7378     </Data>
7379     <Table "ifTable">
7380       IndexOID "IF-MIB::ifIndex"
7381       SizeOID "IF-MIB::ifNumber"
7382       <Data "ifDescr">
7383         Instance true
7384         Plugin "interface"
7385         OIDs "IF-MIB::ifDescr"
7386       </Data>
7387       <Data "ifOctets">
7388         Plugin "interface"
7389         Type "if_octets"
7390         TypeInstance ""
7391         OIDs "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
7392       </Data>
7393     </Table>
7394   </Plugin>
7395
7396 There are two types of blocks that can be contained in the
7397 C<E<lt>PluginE<nbsp> snmp_agentE<gt>> block: B<Data> and B<Table>:
7398
7399 =head3 The B<Data> block
7400
7401 The B<Data> block defines a list OIDs that are to be handled. This block can
7402 define scalar or table OIDs. If B<Data> block is defined inside of B<Table>
7403 block it reperesents table OIDs.
7404 The following options can be set:
7405
7406 =over 4
7407
7408 =item B<Instance> I<true|false>
7409
7410 When B<Instance> is set to B<true>, the value for requested OID is copied from
7411 plugin instance field of corresponding collectd value. If B<Data> block defines
7412 scalar data type B<Instance> has no effect and can be omitted.
7413
7414 =item B<Plugin> I<String>
7415
7416 Read plugin name whose collected data will be mapped to specified OIDs.
7417
7418 =item B<PluginInstance> I<String>
7419
7420 Read plugin instance whose collected data will be mapped to specified OIDs.
7421 The field is optional and by default there is no plugin instance check.
7422 Allowed only if B<Data> block defines scalar data type.
7423
7424 =item B<Type> I<String>
7425
7426 Collectd's type that is to be used for specified OID, e.E<nbsp>g. "if_octets"
7427 for example. The types are read from the B<TypesDB> (see L<collectd.conf(5)>).
7428
7429 =item B<TypeInstance> I<String>
7430
7431 Collectd's type-instance that is to be used for specified OID.
7432
7433 =item B<OIDs> I<OID> [I<OID> ...]
7434
7435 Configures the OIDs to be handled by I<snmp_agent> plugin. Values for these OIDs
7436 are taken from collectd data type specified by B<Plugin>, B<PluginInstance>,
7437 B<Type>, B<TypeInstance> fields of this B<Data> block. Number of the OIDs
7438 configured should correspond to number of values in specified B<Type>.
7439 For example two OIDs "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" can be mapped to
7440 "rx" and "tx" values of "if_octets" type.
7441
7442 =item B<Scale> I<Value>
7443
7444 The values taken from collectd are multiplied by I<Value>. The field is optional
7445 and the default is B<1.0>.
7446
7447 =item B<Shift> I<Value>
7448
7449 I<Value> is added to values from collectd after they have been multiplied by
7450 B<Scale> value. The field is optional and the default value is B<0.0>.
7451
7452 =back
7453
7454 =head3 The B<Table> block
7455
7456 The B<Table> block defines a collection of B<Data> blocks that belong to one
7457 snmp table. In addition to multiple B<Data> blocks the following options can be
7458 set:
7459
7460 =over 4
7461
7462 =item B<IndexOID> I<OID>
7463
7464 OID that is handled by the plugin and is mapped to numerical index value that is
7465 generated by the plugin for each table record.
7466
7467 =item B<SizeOID> I<OID>
7468
7469 OID that is handled by the plugin. Returned value is the number of records in
7470 the table. The field is optional.
7471
7472 =back
7473
7474 =head2 Plugin C<statsd>
7475
7476 The I<statsd plugin> listens to a UDP socket, reads "events" in the statsd
7477 protocol and dispatches rates or other aggregates of these numbers
7478 periodically.
7479
7480 The plugin implements the I<Counter>, I<Timer>, I<Gauge> and I<Set> types which
7481 are dispatched as the I<collectd> types C<derive>, C<latency>, C<gauge> and
7482 C<objects> respectively.
7483
7484 The following configuration options are valid:
7485
7486 =over 4
7487
7488 =item B<Host> I<Host>
7489
7490 Bind to the hostname / address I<Host>. By default, the plugin will bind to the
7491 "any" address, i.e. accept packets sent to any of the hosts addresses.
7492
7493 =item B<Port> I<Port>
7494
7495 UDP port to listen to. This can be either a service name or a port number.
7496 Defaults to C<8125>.
7497
7498 =item B<DeleteCounters> B<false>|B<true>
7499
7500 =item B<DeleteTimers> B<false>|B<true>
7501
7502 =item B<DeleteGauges> B<false>|B<true>
7503
7504 =item B<DeleteSets> B<false>|B<true>
7505
7506 These options control what happens if metrics are not updated in an interval.
7507 If set to B<False>, the default, metrics are dispatched unchanged, i.e. the
7508 rate of counters and size of sets will be zero, timers report C<NaN> and gauges
7509 are unchanged. If set to B<True>, the such metrics are not dispatched and
7510 removed from the internal cache.
7511
7512 =item B<CounterSum> B<false>|B<true>
7513
7514 When enabled, creates a C<count> metric which reports the change since the last
7515 read. This option primarily exists for compatibility with the I<statsd>
7516 implementation by Etsy.
7517
7518 =item B<TimerPercentile> I<Percent>
7519
7520 Calculate and dispatch the configured percentile, i.e. compute the latency, so
7521 that I<Percent> of all reported timers are smaller than or equal to the
7522 computed latency. This is useful for cutting off the long tail latency, as it's
7523 often done in I<Service Level Agreements> (SLAs).
7524
7525 Different percentiles can be calculated by setting this option several times.
7526 If none are specified, no percentiles are calculated / dispatched.
7527
7528 =item B<TimerLower> B<false>|B<true>
7529
7530 =item B<TimerUpper> B<false>|B<true>
7531
7532 =item B<TimerSum> B<false>|B<true>
7533
7534 =item B<TimerCount> B<false>|B<true>
7535
7536 Calculate and dispatch various values out of I<Timer> metrics received during
7537 an interval. If set to B<False>, the default, these values aren't calculated /
7538 dispatched.
7539
7540 =back
7541
7542 =head2 Plugin C<swap>
7543
7544 The I<Swap plugin> collects information about used and available swap space. On
7545 I<Linux> and I<Solaris>, the following options are available:
7546
7547 =over 4
7548
7549 =item B<ReportByDevice> B<false>|B<true>
7550
7551 Configures how to report physical swap devices. If set to B<false> (the
7552 default), the summary over all swap devices is reported only, i.e. the globally
7553 used and available space over all devices. If B<true> is configured, the used
7554 and available space of each device will be reported separately.
7555
7556 This option is only available if the I<Swap plugin> can read C</proc/swaps>
7557 (under Linux) or use the L<swapctl(2)> mechanism (under I<Solaris>).
7558
7559 =item B<ReportBytes> B<false>|B<true>
7560
7561 When enabled, the I<swap I/O> is reported in bytes. When disabled, the default,
7562 I<swap I/O> is reported in pages. This option is available under Linux only.
7563
7564 =item B<ValuesAbsolute> B<true>|B<false>
7565
7566 Enables or disables reporting of absolute swap metrics, i.e. number of I<bytes>
7567 available and used. Defaults to B<true>.
7568
7569 =item B<ValuesPercentage> B<false>|B<true>
7570
7571 Enables or disables reporting of relative swap metrics, i.e. I<percent>
7572 available and free. Defaults to B<false>.
7573
7574 This is useful for deploying I<collectd> in a heterogeneous environment, where
7575 swap sizes differ and you want to specify generic thresholds or similar.
7576
7577 =item B<ReportIO> B<true>|B<false>
7578
7579 Enables or disables reporting swap IO. Defaults to B<true>.
7580
7581 This is useful for the cases when swap IO is not neccessary, is not available,
7582 or is not reliable.
7583
7584 =back
7585
7586 =head2 Plugin C<syslog>
7587
7588 =over 4
7589
7590 =item B<LogLevel> B<debug|info|notice|warning|err>
7591
7592 Sets the log-level. If, for example, set to B<notice>, then all events with
7593 severity B<notice>, B<warning>, or B<err> will be submitted to the
7594 syslog-daemon.
7595
7596 Please note that B<debug> is only available if collectd has been compiled with
7597 debugging support.
7598
7599 =item B<NotifyLevel> B<OKAY>|B<WARNING>|B<FAILURE>
7600
7601 Controls which notifications should be sent to syslog. The default behaviour is
7602 not to send any. Less severe notifications always imply logging more severe
7603 notifications: Setting this to B<OKAY> means all notifications will be sent to
7604 syslog, setting this to B<WARNING> will send B<WARNING> and B<FAILURE>
7605 notifications but will dismiss B<OKAY> notifications. Setting this option to
7606 B<FAILURE> will only send failures to syslog.
7607
7608 =back
7609
7610 =head2 Plugin C<table>
7611
7612 The C<table plugin> provides generic means to parse tabular data and dispatch
7613 user specified values. Values are selected based on column numbers. For
7614 example, this plugin may be used to get values from the Linux L<proc(5)>
7615 filesystem or CSV (comma separated values) files.
7616
7617   <Plugin table>
7618     <Table "/proc/slabinfo">
7619       #Plugin "slab"
7620       Instance "slabinfo"
7621       Separator " "
7622       <Result>
7623         Type gauge
7624         InstancePrefix "active_objs"
7625         InstancesFrom 0
7626         ValuesFrom 1
7627       </Result>
7628       <Result>
7629         Type gauge
7630         InstancePrefix "objperslab"
7631         InstancesFrom 0
7632         ValuesFrom 4
7633       </Result>
7634     </Table>
7635   </Plugin>
7636
7637 The configuration consists of one or more B<Table> blocks, each of which
7638 configures one file to parse. Within each B<Table> block, there are one or
7639 more B<Result> blocks, which configure which data to select and how to
7640 interpret it.
7641
7642 The following options are available inside a B<Table> block:
7643
7644 =over 4
7645
7646 =item B<Plugin> I<Plugin>
7647
7648 If specified, I<Plugin> is used as the plugin name when submitting values.
7649 Defaults to B<table>.
7650
7651 =item B<Instance> I<instance>
7652
7653 If specified, I<instance> is used as the plugin instance. If omitted, the
7654 filename of the table is used instead, with all special characters replaced
7655 with an underscore (C<_>).
7656
7657 =item B<Separator> I<string>
7658
7659 Any character of I<string> is interpreted as a delimiter between the different
7660 columns of the table. A sequence of two or more contiguous delimiters in the
7661 table is considered to be a single delimiter, i.E<nbsp>e. there cannot be any
7662 empty columns. The plugin uses the L<strtok_r(3)> function to parse the lines
7663 of a table - see its documentation for more details. This option is mandatory.
7664
7665 A horizontal tab, newline and carriage return may be specified by C<\\t>,
7666 C<\\n> and C<\\r> respectively. Please note that the double backslashes are
7667 required because of collectd's config parsing.
7668
7669 =back
7670
7671 The following options are available inside a B<Result> block:
7672
7673 =over 4
7674
7675 =item B<Type> I<type>
7676
7677 Sets the type used to dispatch the values to the daemon. Detailed information
7678 about types and their configuration can be found in L<types.db(5)>. This
7679 option is mandatory.
7680
7681 =item B<InstancePrefix> I<prefix>
7682
7683 If specified, prepend I<prefix> to the type instance. If omitted, only the
7684 B<InstancesFrom> option is considered for the type instance.
7685
7686 =item B<InstancesFrom> I<column0> [I<column1> ...]
7687
7688 If specified, the content of the given columns (identified by the column
7689 number starting at zero) will be used to create the type instance for each
7690 row. Multiple values (and the instance prefix) will be joined together with
7691 dashes (I<->) as separation character. If omitted, only the B<InstancePrefix>
7692 option is considered for the type instance.
7693
7694 The plugin itself does not check whether or not all built instances are
7695 different. It’s your responsibility to assure that each is unique. This is
7696 especially true, if you do not specify B<InstancesFrom>: B<You> have to make
7697 sure that the table only contains one row.
7698
7699 If neither B<InstancePrefix> nor B<InstancesFrom> is given, the type instance
7700 will be empty.
7701
7702 =item B<ValuesFrom> I<column0> [I<column1> ...]
7703
7704 Specifies the columns (identified by the column numbers starting at zero)
7705 whose content is used as the actual data for the data sets that are dispatched
7706 to the daemon. How many such columns you need is determined by the B<Type>
7707 setting above. If you specify too many or not enough columns, the plugin will
7708 complain about that and no data will be submitted to the daemon. The plugin
7709 uses L<strtoll(3)> and L<strtod(3)> to parse counter and gauge values
7710 respectively, so anything supported by those functions is supported by the
7711 plugin as well. This option is mandatory.
7712
7713 =back
7714
7715 =head2 Plugin C<tail>
7716
7717 The C<tail plugin> follows logfiles, just like L<tail(1)> does, parses
7718 each line and dispatches found values. What is matched can be configured by the
7719 user using (extended) regular expressions, as described in L<regex(7)>.
7720
7721   <Plugin "tail">
7722     <File "/var/log/exim4/mainlog">
7723       Plugin "mail"
7724       Instance "exim"
7725       Interval 60
7726       <Match>
7727         Regex "S=([1-9][0-9]*)"
7728         DSType "CounterAdd"
7729         Type "ipt_bytes"
7730         Instance "total"
7731       </Match>
7732       <Match>
7733         Regex "\\<R=local_user\\>"
7734         ExcludeRegex "\\<R=local_user\\>.*mail_spool defer"
7735         DSType "CounterInc"
7736         Type "counter"
7737         Instance "local_user"
7738       </Match>
7739       <Match>
7740         Regex "l=([0-9]*\\.[0-9]*)"
7741         <DSType "Distribution">
7742           Percentile 99
7743           Bucket 0 100
7744           #BucketType "bucket"
7745         </DSType>
7746         Type "latency"
7747         Instance "foo"
7748       </Match>
7749     </File>
7750   </Plugin>
7751
7752 The config consists of one or more B<File> blocks, each of which configures one
7753 logfile to parse. Within each B<File> block, there are one or more B<Match>
7754 blocks, which configure a regular expression to search for.
7755
7756 The B<Plugin> and B<Instance> options in the B<File> block may be used to set
7757 the plugin name and instance respectively. So in the above example the plugin name
7758 C<mail-exim> would be used.
7759
7760 These options are applied for all B<Match> blocks that B<follow> it, until the
7761 next B<Plugin> or B<Instance> option. This way you can extract several plugin
7762 instances from one logfile, handy when parsing syslog and the like.
7763
7764 The B<Interval> option allows you to define the length of time between reads. If
7765 this is not set, the default Interval will be used.
7766
7767 Each B<Match> block has the following options to describe how the match should
7768 be performed:
7769
7770 =over 4
7771
7772 =item B<Regex> I<regex>
7773
7774 Sets the regular expression to use for matching against a line. The first
7775 subexpression has to match something that can be turned into a number by
7776 L<strtoll(3)> or L<strtod(3)>, depending on the value of C<CounterAdd>, see
7777 below. Because B<extended> regular expressions are used, you do not need to use
7778 backslashes for subexpressions! If in doubt, please consult L<regex(7)>. Due to
7779 collectd's config parsing you need to escape backslashes, though. So if you
7780 want to match literal parentheses you need to do the following:
7781
7782   Regex "SPAM \\(Score: (-?[0-9]+\\.[0-9]+)\\)"
7783
7784 =item B<ExcludeRegex> I<regex>
7785
7786 Sets an optional regular expression to use for excluding lines from the match.
7787 An example which excludes all connections from localhost from the match:
7788
7789   ExcludeRegex "127\\.0\\.0\\.1"
7790
7791 =item B<DSType> I<Type>
7792
7793 Sets how the values are cumulated. I<Type> is one of:
7794
7795 =over 4
7796
7797 =item B<GaugeAverage>
7798
7799 Calculate the average.
7800
7801 =item B<GaugeMin>
7802
7803 Use the smallest number only.
7804
7805 =item B<GaugeMax>
7806
7807 Use the greatest number only.
7808
7809 =item B<GaugeLast>
7810
7811 Use the last number found.
7812
7813 =item B<GaugePersist>
7814
7815 Use the last number found. The number is not reset at the end of an interval.
7816 It is continously reported until another number is matched. This is intended
7817 for cases in which only state changes are reported, for example a thermometer
7818 that only reports the temperature when it changes.
7819
7820 =item B<CounterSet>
7821
7822 =item B<DeriveSet>
7823
7824 =item B<AbsoluteSet>
7825
7826 The matched number is a counter. Simply I<sets> the internal counter to this
7827 value. Variants exist for C<COUNTER>, C<DERIVE>, and C<ABSOLUTE> data sources.
7828
7829 =item B<GaugeAdd>
7830
7831 =item B<CounterAdd>
7832
7833 =item B<DeriveAdd>
7834
7835 Add the matched value to the internal counter. In case of B<DeriveAdd>, the
7836 matched number may be negative, which will effectively subtract from the
7837 internal counter.
7838
7839 =item B<GaugeInc>
7840
7841 =item B<CounterInc>
7842
7843 =item B<DeriveInc>
7844
7845 Increase the internal counter by one. These B<DSType> are the only ones that do
7846 not use the matched subexpression, but simply count the number of matched
7847 lines. Thus, you may use a regular expression without submatch in this case.
7848
7849 =item B<Distribution>
7850
7851 Type to do calculations based on the distribution of values, primarily
7852 calculating percentiles. This is primarily geared towards latency, but can be
7853 used for other metrics as well. The range of values tracked with this setting
7854 must be in the range (0–2^34) and can be fractional. Please note that neither
7855 zero nor 2^34 are inclusive bounds, i.e. zero I<cannot> be handled by a
7856 distribution.
7857
7858 This option must be used together with the B<Percentile> and/or B<Bucket>
7859 options.
7860
7861 B<Synopsis:>
7862
7863   <DSType "Distribution">
7864     Percentile 99
7865     Bucket 0 100
7866     BucketType "bucket"
7867   </DSType>
7868
7869 =over 4
7870
7871 =item B<Percentile> I<Percent>
7872
7873 Calculate and dispatch the configured percentile, i.e. compute the value, so
7874 that I<Percent> of all matched values are smaller than or equal to the computed
7875 latency.
7876
7877 Metrics are reported with the I<type> B<Type> (the value of the above option)
7878 and the I<type instance> C<[E<lt>InstanceE<gt>-]E<lt>PercentE<gt>>.
7879
7880 This option may be repeated to calculate more than one percentile.
7881
7882 =item B<Bucket> I<lower_bound> I<upper_bound>
7883
7884 Export the number of values (a C<DERIVE>) falling within the given range. Both,
7885 I<lower_bound> and I<upper_bound> may be a fractional number, such as B<0.5>.
7886 Each B<Bucket> option specifies an interval C<(I<lower_bound>,
7887 I<upper_bound>]>, i.e. the range I<excludes> the lower bound and I<includes>
7888 the upper bound. I<lower_bound> and I<upper_bound> may be zero, meaning no
7889 lower/upper bound.
7890
7891 To export the entire (0–inf) range without overlap, use the upper bound of the
7892 previous range as the lower bound of the following range. In other words, use
7893 the following schema:
7894
7895   Bucket   0   1
7896   Bucket   1   2
7897   Bucket   2   5
7898   Bucket   5  10
7899   Bucket  10  20
7900   Bucket  20  50
7901   Bucket  50   0
7902
7903 Metrics are reported with the I<type> set by B<BucketType> option (C<bucket> 
7904 by default) and the I<type instance>
7905 C<E<lt>TypeE<gt>[-E<lt>InstanceE<gt>]-E<lt>lower_boundE<gt>_E<lt>upper_boundE<gt>>.
7906
7907 This option may be repeated to calculate more than one rate.
7908
7909 =item B<BucketType> I<Type>
7910
7911 Sets the type used to dispatch B<Bucket> metrics.
7912 Optional, by default C<bucket> will be used.
7913
7914 =back
7915
7916 =back
7917
7918 The B<Gauge*> and B<Distribution> types interpret the submatch as a floating
7919 point number, using L<strtod(3)>. The B<Counter*> and B<AbsoluteSet> types
7920 interpret the submatch as an unsigned integer using L<strtoull(3)>. The
7921 B<Derive*> types interpret the submatch as a signed integer using
7922 L<strtoll(3)>. B<CounterInc> and B<DeriveInc> do not use the submatch at all
7923 and it may be omitted in this case.
7924
7925 =item B<Type> I<Type>
7926
7927 Sets the type used to dispatch this value. Detailed information about types and
7928 their configuration can be found in L<types.db(5)>.
7929
7930 =item B<Instance> I<TypeInstance>
7931
7932 This optional setting sets the type instance to use.
7933
7934 =back
7935
7936 =head2 Plugin C<tail_csv>
7937
7938 The I<tail_csv plugin> reads files in the CSV format, e.g. the statistics file
7939 written by I<Snort>.
7940
7941 B<Synopsis:>
7942
7943  <Plugin "tail_csv">
7944    <Metric "snort-dropped">
7945        Type "percent"
7946        Instance "dropped"
7947        Index 1
7948    </Metric>
7949    <File "/var/log/snort/snort.stats">
7950        Plugin "snortstats"
7951        Instance "eth0"
7952        Interval 600
7953        Collect "snort-dropped"
7954    </File>
7955  </Plugin>
7956
7957 The configuration consists of one or more B<Metric> blocks that define an index
7958 into the line of the CSV file and how this value is mapped to I<collectd's>
7959 internal representation. These are followed by one or more B<Instance> blocks
7960 which configure which file to read, in which interval and which metrics to
7961 extract.
7962
7963 =over 4
7964
7965 =item E<lt>B<Metric> I<Name>E<gt>
7966
7967 The B<Metric> block configures a new metric to be extracted from the statistics
7968 file and how it is mapped on I<collectd's> data model. The string I<Name> is
7969 only used inside the B<Instance> blocks to refer to this block, so you can use
7970 one B<Metric> block for multiple CSV files.
7971
7972 =over 4
7973
7974 =item B<Type> I<Type>
7975
7976 Configures which I<Type> to use when dispatching this metric. Types are defined
7977 in the L<types.db(5)> file, see the appropriate manual page for more
7978 information on specifying types. Only types with a single I<data source> are
7979 supported by the I<tail_csv plugin>. The information whether the value is an
7980 absolute value (i.e. a C<GAUGE>) or a rate (i.e. a C<DERIVE>) is taken from the
7981 I<Type's> definition.
7982
7983 =item B<Instance> I<TypeInstance>
7984
7985 If set, I<TypeInstance> is used to populate the type instance field of the
7986 created value lists. Otherwise, no type instance is used.
7987
7988 =item B<ValueFrom> I<Index>
7989
7990 Configure to read the value from the field with the zero-based index I<Index>.
7991 If the value is parsed as signed integer, unsigned integer or double depends on
7992 the B<Type> setting, see above.
7993
7994 =back
7995
7996 =item E<lt>B<File> I<Path>E<gt>
7997
7998 Each B<File> block represents one CSV file to read. There must be at least one
7999 I<File> block but there can be multiple if you have multiple CSV files.
8000
8001 =over 4
8002
8003 =item B<Plugin> I<Plugin>
8004
8005 Use I<Plugin> as the plugin name when submitting values.
8006 Defaults to 'tail_csv'.
8007
8008 =item B<Instance> I<PluginInstance>
8009
8010 Sets the I<plugin instance> used when dispatching the values.
8011
8012 =item B<Collect> I<Metric>
8013
8014 Specifies which I<Metric> to collect. This option must be specified at least
8015 once, and you can use this option multiple times to specify more than one
8016 metric to be extracted from this statistic file.
8017
8018 =item B<Interval> I<Seconds>
8019
8020 Configures the interval in which to read values from this instance / file.
8021 Defaults to the plugin's default interval.
8022
8023 =item B<TimeFrom> I<Index>
8024
8025 Rather than using the local time when dispatching a value, read the timestamp
8026 from the field with the zero-based index I<Index>. The value is interpreted as
8027 seconds since epoch. The value is parsed as a double and may be factional.
8028
8029 =back
8030
8031 =back
8032
8033 =head2 Plugin C<teamspeak2>
8034
8035 The C<teamspeak2 plugin> connects to the query port of a teamspeak2 server and
8036 polls interesting global and virtual server data. The plugin can query only one
8037 physical server but unlimited virtual servers. You can use the following
8038 options to configure it:
8039
8040 =over 4
8041
8042 =item B<Host> I<hostname/ip>
8043
8044 The hostname or ip which identifies the physical server.
8045 Default: 127.0.0.1
8046
8047 =item B<Port> I<port>
8048
8049 The query port of the physical server. This needs to be a string.
8050 Default: "51234"
8051
8052 =item B<Server> I<port>
8053
8054 This option has to be added once for every virtual server the plugin should
8055 query. If you want to query the virtual server on port 8767 this is what the
8056 option would look like:
8057
8058   Server "8767"
8059
8060 This option, although numeric, needs to be a string, i.E<nbsp>e. you B<must>
8061 use quotes around it! If no such statement is given only global information
8062 will be collected.
8063
8064 =back
8065
8066 =head2 Plugin C<ted>
8067
8068 The I<TED> plugin connects to a device of "The Energy Detective", a device to
8069 measure power consumption. These devices are usually connected to a serial
8070 (RS232) or USB port. The plugin opens a configured device and tries to read the
8071 current energy readings. For more information on TED, visit
8072 L<http://www.theenergydetective.com/>.
8073
8074 Available configuration options:
8075
8076 =over 4
8077
8078 =item B<Device> I<Path>
8079
8080 Path to the device on which TED is connected. collectd will need read and write
8081 permissions on that file.
8082
8083 Default: B</dev/ttyUSB0>
8084
8085 =item B<Retries> I<Num>
8086
8087 Apparently reading from TED is not that reliable. You can therefore configure a
8088 number of retries here. You only configure the I<retries> here, to if you
8089 specify zero, one reading will be performed (but no retries if that fails); if
8090 you specify three, a maximum of four readings are performed. Negative values
8091 are illegal.
8092
8093 Default: B<0>
8094
8095 =back
8096
8097 =head2 Plugin C<tcpconns>
8098
8099 The C<tcpconns plugin> counts the number of currently established TCP
8100 connections based on the local port and/or the remote port. Since there may be
8101 a lot of connections the default if to count all connections with a local port,
8102 for which a listening socket is opened. You can use the following options to
8103 fine-tune the ports you are interested in:
8104
8105 =over 4
8106
8107 =item B<ListeningPorts> I<true>|I<false>
8108
8109 If this option is set to I<true>, statistics for all local ports for which a
8110 listening socket exists are collected. The default depends on B<LocalPort> and
8111 B<RemotePort> (see below): If no port at all is specifically selected, the
8112 default is to collect listening ports. If specific ports (no matter if local or
8113 remote ports) are selected, this option defaults to I<false>, i.E<nbsp>e. only
8114 the selected ports will be collected unless this option is set to I<true>
8115 specifically.
8116
8117 =item B<LocalPort> I<Port>
8118
8119 Count the connections to a specific local port. This can be used to see how
8120 many connections are handled by a specific daemon, e.E<nbsp>g. the mailserver.
8121 You have to specify the port in numeric form, so for the mailserver example
8122 you'd need to set B<25>.
8123
8124 =item B<RemotePort> I<Port>
8125
8126 Count the connections to a specific remote port. This is useful to see how
8127 much a remote service is used. This is most useful if you want to know how many
8128 connections a local service has opened to remote services, e.E<nbsp>g. how many
8129 connections a mail server or news server has to other mail or news servers, or
8130 how many connections a web proxy holds to web servers. You have to give the
8131 port in numeric form.
8132
8133 =item B<AllPortsSummary> I<true>|I<false>
8134
8135 If this option is set to I<true> a summary of statistics from all connections
8136 are collected. This option defaults to I<false>.
8137
8138 =back
8139
8140 =head2 Plugin C<thermal>
8141
8142 =over 4
8143
8144 =item B<ForceUseProcfs> I<true>|I<false>
8145
8146 By default, the I<Thermal plugin> tries to read the statistics from the Linux
8147 C<sysfs> interface. If that is not available, the plugin falls back to the
8148 C<procfs> interface. By setting this option to I<true>, you can force the
8149 plugin to use the latter. This option defaults to I<false>.
8150
8151 =item B<Device> I<Device>
8152
8153 Selects the name of the thermal device that you want to collect or ignore,
8154 depending on the value of the B<IgnoreSelected> option. This option may be
8155 used multiple times to specify a list of devices.
8156
8157 See F</"IGNORELISTS"> for details.
8158
8159 =item B<IgnoreSelected> I<true>|I<false>
8160
8161 Invert the selection: If set to true, all devices B<except> the ones that
8162 match the device names specified by the B<Device> option are collected. By
8163 default only selected devices are collected if a selection is made. If no
8164 selection is configured at all, B<all> devices are selected.
8165
8166 =back
8167
8168 =head2 Plugin C<threshold>
8169
8170 The I<Threshold plugin> checks values collected or received by I<collectd>
8171 against a configurable I<threshold> and issues I<notifications> if values are
8172 out of bounds.
8173
8174 Documentation for this plugin is available in the L<collectd-threshold(5)>
8175 manual page.
8176
8177 =head2 Plugin C<tokyotyrant>
8178
8179 The I<TokyoTyrant plugin> connects to a TokyoTyrant server and collects a
8180 couple metrics: number of records, and database size on disk.
8181
8182 =over 4
8183
8184 =item B<Host> I<Hostname/IP>
8185
8186 The hostname or IP which identifies the server.
8187 Default: B<127.0.0.1>
8188
8189 =item B<Port> I<Service/Port>
8190
8191 The query port of the server. This needs to be a string, even if the port is
8192 given in its numeric form.
8193 Default: B<1978>
8194
8195 =back
8196
8197 =head2 Plugin C<turbostat>
8198
8199 The I<Turbostat plugin> reads CPU frequency and C-state residency on modern
8200 Intel processors by using I<Model Specific Registers>.
8201
8202 =over 4
8203
8204 =item B<CoreCstates> I<Bitmask(Integer)>
8205
8206 Bit mask of the list of core C-states supported by the processor.
8207 This option should only be used if the automated detection fails.
8208 Default value extracted from the CPU model and family.
8209
8210 Currently supported C-states (by this plugin): 3, 6, 7
8211
8212 B<Example:>
8213
8214   All states (3, 6 and 7):
8215   (1<<3) + (1<<6) + (1<<7) = 392
8216
8217 =item B<PackageCstates> I<Bitmask(Integer)>
8218
8219 Bit mask of the list of packages C-states supported by the processor. This
8220 option should only be used if the automated detection fails. Default value
8221 extracted from the CPU model and family.
8222
8223 Currently supported C-states (by this plugin): 2, 3, 6, 7, 8, 9, 10
8224
8225 B<Example:>
8226
8227   States 2, 3, 6 and 7:
8228   (1<<2) + (1<<3) + (1<<6) + (1<<7) = 396
8229
8230 =item B<SystemManagementInterrupt> I<true>|I<false>
8231
8232 Boolean enabling the collection of the I/O System-Management Interrupt counter.
8233 This option should only be used if the automated detection fails or if you want
8234 to disable this feature.
8235
8236 =item B<DigitalTemperatureSensor> I<true>|I<false>
8237
8238 Boolean enabling the collection of the temperature of each core. This option
8239 should only be used if the automated detection fails or if you want to disable
8240 this feature.
8241
8242 =item B<TCCActivationTemp> I<Temperature>
8243
8244 I<Thermal Control Circuit Activation Temperature> of the installed CPU. This
8245 temperature is used when collecting the temperature of cores or packages. This
8246 option should only be used if the automated detection fails. Default value
8247 extracted from B<MSR_IA32_TEMPERATURE_TARGET>.
8248
8249 =item B<RunningAveragePowerLimit> I<Bitmask(Integer)>
8250
8251 Bit mask of the list of elements to be thermally monitored. This option should
8252 only be used if the automated detection fails or if you want to disable some
8253 collections. The different bits of this bit mask accepted by this plugin are:
8254
8255 =over 4
8256
8257 =item 0 ('1'): Package
8258
8259 =item 1 ('2'): DRAM
8260
8261 =item 2 ('4'): Cores
8262
8263 =item 3 ('8'): Embedded graphic device
8264
8265 =back
8266
8267 =item B<LogicalCoreNames> I<true>|I<false>
8268
8269 Boolean enabling the use of logical core numbering for per core statistics.
8270 When enabled, C<cpuE<lt>nE<gt>> is used as plugin instance, where I<n> is a
8271 dynamic number assigned by the kernel. Otherwise, C<coreE<lt>nE<gt>> is used
8272 if there is only one package and C<pkgE<lt>nE<gt>-coreE<lt>mE<gt>> if there is
8273 more than one, where I<n> is the n-th core of package I<m>.
8274
8275 =back
8276
8277 =head2 Plugin C<unixsock>
8278
8279 =over 4
8280
8281 =item B<SocketFile> I<Path>
8282
8283 Sets the socket-file which is to be created.
8284
8285 =item B<SocketGroup> I<Group>
8286
8287 If running as root change the group of the UNIX-socket after it has been
8288 created. Defaults to B<collectd>.
8289
8290 =item B<SocketPerms> I<Permissions>
8291
8292 Change the file permissions of the UNIX-socket after it has been created. The
8293 permissions must be given as a numeric, octal value as you would pass to
8294 L<chmod(1)>. Defaults to B<0770>.
8295
8296 =item B<DeleteSocket> B<false>|B<true>
8297
8298 If set to B<true>, delete the socket file before calling L<bind(2)>, if a file
8299 with the given name already exists. If I<collectd> crashes a socket file may be
8300 left over, preventing the daemon from opening a new socket when restarted.
8301 Since this is potentially dangerous, this defaults to B<false>.
8302
8303 =back
8304
8305 =head2 Plugin C<uuid>
8306
8307 This plugin, if loaded, causes the Hostname to be taken from the machine's
8308 UUID. The UUID is a universally unique designation for the machine, usually
8309 taken from the machine's BIOS. This is most useful if the machine is running in
8310 a virtual environment such as Xen, in which case the UUID is preserved across
8311 shutdowns and migration.
8312
8313 The following methods are used to find the machine's UUID, in order:
8314
8315 =over 4
8316
8317 =item *
8318
8319 Check I</etc/uuid> (or I<UUIDFile>).
8320
8321 =item *
8322
8323 Check for UUID from HAL (L<http://www.freedesktop.org/wiki/Software/hal>) if
8324 present.
8325
8326 =item *
8327
8328 Check for UUID from C<dmidecode> / SMBIOS.
8329
8330 =item *
8331
8332 Check for UUID from Xen hypervisor.
8333
8334 =back
8335
8336 If no UUID can be found then the hostname is not modified.
8337
8338 =over 4
8339
8340 =item B<UUIDFile> I<Path>
8341
8342 Take the UUID from the given file (default I</etc/uuid>).
8343
8344 =back
8345
8346 =head2 Plugin C<varnish>
8347
8348 The I<varnish plugin> collects information about Varnish, an HTTP accelerator.
8349 It collects a subset of the values displayed by L<varnishstat(1)>, and
8350 organizes them in categories which can be enabled or disabled. Currently only
8351 metrics shown in L<varnishstat(1)>'s I<MAIN> section are collected. The exact
8352 meaning of each metric can be found in L<varnish-counters(7)>.
8353
8354 Synopsis:
8355
8356  <Plugin "varnish">
8357    <Instance "example">
8358      CollectBackend     true
8359      CollectBan         false
8360      CollectCache       true
8361      CollectConnections true
8362      CollectDirectorDNS false
8363      CollectESI         false
8364      CollectFetch       false
8365      CollectHCB         false
8366      CollectObjects     false
8367      CollectPurge       false
8368      CollectSession     false
8369      CollectSHM         true
8370      CollectSMA         false
8371      CollectSMS         false
8372      CollectSM          false
8373      CollectStruct      false
8374      CollectTotals      false
8375      CollectUptime      false
8376      CollectVCL         false
8377      CollectVSM         false
8378      CollectWorkers     false
8379      CollectLock        false
8380      CollectMempool     false
8381      CollectManagement  false
8382      CollectSMF         false
8383      CollectVBE         false
8384    </Instance>
8385  </Plugin>
8386
8387 The configuration consists of one or more E<lt>B<Instance>E<nbsp>I<Name>E<gt>
8388 blocks. I<Name> is the parameter passed to "varnishd -n". If left empty, it
8389 will collectd statistics from the default "varnishd" instance (this should work
8390 fine in most cases).
8391
8392 Inside each E<lt>B<Instance>E<gt> blocks, the following options are recognized:
8393
8394 =over 4
8395
8396 =item B<CollectBackend> B<true>|B<false>
8397
8398 Back-end connection statistics, such as successful, reused,
8399 and closed connections. True by default.
8400
8401 =item B<CollectBan> B<true>|B<false>
8402
8403 Statistics about ban operations, such as number of bans added, retired, and
8404 number of objects tested against ban operations. Only available with Varnish
8405 3.x and above. False by default.
8406
8407 =item B<CollectCache> B<true>|B<false>
8408
8409 Cache hits and misses. True by default.
8410
8411 =item B<CollectConnections> B<true>|B<false>
8412
8413 Number of client connections received, accepted and dropped. True by default.
8414
8415 =item B<CollectDirectorDNS> B<true>|B<false>
8416
8417 DNS director lookup cache statistics. Only available with Varnish 3.x. False by
8418 default.
8419
8420 =item B<CollectESI> B<true>|B<false>
8421
8422 Edge Side Includes (ESI) parse statistics. False by default.
8423
8424 =item B<CollectFetch> B<true>|B<false>
8425
8426 Statistics about fetches (HTTP requests sent to the backend). False by default.
8427
8428 =item B<CollectHCB> B<true>|B<false>
8429
8430 Inserts and look-ups in the crit bit tree based hash. Look-ups are
8431 divided into locked and unlocked look-ups. False by default.
8432
8433 =item B<CollectObjects> B<true>|B<false>
8434
8435 Statistics on cached objects: number of objects expired, nuked (prematurely
8436 expired), saved, moved, etc. False by default.
8437
8438 =item B<CollectPurge> B<true>|B<false>
8439
8440 Statistics about purge operations, such as number of purges added, retired, and
8441 number of objects tested against purge operations. Only available with Varnish
8442 2.x. False by default.
8443
8444 =item B<CollectSession> B<true>|B<false>
8445
8446 Client session statistics. Number of past and current sessions, session herd and
8447 linger counters, etc. False by default. Note that if using Varnish 4.x, some
8448 metrics found in the Connections and Threads sections with previous versions of
8449 Varnish have been moved here.
8450
8451 =item B<CollectSHM> B<true>|B<false>
8452
8453 Statistics about the shared memory log, a memory region to store
8454 log messages which is flushed to disk when full. True by default.
8455
8456 =item B<CollectSMA> B<true>|B<false>
8457
8458 malloc or umem (umem_alloc(3MALLOC) based) storage statistics. The umem storage
8459 component is Solaris specific.
8460 Note: SMA and SMF share counters, enable only the one used by the Varnish
8461 instance.
8462 Only available with Varnish 2.x. False by
8463 default.
8464
8465 =item B<CollectSMS> B<true>|B<false>
8466
8467 synth (synthetic content) storage statistics. This storage
8468 component is used internally only. False by default.
8469
8470 =item B<CollectSM> B<true>|B<false>
8471
8472 file (memory mapped file) storage statistics. Only available with Varnish 2.x.,
8473 in varnish 4.x. use CollectSMF.
8474 False by default.
8475
8476 =item B<CollectStruct> B<true>|B<false>
8477
8478 Current varnish internal state statistics. Number of current sessions, objects
8479 in cache store, open connections to backends (with Varnish 2.x), etc. False by
8480 default.
8481
8482 =item B<CollectTotals> B<true>|B<false>
8483
8484 Collects overview counters, such as the number of sessions created,
8485 the number of requests and bytes transferred. False by default.
8486
8487 =item B<CollectUptime> B<true>|B<false>
8488
8489 Varnish uptime. Only available with Varnish 3.x and above. False by default.
8490
8491 =item B<CollectVCL> B<true>|B<false>
8492
8493 Number of total (available + discarded) VCL (config files). False by default.
8494
8495 =item B<CollectVSM> B<true>|B<false>
8496
8497 Collect statistics about Varnish's shared memory usage (used by the logging and
8498 statistics subsystems). Only available with Varnish 4.x. False by default.
8499
8500 =item B<CollectWorkers> B<true>|B<false>
8501
8502 Collect statistics about worker threads. False by default.
8503
8504 =item B<CollectVBE> B<true>|B<false>
8505
8506 Backend counters. Only available with Varnish 4.x. False by default.
8507
8508 =item B<CollectSMF> B<true>|B<false>
8509
8510 file (memory mapped file) storage statistics. Only available with Varnish 4.x.
8511 Note: SMA and SMF share counters, enable only the one used by the Varnish
8512 instance.
8513 Used to be called SM in Varnish 2.x. False by default.
8514
8515 =item B<CollectManagement> B<true>|B<false>
8516
8517 Management process counters. Only available with Varnish 4.x. False by default.
8518
8519 =item B<CollectLock> B<true>|B<false>
8520
8521 Lock counters. Only available with Varnish 4.x. False by default.
8522
8523 =item B<CollectMempool> B<true>|B<false>
8524
8525 Memory pool counters. Only available with Varnish 4.x. False by default.
8526
8527 =back
8528
8529 =head2 Plugin C<virt>
8530
8531 This plugin allows CPU, disk, network load and other metrics to be collected for
8532 virtualized guests on the machine. The statistics are collected through libvirt
8533 API (L<http://libvirt.org/>). Majority of metrics can be gathered without
8534 installing any additional software on guests, especially I<collectd>, which runs
8535 only on the host system.
8536
8537 Only I<Connection> is required.
8538
8539 =over 4
8540
8541 =item B<Connection> I<uri>
8542
8543 Connect to the hypervisor given by I<uri>. For example if using Xen use:
8544
8545  Connection "xen:///"
8546
8547 Details which URIs allowed are given at L<http://libvirt.org/uri.html>.
8548
8549 =item B<RefreshInterval> I<seconds>
8550
8551 Refresh the list of domains and devices every I<seconds>. The default is 60
8552 seconds. Setting this to be the same or smaller than the I<Interval> will cause
8553 the list of domains and devices to be refreshed on every iteration.
8554
8555 Refreshing the devices in particular is quite a costly operation, so if your
8556 virtualization setup is static you might consider increasing this. If this
8557 option is set to 0, refreshing is disabled completely.
8558
8559 =item B<Domain> I<name>
8560
8561 =item B<BlockDevice> I<name:dev>
8562
8563 =item B<InterfaceDevice> I<name:dev>
8564
8565 =item B<IgnoreSelected> B<true>|B<false>
8566
8567 Select which domains and devices are collected.
8568
8569 If I<IgnoreSelected> is not given or B<false> then only the listed domains and
8570 disk/network devices are collected.
8571
8572 If I<IgnoreSelected> is B<true> then the test is reversed and the listed
8573 domains and disk/network devices are ignored, while the rest are collected.
8574
8575 The domain name and device names may use a regular expression, if the name is
8576 surrounded by I</.../> and collectd was compiled with support for regexps.
8577
8578 The default is to collect statistics for all domains and all their devices.
8579
8580 Example:
8581
8582  BlockDevice "/:hdb/"
8583  IgnoreSelected "true"
8584
8585 Ignore all I<hdb> devices on any domain, but other block devices (eg. I<hda>)
8586 will be collected.
8587
8588 =item B<BlockDeviceFormat> B<target>|B<source>
8589
8590 If I<BlockDeviceFormat> is set to B<target>, the default, then the device name
8591 seen by the guest will be used for reporting metrics.
8592 This corresponds to the C<E<lt>targetE<gt>> node in the XML definition of the
8593 domain.
8594
8595 If I<BlockDeviceFormat> is set to B<source>, then metrics will be reported
8596 using the path of the source, e.g. an image file.
8597 This corresponds to the C<E<lt>sourceE<gt>> node in the XML definition of the
8598 domain.
8599
8600 B<Example:>
8601
8602 If the domain XML have the following device defined:
8603
8604   <disk type='block' device='disk'>
8605     <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
8606     <source dev='/var/lib/libvirt/images/image1.qcow2'/>
8607     <target dev='sda' bus='scsi'/>
8608     <boot order='2'/>
8609     <address type='drive' controller='0' bus='0' target='0' unit='0'/>
8610   </disk>
8611
8612 Setting C<BlockDeviceFormat target> will cause the I<type instance> to be set
8613 to C<sda>.
8614 Setting C<BlockDeviceFormat source> will cause the I<type instance> to be set
8615 to C<var_lib_libvirt_images_image1.qcow2>.
8616
8617 =item B<BlockDeviceFormatBasename> B<false>|B<true>
8618
8619 The B<BlockDeviceFormatBasename> controls whether the full path or the
8620 L<basename(1)> of the source is being used as the I<type instance> when
8621 B<BlockDeviceFormat> is set to B<source>. Defaults to B<false>.
8622
8623 B<Example:>
8624
8625 Assume the device path (source tag) is C</var/lib/libvirt/images/image1.qcow2>.
8626 Setting C<BlockDeviceFormatBasename false> will cause the I<type instance> to
8627 be set to C<var_lib_libvirt_images_image1.qcow2>.
8628 Setting C<BlockDeviceFormatBasename true> will cause the I<type instance> to be
8629 set to C<image1.qcow2>.
8630
8631 =item B<HostnameFormat> B<name|uuid|hostname|...>
8632
8633 When the virt plugin logs data, it sets the hostname of the collected data
8634 according to this setting. The default is to use the guest name as provided by
8635 the hypervisor, which is equal to setting B<name>.
8636
8637 B<uuid> means use the guest's UUID. This is useful if you want to track the
8638 same guest across migrations.
8639
8640 B<hostname> means to use the global B<Hostname> setting, which is probably not
8641 useful on its own because all guests will appear to have the same name.
8642
8643 You can also specify combinations of these fields. For example B<name uuid>
8644 means to concatenate the guest name and UUID (with a literal colon character
8645 between, thus I<"foo:1234-1234-1234-1234">).
8646
8647 At the moment of writing (collectd-5.5), hostname string is limited to 62
8648 characters. In case when combination of fields exceeds 62 characters,
8649 hostname will be truncated without a warning.
8650
8651 =item B<InterfaceFormat> B<name>|B<address>
8652
8653 When the virt plugin logs interface data, it sets the name of the collected
8654 data according to this setting. The default is to use the path as provided by
8655 the hypervisor (the "dev" property of the target node), which is equal to
8656 setting B<name>.
8657
8658 B<address> means use the interface's mac address. This is useful since the
8659 interface path might change between reboots of a guest or across migrations.
8660
8661 =item B<PluginInstanceFormat> B<name|uuid|none>
8662
8663 When the virt plugin logs data, it sets the plugin_instance of the collected
8664 data according to this setting. The default is to not set the plugin_instance.
8665
8666 B<name> means use the guest's name as provided by the hypervisor.
8667 B<uuid> means use the guest's UUID.
8668
8669 You can also specify combinations of the B<name> and B<uuid> fields.
8670 For example B<name uuid> means to concatenate the guest name and UUID
8671 (with a literal colon character between, thus I<"foo:1234-1234-1234-1234">).
8672
8673 =item B<Instances> B<integer>
8674
8675 How many read instances you want to use for this plugin. The default is one,
8676 and the sensible setting is a multiple of the B<ReadThreads> value.
8677 If you are not sure, just use the default setting.
8678
8679 =item B<ExtraStats> B<string>
8680
8681 Report additional extra statistics. The default is no extra statistics, preserving
8682 the previous behaviour of the plugin. If unsure, leave the default. If enabled,
8683 allows the plugin to reported more detailed statistics about the behaviour of
8684 Virtual Machines. The argument is a space-separated list of selectors.
8685
8686 Currently supported selectors are:
8687
8688 =over 4
8689
8690 =item B<cpu_util>: report CPU utilization per domain in percentage.
8691
8692 =item B<disk>: report extra statistics like number of flush operations and total
8693 service time for read, write and flush operations. Requires libvirt API version
8694 I<0.9.5> or later.
8695
8696 =item B<disk_err>: report disk errors if any occured. Requires libvirt API version
8697 I<0.9.10> or later.
8698
8699 =item B<domain_state>: report domain state and reason in human-readable format as
8700 a notification. If libvirt API version I<0.9.2> or later is available, domain
8701 reason will be included in notification.
8702
8703 =item B<fs_info>: report file system information as a notification. Requires
8704 libvirt API version I<1.2.11> or later. Can be collected only if I<Guest Agent>
8705 is installed and configured inside VM. Make sure that installed I<Guest Agent>
8706 version supports retrieving  file system information.
8707
8708 =item B<job_stats_background>: report statistics about progress of a background
8709 job on a domain. Only one type of job statistics can be collected at the same time.
8710 Requires libvirt API version I<1.2.9> or later.
8711
8712 =item B<job_stats_completed>: report statistics about a recently completed job on
8713 a domain. Only one type of job statistics can be collected at the same time.
8714 Requires libvirt API version I<1.2.9> or later.
8715
8716 =item B<pcpu>: report the physical user/system cpu time consumed by the hypervisor, per-vm.
8717 Requires libvirt API version I<0.9.11> or later.
8718
8719 =item B<perf>: report performance monitoring events. To collect performance
8720 metrics they must be enabled for domain and supported by the platform. Requires
8721 libvirt API version I<1.3.3> or later.
8722 B<Note>: I<perf> metrics can't be collected if I<intel_rdt> plugin is enabled.
8723
8724 =item B<vcpupin>: report pinning of domain VCPUs to host physical CPUs.
8725
8726 =back
8727
8728 =back
8729
8730 =head2 Plugin C<vmem>
8731
8732 The C<vmem> plugin collects information about the usage of virtual memory.
8733 Since the statistics provided by the Linux kernel are very detailed, they are
8734 collected very detailed. However, to get all the details, you have to switch
8735 them on manually. Most people just want an overview over, such as the number of
8736 pages read from swap space.
8737
8738 =over 4
8739
8740 =item B<Verbose> B<true>|B<false>
8741
8742 Enables verbose collection of information. This will start collecting page
8743 "actions", e.E<nbsp>g. page allocations, (de)activations, steals and so on.
8744 Part of these statistics are collected on a "per zone" basis.
8745
8746 =back
8747
8748 =head2 Plugin C<vserver>
8749
8750 This plugin doesn't have any options. B<VServer> support is only available for
8751 Linux. It cannot yet be found in a vanilla kernel, though. To make use of this
8752 plugin you need a kernel that has B<VServer> support built in, i.E<nbsp>e. you
8753 need to apply the patches and compile your own kernel, which will then provide
8754 the F</proc/virtual> filesystem that is required by this plugin.
8755
8756 The B<VServer> homepage can be found at L<http://linux-vserver.org/>.
8757
8758 B<Note>: The traffic collected by this plugin accounts for the amount of
8759 traffic passing a socket which might be a lot less than the actual on-wire
8760 traffic (e.E<nbsp>g. due to headers and retransmission). If you want to
8761 collect on-wire traffic you could, for example, use the logging facilities of
8762 iptables to feed data for the guest IPs into the iptables plugin.
8763
8764 =head2 Plugin C<write_graphite>
8765
8766 The C<write_graphite> plugin writes data to I<Graphite>, an open-source metrics
8767 storage and graphing project. The plugin connects to I<Carbon>, the data layer
8768 of I<Graphite>, via I<TCP> or I<UDP> and sends data via the "line based"
8769 protocol (per default using portE<nbsp>2003). The data will be sent in blocks
8770 of at most 1428 bytes to minimize the number of network packets.
8771
8772 Synopsis:
8773
8774  <Plugin write_graphite>
8775    <Node "example">
8776      Host "localhost"
8777      Port "2003"
8778      Protocol "tcp"
8779      LogSendErrors true
8780      Prefix "collectd"
8781    </Node>
8782  </Plugin>
8783
8784 The configuration consists of one or more E<lt>B<Node>E<nbsp>I<Name>E<gt>
8785 blocks. Inside the B<Node> blocks, the following options are recognized:
8786
8787 =over 4
8788
8789 =item B<Host> I<Address>
8790
8791 Hostname or address to connect to. Defaults to C<localhost>.
8792
8793 =item B<Port> I<Service>
8794
8795 Service name or port number to connect to. Defaults to C<2003>.
8796
8797 =item B<Protocol> I<String>
8798
8799 Protocol to use when connecting to I<Graphite>. Defaults to C<tcp>.
8800
8801 =item B<ReconnectInterval> I<Seconds>
8802
8803 When set to non-zero, forces the connection to the Graphite backend to be
8804 closed and re-opend periodically. This behavior is desirable in environments
8805 where the connection to the Graphite backend is done through load balancers,
8806 for example. When set to zero, the default, the connetion is kept open for as
8807 long as possible.
8808
8809 =item B<LogSendErrors> B<false>|B<true>
8810
8811 If set to B<true> (the default), logs errors when sending data to I<Graphite>.
8812 If set to B<false>, it will not log the errors. This is especially useful when
8813 using Protocol UDP since many times we want to use the "fire-and-forget"
8814 approach and logging errors fills syslog with unneeded messages.
8815
8816 =item B<Prefix> I<String>
8817
8818 When set, I<String> is added in front of the host name. Dots and whitespace are
8819 I<not> escaped in this string (see B<EscapeCharacter> below).
8820
8821 =item B<Postfix> I<String>
8822
8823 When set, I<String> is appended to the host name. Dots and whitespace are
8824 I<not> escaped in this string (see B<EscapeCharacter> below).
8825
8826 =item B<EscapeCharacter> I<Char>
8827
8828 I<Carbon> uses the dot (C<.>) as escape character and doesn't allow whitespace
8829 in the identifier. The B<EscapeCharacter> option determines which character
8830 dots, whitespace and control characters are replaced with. Defaults to
8831 underscore (C<_>).
8832
8833 =item B<StoreRates> B<false>|B<true>
8834
8835 If set to B<true> (the default), convert counter values to rates. If set to
8836 B<false> counter values are stored as is, i.E<nbsp>e. as an increasing integer
8837 number.
8838
8839 =item B<SeparateInstances> B<false>|B<true>
8840
8841 If set to B<true>, the plugin instance and type instance will be in their own
8842 path component, for example C<host.cpu.0.cpu.idle>. If set to B<false> (the
8843 default), the plugin and plugin instance (and likewise the type and type
8844 instance) are put into one component, for example C<host.cpu-0.cpu-idle>.
8845
8846 =item B<AlwaysAppendDS> B<false>|B<true>
8847
8848 If set to B<true>, append the name of the I<Data Source> (DS) to the "metric"
8849 identifier. If set to B<false> (the default), this is only done when there is
8850 more than one DS.
8851
8852 =item B<PreserveSeparator> B<false>|B<true>
8853
8854 If set to B<false> (the default) the C<.> (dot) character is replaced with
8855 I<EscapeCharacter>. Otherwise, if set to B<true>, the C<.> (dot) character
8856 is preserved, i.e. passed through.
8857
8858 =item B<DropDuplicateFields> B<false>|B<true>
8859
8860 If set to B<true>, detect and remove duplicate components in Graphite metric
8861 names. For example, the metric name  C<host.load.load.shortterm> will
8862 be shortened to C<host.load.shortterm>.
8863
8864 =back
8865
8866 =head2 Plugin C<write_log>
8867
8868 The C<write_log> plugin writes metrics as INFO log messages.
8869
8870 This plugin supports two output formats: I<Graphite> and I<JSON>.
8871
8872 Synopsis:
8873
8874  <Plugin write_log>
8875    Format Graphite
8876  </Plugin>
8877
8878 =over 4
8879
8880 =item B<Format> I<Format>
8881
8882 The output format to use. Can be one of C<Graphite> or C<JSON>.
8883
8884 =back
8885
8886 =head2 Plugin C<write_tsdb>
8887
8888 The C<write_tsdb> plugin writes data to I<OpenTSDB>, a scalable open-source
8889 time series database. The plugin connects to a I<TSD>, a masterless, no shared
8890 state daemon that ingests metrics and stores them in HBase. The plugin uses
8891 I<TCP> over the "line based" protocol with a default port 4242. The data will
8892 be sent in blocks of at most 1428 bytes to minimize the number of network
8893 packets.
8894
8895 Synopsis:
8896
8897  <Plugin write_tsdb>
8898    ResolveInterval 60
8899    ResolveJitter 60
8900    <Node "example">
8901      Host "tsd-1.my.domain"
8902      Port "4242"
8903      HostTags "status=production"
8904    </Node>
8905  </Plugin>
8906
8907 The configuration consists of one or more E<lt>B<Node>E<nbsp>I<Name>E<gt>
8908 blocks and global directives.
8909
8910 Global directives are:
8911
8912 =over 4
8913
8914 =item B<ResolveInterval> I<seconds>
8915
8916 =item B<ResolveJitter> I<seconds>
8917
8918 When I<collectd> connects to a TSDB node, it will request the hostname from
8919 DNS. This can become a problem if the TSDB node is unavailable or badly
8920 configured because collectd will request DNS in order to reconnect for every
8921 metric, which can flood your DNS. So you can cache the last value for
8922 I<ResolveInterval> seconds.
8923 Defaults to the I<Interval> of the I<write_tsdb plugin>, e.g. 10E<nbsp>seconds.
8924
8925 You can also define a jitter, a random interval to wait in addition to
8926 I<ResolveInterval>. This prevents all your collectd servers to resolve the
8927 hostname at the same time when the connection fails.
8928 Defaults to the I<Interval> of the I<write_tsdb plugin>, e.g. 10E<nbsp>seconds.
8929
8930 B<Note:> If the DNS resolution has already been successful when the socket
8931 closes, the plugin will try to reconnect immediately with the cached
8932 information. DNS is queried only when the socket is closed for a longer than
8933 I<ResolveInterval> + I<ResolveJitter> seconds.
8934
8935 =back
8936
8937 Inside the B<Node> blocks, the following options are recognized:
8938
8939 =over 4
8940
8941 =item B<Host> I<Address>
8942
8943 Hostname or address to connect to. Defaults to C<localhost>.
8944
8945 =item B<Port> I<Service>
8946
8947 Service name or port number to connect to. Defaults to C<4242>.
8948
8949
8950 =item B<HostTags> I<String>
8951
8952 When set, I<HostTags> is added to the end of the metric. It is intended to be
8953 used for name=value pairs that the TSD will tag the metric with. Dots and
8954 whitespace are I<not> escaped in this string.
8955
8956 =item B<StoreRates> B<false>|B<true>
8957
8958 If set to B<true>, convert counter values to rates. If set to B<false>
8959 (the default) counter values are stored as is, as an increasing
8960 integer number.
8961
8962 =item B<AlwaysAppendDS> B<false>|B<true>
8963
8964 If set the B<true>, append the name of the I<Data Source> (DS) to the "metric"
8965 identifier. If set to B<false> (the default), this is only done when there is
8966 more than one DS.
8967
8968 =back
8969
8970 =head2 Plugin C<write_mongodb>
8971
8972 The I<write_mongodb plugin> will send values to I<MongoDB>, a schema-less
8973 NoSQL database.
8974
8975 B<Synopsis:>
8976
8977  <Plugin "write_mongodb">
8978    <Node "default">
8979      Host "localhost"
8980      Port "27017"
8981      Timeout 1000
8982      StoreRates true
8983    </Node>
8984  </Plugin>
8985
8986 The plugin can send values to multiple instances of I<MongoDB> by specifying
8987 one B<Node> block for each instance. Within the B<Node> blocks, the following
8988 options are available:
8989
8990 =over 4
8991
8992 =item B<Host> I<Address>
8993
8994 Hostname or address to connect to. Defaults to C<localhost>.
8995
8996 =item B<Port> I<Service>
8997
8998 Service name or port number to connect to. Defaults to C<27017>.
8999
9000 =item B<Timeout> I<Milliseconds>
9001
9002 Set the timeout for each operation on I<MongoDB> to I<Timeout> milliseconds.
9003 Setting this option to zero means no timeout, which is the default.
9004
9005 =item B<StoreRates> B<false>|B<true>
9006
9007 If set to B<true> (the default), convert counter values to rates. If set to
9008 B<false> counter values are stored as is, i.e. as an increasing integer
9009 number.
9010
9011 =item B<Database> I<Database>
9012
9013 =item B<User> I<User>
9014
9015 =item B<Password> I<Password>
9016
9017 Sets the information used when authenticating to a I<MongoDB> database. The
9018 fields are optional (in which case no authentication is attempted), but if you
9019 want to use authentication all three fields must be set.
9020
9021 =back
9022
9023 =head2 Plugin C<write_prometheus>
9024
9025 The I<write_prometheus plugin> implements a tiny webserver that can be scraped
9026 using I<Prometheus>.
9027
9028 B<Options:>
9029
9030 =over 4
9031
9032 =item B<Port> I<Port>
9033
9034 Port the embedded webserver should listen on. Defaults to B<9103>.
9035
9036 =item B<StalenessDelta> I<Seconds>
9037
9038 Time in seconds after which I<Prometheus> considers a metric "stale" if it
9039 hasn't seen any update for it. This value must match the setting in Prometheus.
9040 It defaults to B<300> seconds (5 minutes), same as Prometheus.
9041
9042 B<Background:>
9043
9044 I<Prometheus> has a global setting, C<StalenessDelta>, which controls after
9045 which time a metric without updates is considered "stale". This setting
9046 effectively puts an upper limit on the interval in which metrics are reported.
9047
9048 When the I<write_prometheus plugin> encounters a metric with an interval
9049 exceeding this limit, it will inform you, the user, and provide the metric to
9050 I<Prometheus> B<without> a timestamp. That causes I<Prometheus> to consider the
9051 metric "fresh" each time it is scraped, with the time of the scrape being
9052 considered the time of the update. The result is that there appear more
9053 datapoints in I<Prometheus> than were actually created, but at least the metric
9054 doesn't disappear periodically.
9055
9056 =back
9057
9058 =head2 Plugin C<write_http>
9059
9060 This output plugin submits values to an HTTP server using POST requests and
9061 encoding metrics with JSON or using the C<PUTVAL> command described in
9062 L<collectd-unixsock(5)>.
9063
9064 Synopsis:
9065
9066  <Plugin "write_http">
9067    <Node "example">
9068      URL "http://example.com/post-collectd"
9069      User "collectd"
9070      Password "weCh3ik0"
9071      Format JSON
9072    </Node>
9073  </Plugin>
9074
9075 The plugin can send values to multiple HTTP servers by specifying one
9076 E<lt>B<Node>E<nbsp>I<Name>E<gt> block for each server. Within each B<Node>
9077 block, the following options are available:
9078
9079 =over 4
9080
9081 =item B<URL> I<URL>
9082
9083 URL to which the values are submitted to. Mandatory.
9084
9085 =item B<User> I<Username>
9086
9087 Optional user name needed for authentication.
9088
9089 =item B<Password> I<Password>
9090
9091 Optional password needed for authentication.
9092
9093 =item B<VerifyPeer> B<true>|B<false>
9094
9095 Enable or disable peer SSL certificate verification. See
9096 L<http://curl.haxx.se/docs/sslcerts.html> for details. Enabled by default.
9097
9098 =item B<VerifyHost> B<true|false>
9099
9100 Enable or disable peer host name verification. If enabled, the plugin checks if
9101 the C<Common Name> or a C<Subject Alternate Name> field of the SSL certificate
9102 matches the host name provided by the B<URL> option. If this identity check
9103 fails, the connection is aborted. Obviously, only works when connecting to a
9104 SSL enabled server. Enabled by default.
9105
9106 =item B<CACert> I<File>
9107
9108 File that holds one or more SSL certificates. If you want to use HTTPS you will
9109 possibly need this option. What CA certificates come bundled with C<libcurl>
9110 and are checked by default depends on the distribution you use.
9111
9112 =item B<CAPath> I<Directory>
9113
9114 Directory holding one or more CA certificate files. You can use this if for
9115 some reason all the needed CA certificates aren't in the same file and can't be
9116 pointed to using the B<CACert> option. Requires C<libcurl> to be built against
9117 OpenSSL.
9118
9119 =item B<ClientKey> I<File>
9120
9121 File that holds the private key in PEM format to be used for certificate-based
9122 authentication.
9123
9124 =item B<ClientCert> I<File>
9125
9126 File that holds the SSL certificate to be used for certificate-based
9127 authentication.
9128
9129 =item B<ClientKeyPass> I<Password>
9130
9131 Password required to load the private key in B<ClientKey>.
9132
9133 =item B<Header> I<Header>
9134
9135 A HTTP header to add to the request.  Multiple headers are added if this option is specified more than once.  Example:
9136
9137   Header "X-Custom-Header: custom_value"
9138
9139 =item B<SSLVersion> B<SSLv2>|B<SSLv3>|B<TLSv1>|B<TLSv1_0>|B<TLSv1_1>|B<TLSv1_2>
9140
9141 Define which SSL protocol version must be used. By default C<libcurl> will
9142 attempt to figure out the remote SSL protocol version. See
9143 L<curl_easy_setopt(3)> for more details.
9144
9145 =item B<Format> B<Command>|B<JSON>|B<KAIROSDB>
9146
9147 Format of the output to generate. If set to B<Command>, will create output that
9148 is understood by the I<Exec> and I<UnixSock> plugins. When set to B<JSON>, will
9149 create output in the I<JavaScript Object Notation> (JSON). When set to KAIROSDB
9150 , will create output in the KairosDB format.
9151
9152 Defaults to B<Command>.
9153
9154 =item B<Attribute> I<String> I<String>
9155
9156 Only available for the KAIROSDB output format.
9157
9158 Consider the two given strings to be the key and value of an additional tag for
9159 each metric being sent out.
9160
9161 You can add multiple B<Attribute>.
9162
9163 =item B<TTL> I<Int>
9164
9165 Only available for the KAIROSDB output format.
9166
9167 Sets the Cassandra ttl for the data points.
9168
9169 Please refer to L<http://kairosdb.github.io/docs/build/html/restapi/AddDataPoints.html?highlight=ttl>
9170
9171 =item B<Metrics> B<true>|B<false>
9172
9173 Controls whether I<metrics> are POSTed to this location. Defaults to B<true>.
9174
9175 =item B<Notifications> B<false>|B<true>
9176
9177 Controls whether I<notifications> are POSTed to this location. Defaults to B<false>.
9178
9179 =item B<StoreRates> B<true|false>
9180
9181 If set to B<true>, convert counter values to rates. If set to B<false> (the
9182 default) counter values are stored as is, i.e. as an increasing integer number.
9183
9184 =item B<BufferSize> I<Bytes>
9185
9186 Sets the send buffer size to I<Bytes>. By increasing this buffer, less HTTP
9187 requests will be generated, but more metrics will be batched / metrics are
9188 cached for longer before being sent, introducing additional delay until they
9189 are available on the server side. I<Bytes> must be at least 1024 and cannot
9190 exceed the size of an C<int>, i.e. 2E<nbsp>GByte.
9191 Defaults to C<4096>.
9192
9193 =item B<LowSpeedLimit> I<Bytes per Second>
9194
9195 Sets the minimal transfer rate in I<Bytes per Second> below which the
9196 connection with the HTTP server will be considered too slow and aborted. All
9197 the data submitted over this connection will probably be lost. Defaults to 0,
9198 which means no minimum transfer rate is enforced.
9199
9200 =item B<Timeout> I<Timeout>
9201
9202 Sets the maximum time in milliseconds given for HTTP POST operations to
9203 complete. When this limit is reached, the POST operation will be aborted, and
9204 all the data in the current send buffer will probably be lost. Defaults to 0,
9205 which means the connection never times out.
9206
9207 =item B<LogHttpError> B<false>|B<true>
9208
9209 Enables printing of HTTP error code to log. Turned off by default.
9210
9211 The C<write_http> plugin regularly submits the collected values to the HTTP
9212 server. How frequently this happens depends on how much data you are collecting
9213 and the size of B<BufferSize>. The optimal value to set B<Timeout> to is
9214 slightly below this interval, which you can estimate by monitoring the network
9215 traffic between collectd and the HTTP server.
9216
9217 =back
9218
9219 =head2 Plugin C<write_kafka>
9220
9221 The I<write_kafka plugin> will send values to a I<Kafka> topic, a distributed
9222 queue.
9223 Synopsis:
9224
9225  <Plugin "write_kafka">
9226    Property "metadata.broker.list" "broker1:9092,broker2:9092"
9227    <Topic "collectd">
9228      Format JSON
9229    </Topic>
9230  </Plugin>
9231
9232 The following options are understood by the I<write_kafka plugin>:
9233
9234 =over 4
9235
9236 =item E<lt>B<Topic> I<Name>E<gt>
9237
9238 The plugin's configuration consists of one or more B<Topic> blocks. Each block
9239 is given a unique I<Name> and specifies one kafka producer.
9240 Inside the B<Topic> block, the following per-topic options are
9241 understood:
9242
9243 =over 4
9244
9245 =item B<Property> I<String> I<String>
9246
9247 Configure the named property for the current topic. Properties are
9248 forwarded to the kafka producer library B<librdkafka>.
9249
9250 =item B<Key> I<String>
9251
9252 Use the specified string as a partitioning key for the topic. Kafka breaks
9253 topic into partitions and guarantees that for a given topology, the same
9254 consumer will be used for a specific key. The special (case insensitive)
9255 string B<Random> can be used to specify that an arbitrary partition should
9256 be used.
9257
9258 =item B<Format> B<Command>|B<JSON>|B<Graphite>
9259
9260 Selects the format in which messages are sent to the broker. If set to
9261 B<Command> (the default), values are sent as C<PUTVAL> commands which are
9262 identical to the syntax used by the I<Exec> and I<UnixSock plugins>.
9263
9264 If set to B<JSON>, the values are encoded in the I<JavaScript Object Notation>,
9265 an easy and straight forward exchange format.
9266
9267 If set to B<Graphite>, values are encoded in the I<Graphite> format, which is
9268 C<E<lt>metricE<gt> E<lt>valueE<gt> E<lt>timestampE<gt>\n>.
9269
9270 =item B<StoreRates> B<true>|B<false>
9271
9272 Determines whether or not C<COUNTER>, C<DERIVE> and C<ABSOLUTE> data sources
9273 are converted to a I<rate> (i.e. a C<GAUGE> value). If set to B<false> (the
9274 default), no conversion is performed. Otherwise the conversion is performed
9275 using the internal value cache.
9276
9277 Please note that currently this option is only used if the B<Format> option has
9278 been set to B<JSON>.
9279
9280 =item B<GraphitePrefix> (B<Format>=I<Graphite> only)
9281
9282 A prefix can be added in the metric name when outputting in the I<Graphite>
9283 format. It's added before the I<Host> name.
9284 Metric name will be
9285 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>>
9286
9287 =item B<GraphitePostfix> (B<Format>=I<Graphite> only)
9288
9289 A postfix can be added in the metric name when outputting in the I<Graphite>
9290 format. It's added after the I<Host> name.
9291 Metric name will be
9292 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>>
9293
9294 =item B<GraphiteEscapeChar> (B<Format>=I<Graphite> only)
9295
9296 Specify a character to replace dots (.) in the host part of the metric name.
9297 In I<Graphite> metric name, dots are used as separators between different
9298 metric parts (host, plugin, type).
9299 Default is C<_> (I<Underscore>).
9300
9301 =item B<GraphiteSeparateInstances> B<false>|B<true>
9302
9303 If set to B<true>, the plugin instance and type instance will be in their own
9304 path component, for example C<host.cpu.0.cpu.idle>. If set to B<false> (the
9305 default), the plugin and plugin instance (and likewise the type and type
9306 instance) are put into one component, for example C<host.cpu-0.cpu-idle>.
9307
9308 =item B<GraphiteAlwaysAppendDS> B<true>|B<false>
9309
9310 If set to B<true>, append the name of the I<Data Source> (DS) to the "metric"
9311 identifier. If set to B<false> (the default), this is only done when there is
9312 more than one DS.
9313
9314 =item B<GraphitePreserveSeparator> B<false>|B<true>
9315
9316 If set to B<false> (the default) the C<.> (dot) character is replaced with
9317 I<GraphiteEscapeChar>. Otherwise, if set to B<true>, the C<.> (dot) character
9318 is preserved, i.e. passed through.
9319
9320 =item B<StoreRates> B<true>|B<false>
9321
9322 If set to B<true> (the default), convert counter values to rates. If set to
9323 B<false> counter values are stored as is, i.e. as an increasing integer number.
9324
9325 This will be reflected in the C<ds_type> tag: If B<StoreRates> is enabled,
9326 converted values will have "rate" appended to the data source type, e.g.
9327 C<ds_type:derive:rate>.
9328
9329 =back
9330
9331 =item B<Property> I<String> I<String>
9332
9333 Configure the kafka producer through properties, you almost always will
9334 want to set B<metadata.broker.list> to your Kafka broker list.
9335
9336 =back
9337
9338 =head2 Plugin C<write_redis>
9339
9340 The I<write_redis plugin> submits values to I<Redis>, a data structure server.
9341
9342 Synopsis:
9343
9344   <Plugin "write_redis">
9345     <Node "example">
9346         Host "localhost"
9347         Port "6379"
9348         Timeout 1000
9349         Prefix "collectd/"
9350         Database 1
9351         MaxSetSize -1
9352         MaxSetDuration -1
9353         StoreRates true
9354     </Node>
9355   </Plugin>
9356
9357 Values are submitted to I<Sorted Sets>, using the metric name as the key, and
9358 the timestamp as the score. Retrieving a date range can then be done using the
9359 C<ZRANGEBYSCORE> I<Redis> command. Additionally, all the identifiers of these
9360 I<Sorted Sets> are kept in a I<Set> called C<collectd/values> (or
9361 C<${prefix}/values> if the B<Prefix> option was specified) and can be retrieved
9362 using the C<SMEMBERS> I<Redis> command. You can specify the database to use
9363 with the B<Database> parameter (default is C<0>). See
9364 L<http://redis.io/commands#sorted_set> and L<http://redis.io/commands#set> for
9365 details.
9366
9367 The information shown in the synopsis above is the I<default configuration>
9368 which is used by the plugin if no configuration is present.
9369
9370 The plugin can send values to multiple instances of I<Redis> by specifying
9371 one B<Node> block for each instance. Within the B<Node> blocks, the following
9372 options are available:
9373
9374 =over 4
9375
9376 =item B<Node> I<Nodename>
9377
9378 The B<Node> block identifies a new I<Redis> node, that is a new I<Redis>
9379 instance running on a specified host and port. The node name is a
9380 canonical identifier which is used as I<plugin instance>. It is limited to
9381 51E<nbsp>characters in length.
9382
9383 =item B<Host> I<Hostname>
9384
9385 The B<Host> option is the hostname or IP-address where the I<Redis> instance is
9386 running on.
9387
9388 =item B<Port> I<Port>
9389
9390 The B<Port> option is the TCP port on which the Redis instance accepts
9391 connections. Either a service name of a port number may be given. Please note
9392 that numerical port numbers must be given as a string, too.
9393
9394 =item B<Timeout> I<Milliseconds>
9395
9396 The B<Timeout> option sets the socket connection timeout, in milliseconds.
9397
9398 =item B<Prefix> I<Prefix>
9399
9400 Prefix used when constructing the name of the I<Sorted Sets> and the I<Set>
9401 containing all metrics. Defaults to C<collectd/>, so metrics will have names
9402 like C<collectd/cpu-0/cpu-user>. When setting this to something different, it
9403 is recommended but not required to include a trailing slash in I<Prefix>.
9404
9405 =item B<Database> I<Index>
9406
9407 This index selects the redis database to use for writing operations. Defaults
9408 to C<0>.
9409
9410 =item B<MaxSetSize> I<Items>
9411
9412 The B<MaxSetSize> option limits the number of items that the I<Sorted Sets> can
9413 hold. Negative values for I<Items> sets no limit, which is the default behavior.
9414
9415 =item B<MaxSetDuration> I<Seconds>
9416
9417 The B<MaxSetDuration> option limits the duration of items that the
9418 I<Sorted Sets> can hold. Negative values for I<Items> sets no duration, which
9419 is the default behavior.
9420
9421 =item B<StoreRates> B<true>|B<false>
9422
9423 If set to B<true> (the default), convert counter values to rates. If set to
9424 B<false> counter values are stored as is, i.e. as an increasing integer number.
9425
9426 =back
9427
9428 =head2 Plugin C<write_riemann>
9429
9430 The I<write_riemann plugin> will send values to I<Riemann>, a powerful stream
9431 aggregation and monitoring system. The plugin sends I<Protobuf> encoded data to
9432 I<Riemann> using UDP packets.
9433
9434 Synopsis:
9435
9436  <Plugin "write_riemann">
9437    <Node "example">
9438      Host "localhost"
9439      Port "5555"
9440      Protocol UDP
9441      StoreRates true
9442      AlwaysAppendDS false
9443      TTLFactor 2.0
9444    </Node>
9445    Tag "foobar"
9446    Attribute "foo" "bar"
9447  </Plugin>
9448
9449 The following options are understood by the I<write_riemann plugin>:
9450
9451 =over 4
9452
9453 =item E<lt>B<Node> I<Name>E<gt>
9454
9455 The plugin's configuration consists of one or more B<Node> blocks. Each block
9456 is given a unique I<Name> and specifies one connection to an instance of
9457 I<Riemann>. Indise the B<Node> block, the following per-connection options are
9458 understood:
9459
9460 =over 4
9461
9462 =item B<Host> I<Address>
9463
9464 Hostname or address to connect to. Defaults to C<localhost>.
9465
9466 =item B<Port> I<Service>
9467
9468 Service name or port number to connect to. Defaults to C<5555>.
9469
9470 =item B<Protocol> B<UDP>|B<TCP>|B<TLS>
9471
9472 Specify the protocol to use when communicating with I<Riemann>. Defaults to
9473 B<TCP>.
9474
9475 =item B<TLSCertFile> I<Path>
9476
9477 When using the B<TLS> protocol, path to a PEM certificate to present
9478 to remote host.
9479
9480 =item B<TLSCAFile> I<Path>
9481
9482 When using the B<TLS> protocol, path to a PEM CA certificate to
9483 use to validate the remote hosts's identity.
9484
9485 =item B<TLSKeyFile> I<Path>
9486
9487 When using the B<TLS> protocol, path to a PEM private key associated
9488 with the certificate defined by B<TLSCertFile>.
9489
9490 =item B<Batch> B<true>|B<false>
9491
9492 If set to B<true> and B<Protocol> is set to B<TCP>,
9493 events will be batched in memory and flushed at
9494 regular intervals or when B<BatchMaxSize> is exceeded.
9495
9496 Notifications are not batched and sent as soon as possible.
9497
9498 When enabled, it can occur that events get processed by the Riemann server
9499 close to or after their expiration time. Tune the B<TTLFactor> and
9500 B<BatchMaxSize> settings according to the amount of values collected, if this
9501 is an issue.
9502
9503 Defaults to true
9504
9505 =item B<BatchMaxSize> I<size>
9506
9507 Maximum payload size for a riemann packet. Defaults to 8192
9508
9509 =item B<BatchFlushTimeout> I<seconds>
9510
9511 Maximum amount of seconds to wait in between to batch flushes.
9512 No timeout by default.
9513
9514 =item B<StoreRates> B<true>|B<false>
9515
9516 If set to B<true> (the default), convert counter values to rates. If set to
9517 B<false> counter values are stored as is, i.e. as an increasing integer number.
9518
9519 This will be reflected in the C<ds_type> tag: If B<StoreRates> is enabled,
9520 converted values will have "rate" appended to the data source type, e.g.
9521 C<ds_type:derive:rate>.
9522
9523 =item B<AlwaysAppendDS> B<false>|B<true>
9524
9525 If set to B<true>, append the name of the I<Data Source> (DS) to the
9526 "service", i.e. the field that, together with the "host" field, uniquely
9527 identifies a metric in I<Riemann>. If set to B<false> (the default), this is
9528 only done when there is more than one DS.
9529
9530 =item B<TTLFactor> I<Factor>
9531
9532 I<Riemann> events have a I<Time to Live> (TTL) which specifies how long each
9533 event is considered active. I<collectd> populates this field based on the
9534 metrics interval setting. This setting controls the factor with which the
9535 interval is multiplied to set the TTL. The default value is B<2.0>. Unless you
9536 know exactly what you're doing, you should only increase this setting from its
9537 default value.
9538
9539 =item B<Notifications> B<false>|B<true>
9540
9541 If set to B<true>, create riemann events for notifications. This is B<true>
9542 by default. When processing thresholds from write_riemann, it might prove
9543 useful to avoid getting notification events.
9544
9545 =item B<CheckThresholds> B<false>|B<true>
9546
9547 If set to B<true>, attach state to events based on thresholds defined
9548 in the B<Threshold> plugin. Defaults to B<false>.
9549
9550 =item B<EventServicePrefix> I<String>
9551
9552 Add the given string as a prefix to the event service name.
9553 If B<EventServicePrefix> not set or set to an empty string (""),
9554 no prefix will be used.
9555
9556 =back
9557
9558 =item B<Tag> I<String>
9559
9560 Add the given string as an additional tag to the metric being sent to
9561 I<Riemann>.
9562
9563 =item B<Attribute> I<String> I<String>
9564
9565 Consider the two given strings to be the key and value of an additional
9566 attribute for each metric being sent out to I<Riemann>.
9567
9568 =back
9569
9570 =head2 Plugin C<write_sensu>
9571
9572 The I<write_sensu plugin> will send values to I<Sensu>, a powerful stream
9573 aggregation and monitoring system. The plugin sends I<JSON> encoded data to
9574 a local I<Sensu> client using a TCP socket.
9575
9576 At the moment, the I<write_sensu plugin> does not send over a collectd_host
9577 parameter so it is not possible to use one collectd instance as a gateway for
9578 others. Each collectd host must pair with one I<Sensu> client.
9579
9580 Synopsis:
9581
9582  <Plugin "write_sensu">
9583    <Node "example">
9584      Host "localhost"
9585      Port "3030"
9586      StoreRates true
9587      AlwaysAppendDS false
9588      MetricHandler "influx"
9589      MetricHandler "default"
9590      NotificationHandler "flapjack"
9591      NotificationHandler "howling_monkey"
9592      Notifications true
9593    </Node>
9594    Tag "foobar"
9595    Attribute "foo" "bar"
9596  </Plugin>
9597
9598 The following options are understood by the I<write_sensu plugin>:
9599
9600 =over 4
9601
9602 =item E<lt>B<Node> I<Name>E<gt>
9603
9604 The plugin's configuration consists of one or more B<Node> blocks. Each block
9605 is given a unique I<Name> and specifies one connection to an instance of
9606 I<Sensu>. Inside the B<Node> block, the following per-connection options are
9607 understood:
9608
9609 =over 4
9610
9611 =item B<Host> I<Address>
9612
9613 Hostname or address to connect to. Defaults to C<localhost>.
9614
9615 =item B<Port> I<Service>
9616
9617 Service name or port number to connect to. Defaults to C<3030>.
9618
9619 =item B<StoreRates> B<true>|B<false>
9620
9621 If set to B<true> (the default), convert counter values to rates. If set to
9622 B<false> counter values are stored as is, i.e. as an increasing integer number.
9623
9624 This will be reflected in the C<collectd_data_source_type> tag: If
9625 B<StoreRates> is enabled, converted values will have "rate" appended to the
9626 data source type, e.g.  C<collectd_data_source_type:derive:rate>.
9627
9628 =item B<AlwaysAppendDS> B<false>|B<true>
9629
9630 If set the B<true>, append the name of the I<Data Source> (DS) to the
9631 "service", i.e. the field that, together with the "host" field, uniquely
9632 identifies a metric in I<Sensu>. If set to B<false> (the default), this is
9633 only done when there is more than one DS.
9634
9635 =item B<Notifications> B<false>|B<true>
9636
9637 If set to B<true>, create I<Sensu> events for notifications. This is B<false>
9638 by default. At least one of B<Notifications> or B<Metrics> should be enabled.
9639
9640 =item B<Metrics> B<false>|B<true>
9641
9642 If set to B<true>, create I<Sensu> events for metrics. This is B<false>
9643 by default. At least one of B<Notifications> or B<Metrics> should be enabled.
9644
9645
9646 =item B<Separator> I<String>
9647
9648 Sets the separator for I<Sensu> metrics name or checks. Defaults to "/".
9649
9650 =item B<MetricHandler> I<String>
9651
9652 Add a handler that will be set when metrics are sent to I<Sensu>. You can add
9653 several of them, one per line. Defaults to no handler.
9654
9655 =item B<NotificationHandler> I<String>
9656
9657 Add a handler that will be set when notifications are sent to I<Sensu>. You can
9658 add several of them, one per line. Defaults to no handler.
9659
9660 =item B<EventServicePrefix> I<String>
9661
9662 Add the given string as a prefix to the event service name.
9663 If B<EventServicePrefix> not set or set to an empty string (""),
9664 no prefix will be used.
9665
9666 =back
9667
9668 =item B<Tag> I<String>
9669
9670 Add the given string as an additional tag to the metric being sent to
9671 I<Sensu>.
9672
9673 =item B<Attribute> I<String> I<String>
9674
9675 Consider the two given strings to be the key and value of an additional
9676 attribute for each metric being sent out to I<Sensu>.
9677
9678 =back
9679
9680 =head2 Plugin C<xencpu>
9681
9682 This plugin collects metrics of hardware CPU load for machine running Xen
9683 hypervisor. Load is calculated from 'idle time' value, provided by Xen.
9684 Result is reported using the C<percent> type, for each CPU (core).
9685
9686 This plugin doesn't have any options (yet).
9687
9688 =head2 Plugin C<zookeeper>
9689
9690 The I<zookeeper plugin> will collect statistics from a I<Zookeeper> server
9691 using the mntr command.  It requires Zookeeper 3.4.0+ and access to the
9692 client port.
9693
9694 B<Synopsis:>
9695
9696  <Plugin "zookeeper">
9697    Host "127.0.0.1"
9698    Port "2181"
9699  </Plugin>
9700
9701 =over 4
9702
9703 =item B<Host> I<Address>
9704
9705 Hostname or address to connect to. Defaults to C<localhost>.
9706
9707 =item B<Port> I<Service>
9708
9709 Service name or port number to connect to. Defaults to C<2181>.
9710
9711 =back
9712
9713 =head1 THRESHOLD CONFIGURATION
9714
9715 Starting with version C<4.3.0> collectd has support for B<monitoring>. By that
9716 we mean that the values are not only stored or sent somewhere, but that they
9717 are judged and, if a problem is recognized, acted upon. The only action
9718 collectd takes itself is to generate and dispatch a "notification". Plugins can
9719 register to receive notifications and perform appropriate further actions.
9720
9721 Since systems and what you expect them to do differ a lot, you can configure
9722 B<thresholds> for your values freely. This gives you a lot of flexibility but
9723 also a lot of responsibility.
9724
9725 Every time a value is out of range a notification is dispatched. This means
9726 that the idle percentage of your CPU needs to be less then the configured
9727 threshold only once for a notification to be generated. There's no such thing
9728 as a moving average or similar - at least not now.
9729
9730 Also, all values that match a threshold are considered to be relevant or
9731 "interesting". As a consequence collectd will issue a notification if they are
9732 not received for B<Timeout> iterations. The B<Timeout> configuration option is
9733 explained in section L<"GLOBAL OPTIONS">. If, for example, B<Timeout> is set to
9734 "2" (the default) and some hosts sends it's CPU statistics to the server every
9735 60 seconds, a notification will be dispatched after about 120 seconds. It may
9736 take a little longer because the timeout is checked only once each B<Interval>
9737 on the server.
9738
9739 When a value comes within range again or is received after it was missing, an
9740 "OKAY-notification" is dispatched.
9741
9742 Here is a configuration example to get you started. Read below for more
9743 information.
9744
9745  <Plugin threshold>
9746    <Type "foo">
9747      WarningMin    0.00
9748      WarningMax 1000.00
9749      FailureMin    0.00
9750      FailureMax 1200.00
9751      Invert false
9752      Instance "bar"
9753    </Type>
9754
9755    <Plugin "interface">
9756      Instance "eth0"
9757      <Type "if_octets">
9758        FailureMax 10000000
9759        DataSource "rx"
9760      </Type>
9761    </Plugin>
9762
9763    <Host "hostname">
9764      <Type "cpu">
9765        Instance "idle"
9766        FailureMin 10
9767      </Type>
9768
9769      <Plugin "memory">
9770        <Type "memory">
9771          Instance "cached"
9772          WarningMin 100000000
9773        </Type>
9774      </Plugin>
9775    </Host>
9776  </Plugin>
9777
9778 There are basically two types of configuration statements: The C<Host>,
9779 C<Plugin>, and C<Type> blocks select the value for which a threshold should be
9780 configured. The C<Plugin> and C<Type> blocks may be specified further using the
9781 C<Instance> option. You can combine the block by nesting the blocks, though
9782 they must be nested in the above order, i.E<nbsp>e. C<Host> may contain either
9783 C<Plugin> and C<Type> blocks, C<Plugin> may only contain C<Type> blocks and
9784 C<Type> may not contain other blocks. If multiple blocks apply to the same
9785 value the most specific block is used.
9786
9787 The other statements specify the threshold to configure. They B<must> be
9788 included in a C<Type> block. Currently the following statements are recognized:
9789
9790 =over 4
9791
9792 =item B<FailureMax> I<Value>
9793
9794 =item B<WarningMax> I<Value>
9795
9796 Sets the upper bound of acceptable values. If unset defaults to positive
9797 infinity. If a value is greater than B<FailureMax> a B<FAILURE> notification
9798 will be created. If the value is greater than B<WarningMax> but less than (or
9799 equal to) B<FailureMax> a B<WARNING> notification will be created.
9800
9801 =item B<FailureMin> I<Value>
9802
9803 =item B<WarningMin> I<Value>
9804
9805 Sets the lower bound of acceptable values. If unset defaults to negative
9806 infinity. If a value is less than B<FailureMin> a B<FAILURE> notification will
9807 be created. If the value is less than B<WarningMin> but greater than (or equal
9808 to) B<FailureMin> a B<WARNING> notification will be created.
9809
9810 =item B<DataSource> I<DSName>
9811
9812 Some data sets have more than one "data source". Interesting examples are the
9813 C<if_octets> data set, which has received (C<rx>) and sent (C<tx>) bytes and
9814 the C<disk_ops> data set, which holds C<read> and C<write> operations. The
9815 system load data set, C<load>, even has three data sources: C<shortterm>,
9816 C<midterm>, and C<longterm>.
9817
9818 Normally, all data sources are checked against a configured threshold. If this
9819 is undesirable, or if you want to specify different limits for each data
9820 source, you can use the B<DataSource> option to have a threshold apply only to
9821 one data source.
9822
9823 =item B<Invert> B<true>|B<false>
9824
9825 If set to B<true> the range of acceptable values is inverted, i.E<nbsp>e.
9826 values between B<FailureMin> and B<FailureMax> (B<WarningMin> and
9827 B<WarningMax>) are not okay. Defaults to B<false>.
9828
9829 =item B<Persist> B<true>|B<false>
9830
9831 Sets how often notifications are generated. If set to B<true> one notification
9832 will be generated for each value that is out of the acceptable range. If set to
9833 B<false> (the default) then a notification is only generated if a value is out
9834 of range but the previous value was okay.
9835
9836 This applies to missing values, too: If set to B<true> a notification about a
9837 missing value is generated once every B<Interval> seconds. If set to B<false>
9838 only one such notification is generated until the value appears again.
9839
9840 =item B<Percentage> B<true>|B<false>
9841
9842 If set to B<true>, the minimum and maximum values given are interpreted as
9843 percentage value, relative to the other data sources. This is helpful for
9844 example for the "df" type, where you may want to issue a warning when less than
9845 5E<nbsp>% of the total space is available. Defaults to B<false>.
9846
9847 =item B<Hits> I<Number>
9848
9849 Delay creating the notification until the threshold has been passed I<Number>
9850 times. When a notification has been generated, or when a subsequent value is
9851 inside the threshold, the counter is reset. If, for example, a value is
9852 collected once every 10E<nbsp>seconds and B<Hits> is set to 3, a notification
9853 will be dispatched at most once every 30E<nbsp>seconds.
9854
9855 This is useful when short bursts are not a problem. If, for example, 100% CPU
9856 usage for up to a minute is normal (and data is collected every
9857 10E<nbsp>seconds), you could set B<Hits> to B<6> to account for this.
9858
9859 =item B<Hysteresis> I<Number>
9860
9861 When set to non-zero, a hysteresis value is applied when checking minimum and
9862 maximum bounds. This is useful for values that increase slowly and fluctuate a
9863 bit while doing so. When these values come close to the threshold, they may
9864 "flap", i.e. switch between failure / warning case and okay case repeatedly.
9865
9866 If, for example, the threshold is configures as
9867
9868   WarningMax 100.0
9869   Hysteresis 1.0
9870
9871 then a I<Warning> notification is created when the value exceeds I<101> and the
9872 corresponding I<Okay> notification is only created once the value falls below
9873 I<99>, thus avoiding the "flapping".
9874
9875 =back
9876
9877 =head1 FILTER CONFIGURATION
9878
9879 Starting with collectd 4.6 there is a powerful filtering infrastructure
9880 implemented in the daemon. The concept has mostly been copied from
9881 I<ip_tables>, the packet filter infrastructure for Linux. We'll use a similar
9882 terminology, so that users that are familiar with iptables feel right at home.
9883
9884 =head2 Terminology
9885
9886 The following are the terms used in the remainder of the filter configuration
9887 documentation. For an ASCII-art schema of the mechanism, see
9888 L<"General structure"> below.
9889
9890 =over 4
9891
9892 =item B<Match>
9893
9894 A I<match> is a criteria to select specific values. Examples are, of course, the
9895 name of the value or it's current value.
9896
9897 Matches are implemented in plugins which you have to load prior to using the
9898 match. The name of such plugins starts with the "match_" prefix.
9899
9900 =item B<Target>
9901
9902 A I<target> is some action that is to be performed with data. Such actions
9903 could, for example, be to change part of the value's identifier or to ignore
9904 the value completely.
9905
9906 Some of these targets are built into the daemon, see L<"Built-in targets">
9907 below. Other targets are implemented in plugins which you have to load prior to
9908 using the target. The name of such plugins starts with the "target_" prefix.
9909
9910 =item B<Rule>
9911
9912 The combination of any number of matches and at least one target is called a
9913 I<rule>. The target actions will be performed for all values for which B<all>
9914 matches apply. If the rule does not have any matches associated with it, the
9915 target action will be performed for all values.
9916
9917 =item B<Chain>
9918
9919 A I<chain> is a list of rules and possibly default targets. The rules are tried
9920 in order and if one matches, the associated target will be called. If a value
9921 is handled by a rule, it depends on the target whether or not any subsequent
9922 rules are considered or if traversal of the chain is aborted, see
9923 L<"Flow control"> below. After all rules have been checked, the default targets
9924 will be executed.
9925
9926 =back
9927
9928 =head2 General structure
9929
9930 The following shows the resulting structure:
9931
9932  +---------+
9933  ! Chain   !
9934  +---------+
9935       !
9936       V
9937  +---------+  +---------+  +---------+  +---------+
9938  ! Rule    !->! Match   !->! Match   !->! Target  !
9939  +---------+  +---------+  +---------+  +---------+
9940       !
9941       V
9942  +---------+  +---------+  +---------+
9943  ! Rule    !->! Target  !->! Target  !
9944  +---------+  +---------+  +---------+
9945       !
9946       V
9947       :
9948       :
9949       !
9950       V
9951  +---------+  +---------+  +---------+
9952  ! Rule    !->! Match   !->! Target  !
9953  +---------+  +---------+  +---------+
9954       !
9955       V
9956  +---------+
9957  ! Default !
9958  ! Target  !
9959  +---------+
9960
9961 =head2 Flow control
9962
9963 There are four ways to control which way a value takes through the filter
9964 mechanism:
9965
9966 =over 4
9967
9968 =item B<jump>
9969
9970 The built-in B<jump> target can be used to "call" another chain, i.E<nbsp>e.
9971 process the value with another chain. When the called chain finishes, usually
9972 the next target or rule after the jump is executed.
9973
9974 =item B<stop>
9975
9976 The stop condition, signaled for example by the built-in target B<stop>, causes
9977 all processing of the value to be stopped immediately.
9978
9979 =item B<return>
9980
9981 Causes processing in the current chain to be aborted, but processing of the
9982 value generally will continue. This means that if the chain was called via
9983 B<Jump>, the next target or rule after the jump will be executed. If the chain
9984 was not called by another chain, control will be returned to the daemon and it
9985 may pass the value to another chain.
9986
9987 =item B<continue>
9988
9989 Most targets will signal the B<continue> condition, meaning that processing
9990 should continue normally. There is no special built-in target for this
9991 condition.
9992
9993 =back
9994
9995 =head2 Synopsis
9996
9997 The configuration reflects this structure directly:
9998
9999  PostCacheChain "PostCache"
10000  <Chain "PostCache">
10001    <Rule "ignore_mysql_show">
10002      <Match "regex">
10003        Plugin "^mysql$"
10004        Type "^mysql_command$"
10005        TypeInstance "^show_"
10006      </Match>
10007      <Target "stop">
10008      </Target>
10009    </Rule>
10010    <Target "write">
10011      Plugin "rrdtool"
10012    </Target>
10013  </Chain>
10014
10015 The above configuration example will ignore all values where the plugin field
10016 is "mysql", the type is "mysql_command" and the type instance begins with
10017 "show_". All other values will be sent to the C<rrdtool> write plugin via the
10018 default target of the chain. Since this chain is run after the value has been
10019 added to the cache, the MySQL C<show_*> command statistics will be available
10020 via the C<unixsock> plugin.
10021
10022 =head2 List of configuration options
10023
10024 =over 4
10025
10026 =item B<PreCacheChain> I<ChainName>
10027
10028 =item B<PostCacheChain> I<ChainName>
10029
10030 Configure the name of the "pre-cache chain" and the "post-cache chain". The
10031 argument is the name of a I<chain> that should be executed before and/or after
10032 the values have been added to the cache.
10033
10034 To understand the implications, it's important you know what is going on inside
10035 I<collectd>. The following diagram shows how values are passed from the
10036 read-plugins to the write-plugins:
10037
10038    +---------------+
10039    !  Read-Plugin  !
10040    +-------+-------+
10041            !
10042  + - - - - V - - - - +
10043  : +---------------+ :
10044  : !   Pre-Cache   ! :
10045  : !     Chain     ! :
10046  : +-------+-------+ :
10047  :         !         :
10048  :         V         :
10049  : +-------+-------+ :  +---------------+
10050  : !     Cache     !--->!  Value Cache  !
10051  : !     insert    ! :  +---+---+-------+
10052  : +-------+-------+ :      !   !
10053  :         !   ,------------'   !
10054  :         V   V     :          V
10055  : +-------+---+---+ :  +-------+-------+
10056  : !  Post-Cache   +--->! Write-Plugins !
10057  : !     Chain     ! :  +---------------+
10058  : +---------------+ :
10059  :                   :
10060  :  dispatch values  :
10061  + - - - - - - - - - +
10062
10063 After the values are passed from the "read" plugins to the dispatch functions,
10064 the pre-cache chain is run first. The values are added to the internal cache
10065 afterwards. The post-cache chain is run after the values have been added to the
10066 cache. So why is it such a huge deal if chains are run before or after the
10067 values have been added to this cache?
10068
10069 Targets that change the identifier of a value list should be executed before
10070 the values are added to the cache, so that the name in the cache matches the
10071 name that is used in the "write" plugins. The C<unixsock> plugin, too, uses
10072 this cache to receive a list of all available values. If you change the
10073 identifier after the value list has been added to the cache, this may easily
10074 lead to confusion, but it's not forbidden of course.
10075
10076 The cache is also used to convert counter values to rates. These rates are, for
10077 example, used by the C<value> match (see below). If you use the rate stored in
10078 the cache B<before> the new value is added, you will use the old, B<previous>
10079 rate. Write plugins may use this rate, too, see the C<csv> plugin, for example.
10080 The C<unixsock> plugin uses these rates too, to implement the C<GETVAL>
10081 command.
10082
10083 Last but not last, the B<stop> target makes a difference: If the pre-cache
10084 chain returns the stop condition, the value will not be added to the cache and
10085 the post-cache chain will not be run.
10086
10087 =item B<Chain> I<Name>
10088
10089 Adds a new chain with a certain name. This name can be used to refer to a
10090 specific chain, for example to jump to it.
10091
10092 Within the B<Chain> block, there can be B<Rule> blocks and B<Target> blocks.
10093
10094 =item B<Rule> [I<Name>]
10095
10096 Adds a new rule to the current chain. The name of the rule is optional and
10097 currently has no meaning for the daemon.
10098
10099 Within the B<Rule> block, there may be any number of B<Match> blocks and there
10100 must be at least one B<Target> block.
10101
10102 =item B<Match> I<Name>
10103
10104 Adds a match to a B<Rule> block. The name specifies what kind of match should
10105 be performed. Available matches depend on the plugins that have been loaded.
10106
10107 The arguments inside the B<Match> block are passed to the plugin implementing
10108 the match, so which arguments are valid here depends on the plugin being used.
10109 If you do not need any to pass any arguments to a match, you can use the
10110 shorter syntax:
10111
10112  Match "foobar"
10113
10114 Which is equivalent to:
10115
10116  <Match "foobar">
10117  </Match>
10118
10119 =item B<Target> I<Name>
10120
10121 Add a target to a rule or a default target to a chain. The name specifies what
10122 kind of target is to be added. Which targets are available depends on the
10123 plugins being loaded.
10124
10125 The arguments inside the B<Target> block are passed to the plugin implementing
10126 the target, so which arguments are valid here depends on the plugin being used.
10127 If you do not need any to pass any arguments to a target, you can use the
10128 shorter syntax:
10129
10130  Target "stop"
10131
10132 This is the same as writing:
10133
10134  <Target "stop">
10135  </Target>
10136
10137 =back
10138
10139 =head2 Built-in targets
10140
10141 The following targets are built into the core daemon and therefore need no
10142 plugins to be loaded:
10143
10144 =over 4
10145
10146 =item B<return>
10147
10148 Signals the "return" condition, see the L<"Flow control"> section above. This
10149 causes the current chain to stop processing the value and returns control to
10150 the calling chain. The calling chain will continue processing targets and rules
10151 just after the B<jump> target (see below). This is very similar to the
10152 B<RETURN> target of iptables, see L<iptables(8)>.
10153
10154 This target does not have any options.
10155
10156 Example:
10157
10158  Target "return"
10159
10160 =item B<stop>
10161
10162 Signals the "stop" condition, see the L<"Flow control"> section above. This
10163 causes processing of the value to be aborted immediately. This is similar to
10164 the B<DROP> target of iptables, see L<iptables(8)>.
10165
10166 This target does not have any options.
10167
10168 Example:
10169
10170  Target "stop"
10171
10172 =item B<write>
10173
10174 Sends the value to "write" plugins.
10175
10176 Available options:
10177
10178 =over 4
10179
10180 =item B<Plugin> I<Name>
10181
10182 Name of the write plugin to which the data should be sent. This option may be
10183 given multiple times to send the data to more than one write plugin. If the
10184 plugin supports multiple instances, the plugin's instance(s) must also be
10185 specified.
10186
10187 =back
10188
10189 If no plugin is explicitly specified, the values will be sent to all available
10190 write plugins.
10191
10192 Single-instance plugin example:
10193
10194  <Target "write">
10195    Plugin "rrdtool"
10196  </Target>
10197
10198 Multi-instance plugin example:
10199
10200  <Plugin "write_graphite">
10201    <Node "foo">
10202    ...
10203    </Node>
10204    <Node "bar">
10205    ...
10206    </Node>
10207  </Plugin>
10208   ...
10209  <Target "write">
10210    Plugin "write_graphite/foo"
10211  </Target>
10212
10213 =item B<jump>
10214
10215 Starts processing the rules of another chain, see L<"Flow control"> above. If
10216 the end of that chain is reached, or a stop condition is encountered,
10217 processing will continue right after the B<jump> target, i.E<nbsp>e. with the
10218 next target or the next rule. This is similar to the B<-j> command line option
10219 of iptables, see L<iptables(8)>.
10220
10221 Available options:
10222
10223 =over 4
10224
10225 =item B<Chain> I<Name>
10226
10227 Jumps to the chain I<Name>. This argument is required and may appear only once.
10228
10229 =back
10230
10231 Example:
10232
10233  <Target "jump">
10234    Chain "foobar"
10235  </Target>
10236
10237 =back
10238
10239 =head2 Available matches
10240
10241 =over 4
10242
10243 =item B<regex>
10244
10245 Matches a value using regular expressions.
10246
10247 Available options:
10248
10249 =over 4
10250
10251 =item B<Host> I<Regex>
10252
10253 =item B<Plugin> I<Regex>
10254
10255 =item B<PluginInstance> I<Regex>
10256
10257 =item B<Type> I<Regex>
10258
10259 =item B<TypeInstance> I<Regex>
10260
10261 =item B<MetaData> I<String> I<Regex>
10262
10263 Match values where the given regular expressions match the various fields of
10264 the identifier of a value. If multiple regular expressions are given, B<all>
10265 regexen must match for a value to match.
10266
10267 =item B<Invert> B<false>|B<true>
10268
10269 When set to B<true>, the result of the match is inverted, i.e. all value lists
10270 where all regular expressions apply are not matched, all other value lists are
10271 matched. Defaults to B<false>.
10272
10273 =back
10274
10275 Example:
10276
10277  <Match "regex">
10278    Host "customer[0-9]+"
10279    Plugin "^foobar$"
10280  </Match>
10281
10282 =item B<timediff>
10283
10284 Matches values that have a time which differs from the time on the server.
10285
10286 This match is mainly intended for servers that receive values over the
10287 C<network> plugin and write them to disk using the C<rrdtool> plugin. RRDtool
10288 is very sensitive to the timestamp used when updating the RRD files. In
10289 particular, the time must be ever increasing. If a misbehaving client sends one
10290 packet with a timestamp far in the future, all further packets with a correct
10291 time will be ignored because of that one packet. What's worse, such corrupted
10292 RRD files are hard to fix.
10293
10294 This match lets one match all values B<outside> a specified time range
10295 (relative to the server's time), so you can use the B<stop> target (see below)
10296 to ignore the value, for example.
10297
10298 Available options:
10299
10300 =over 4
10301
10302 =item B<Future> I<Seconds>
10303
10304 Matches all values that are I<ahead> of the server's time by I<Seconds> or more
10305 seconds. Set to zero for no limit. Either B<Future> or B<Past> must be
10306 non-zero.
10307
10308 =item B<Past> I<Seconds>
10309
10310 Matches all values that are I<behind> of the server's time by I<Seconds> or
10311 more seconds. Set to zero for no limit. Either B<Future> or B<Past> must be
10312 non-zero.
10313
10314 =back
10315
10316 Example:
10317
10318  <Match "timediff">
10319    Future  300
10320    Past   3600
10321  </Match>
10322
10323 This example matches all values that are five minutes or more ahead of the
10324 server or one hour (or more) lagging behind.
10325
10326 =item B<value>
10327
10328 Matches the actual value of data sources against given minimumE<nbsp>/ maximum
10329 values. If a data-set consists of more than one data-source, all data-sources
10330 must match the specified ranges for a positive match.
10331
10332 Available options:
10333
10334 =over 4
10335
10336 =item B<Min> I<Value>
10337
10338 Sets the smallest value which still results in a match. If unset, behaves like
10339 negative infinity.
10340
10341 =item B<Max> I<Value>
10342
10343 Sets the largest value which still results in a match. If unset, behaves like
10344 positive infinity.
10345
10346 =item B<Invert> B<true>|B<false>
10347
10348 Inverts the selection. If the B<Min> and B<Max> settings result in a match,
10349 no-match is returned and vice versa. Please note that the B<Invert> setting
10350 only effects how B<Min> and B<Max> are applied to a specific value. Especially
10351 the B<DataSource> and B<Satisfy> settings (see below) are not inverted.
10352
10353 =item B<DataSource> I<DSName> [I<DSName> ...]
10354
10355 Select one or more of the data sources. If no data source is configured, all
10356 data sources will be checked. If the type handled by the match does not have a
10357 data source of the specified name(s), this will always result in no match
10358 (independent of the B<Invert> setting).
10359
10360 =item B<Satisfy> B<Any>|B<All>
10361
10362 Specifies how checking with several data sources is performed. If set to
10363 B<Any>, the match succeeds if one of the data sources is in the configured
10364 range. If set to B<All> the match only succeeds if all data sources are within
10365 the configured range. Default is B<All>.
10366
10367 Usually B<All> is used for positive matches, B<Any> is used for negative
10368 matches. This means that with B<All> you usually check that all values are in a
10369 "good" range, while with B<Any> you check if any value is within a "bad" range
10370 (or outside the "good" range).
10371
10372 =back
10373
10374 Either B<Min> or B<Max>, but not both, may be unset.
10375
10376 Example:
10377
10378  # Match all values smaller than or equal to 100. Matches only if all data
10379  # sources are below 100.
10380  <Match "value">
10381    Max 100
10382    Satisfy "All"
10383  </Match>
10384
10385  # Match if the value of any data source is outside the range of 0 - 100.
10386  <Match "value">
10387    Min   0
10388    Max 100
10389    Invert true
10390    Satisfy "Any"
10391  </Match>
10392
10393 =item B<empty_counter>
10394
10395 Matches all values with one or more data sources of type B<COUNTER> and where
10396 all counter values are zero. These counters usually I<never> increased since
10397 they started existing (and are therefore uninteresting), or got reset recently
10398 or overflowed and you had really, I<really> bad luck.
10399
10400 Please keep in mind that ignoring such counters can result in confusing
10401 behavior: Counters which hardly ever increase will be zero for long periods of
10402 time. If the counter is reset for some reason (machine or service restarted,
10403 usually), the graph will be empty (NAN) for a long time. People may not
10404 understand why.
10405
10406 =item B<hashed>
10407
10408 Calculates a hash value of the host name and matches values according to that
10409 hash value. This makes it possible to divide all hosts into groups and match
10410 only values that are in a specific group. The intended use is in load
10411 balancing, where you want to handle only part of all data and leave the rest
10412 for other servers.
10413
10414 The hashing function used tries to distribute the hosts evenly. First, it
10415 calculates a 32E<nbsp>bit hash value using the characters of the hostname:
10416
10417   hash_value = 0;
10418   for (i = 0; host[i] != 0; i++)
10419     hash_value = (hash_value * 251) + host[i];
10420
10421 The constant 251 is a prime number which is supposed to make this hash value
10422 more random. The code then checks the group for this host according to the
10423 I<Total> and I<Match> arguments:
10424
10425   if ((hash_value % Total) == Match)
10426     matches;
10427   else
10428     does not match;
10429
10430 Please note that when you set I<Total> to two (i.E<nbsp>e. you have only two
10431 groups), then the least significant bit of the hash value will be the XOR of
10432 all least significant bits in the host name. One consequence is that when you
10433 have two hosts, "server0.example.com" and "server1.example.com", where the host
10434 name differs in one digit only and the digits differ by one, those hosts will
10435 never end up in the same group.
10436
10437 Available options:
10438
10439 =over 4
10440
10441 =item B<Match> I<Match> I<Total>
10442
10443 Divide the data into I<Total> groups and match all hosts in group I<Match> as
10444 described above. The groups are numbered from zero, i.E<nbsp>e. I<Match> must
10445 be smaller than I<Total>. I<Total> must be at least one, although only values
10446 greater than one really do make any sense.
10447
10448 You can repeat this option to match multiple groups, for example:
10449
10450   Match 3 7
10451   Match 5 7
10452
10453 The above config will divide the data into seven groups and match groups three
10454 and five. One use would be to keep every value on two hosts so that if one
10455 fails the missing data can later be reconstructed from the second host.
10456
10457 =back
10458
10459 Example:
10460
10461  # Operate on the pre-cache chain, so that ignored values are not even in the
10462  # global cache.
10463  <Chain "PreCache">
10464    <Rule>
10465      <Match "hashed">
10466        # Divide all received hosts in seven groups and accept all hosts in
10467        # group three.
10468        Match 3 7
10469      </Match>
10470      # If matched: Return and continue.
10471      Target "return"
10472    </Rule>
10473    # If not matched: Return and stop.
10474    Target "stop"
10475  </Chain>
10476
10477 =back
10478
10479 =head2 Available targets
10480
10481 =over 4
10482
10483 =item B<notification>
10484
10485 Creates and dispatches a notification.
10486
10487 Available options:
10488
10489 =over 4
10490
10491 =item B<Message> I<String>
10492
10493 This required option sets the message of the notification. The following
10494 placeholders will be replaced by an appropriate value:
10495
10496 =over 4
10497
10498 =item B<%{host}>
10499
10500 =item B<%{plugin}>
10501
10502 =item B<%{plugin_instance}>
10503
10504 =item B<%{type}>
10505
10506 =item B<%{type_instance}>
10507
10508 These placeholders are replaced by the identifier field of the same name.
10509
10510 =item B<%{ds:>I<name>B<}>
10511
10512 These placeholders are replaced by a (hopefully) human readable representation
10513 of the current rate of this data source. If you changed the instance name
10514 (using the B<set> or B<replace> targets, see below), it may not be possible to
10515 convert counter values to rates.
10516
10517 =back
10518
10519 Please note that these placeholders are B<case sensitive>!
10520
10521 =item B<Severity> B<"FAILURE">|B<"WARNING">|B<"OKAY">
10522
10523 Sets the severity of the message. If omitted, the severity B<"WARNING"> is
10524 used.
10525
10526 =back
10527
10528 Example:
10529
10530   <Target "notification">
10531     Message "Oops, the %{type_instance} temperature is currently %{ds:value}!"
10532     Severity "WARNING"
10533   </Target>
10534
10535 =item B<replace>
10536
10537 Replaces parts of the identifier using regular expressions.
10538
10539 Available options:
10540
10541 =over 4
10542
10543 =item B<Host> I<Regex> I<Replacement>
10544
10545 =item B<Plugin> I<Regex> I<Replacement>
10546
10547 =item B<PluginInstance> I<Regex> I<Replacement>
10548
10549 =item B<TypeInstance> I<Regex> I<Replacement>
10550
10551 =item B<MetaData> I<String> I<Regex> I<Replacement>
10552
10553 =item B<DeleteMetaData> I<String> I<Regex>
10554
10555 Match the appropriate field with the given regular expression I<Regex>. If the
10556 regular expression matches, that part that matches is replaced with
10557 I<Replacement>. If multiple places of the input buffer match a given regular
10558 expression, only the first occurrence will be replaced.
10559
10560 You can specify each option multiple times to use multiple regular expressions
10561 one after another.
10562
10563 =back
10564
10565 Example:
10566
10567  <Target "replace">
10568    # Replace "example.net" with "example.com"
10569    Host "\\<example.net\\>" "example.com"
10570
10571    # Strip "www." from hostnames
10572    Host "\\<www\\." ""
10573  </Target>
10574
10575 =item B<set>
10576
10577 Sets part of the identifier of a value to a given string.
10578
10579 Available options:
10580
10581 =over 4
10582
10583 =item B<Host> I<String>
10584
10585 =item B<Plugin> I<String>
10586
10587 =item B<PluginInstance> I<String>
10588
10589 =item B<TypeInstance> I<String>
10590
10591 =item B<MetaData> I<String> I<String>
10592
10593 Set the appropriate field to the given string. The strings for plugin instance,
10594 type instance, and meta data may be empty, the strings for host and plugin may
10595 not be empty. It's currently not possible to set the type of a value this way.
10596
10597 The following placeholders will be replaced by an appropriate value:
10598
10599 =over 4
10600
10601 =item B<%{host}>
10602
10603 =item B<%{plugin}>
10604
10605 =item B<%{plugin_instance}>
10606
10607 =item B<%{type}>
10608
10609 =item B<%{type_instance}>
10610
10611 These placeholders are replaced by the identifier field of the same name.
10612
10613 =item B<%{meta:>I<name>B<}>
10614
10615 These placeholders are replaced by the meta data value with the given name.
10616
10617 =back
10618
10619 Please note that these placeholders are B<case sensitive>!
10620
10621 =item B<DeleteMetaData> I<String>
10622
10623 Delete the named meta data field.
10624
10625 =back
10626
10627 Example:
10628
10629  <Target "set">
10630    PluginInstance "coretemp"
10631    TypeInstance "core3"
10632  </Target>
10633
10634 =back
10635
10636 =head2 Backwards compatibility
10637
10638 If you use collectd with an old configuration, i.E<nbsp>e. one without a
10639 B<Chain> block, it will behave as it used to. This is equivalent to the
10640 following configuration:
10641
10642  <Chain "PostCache">
10643    Target "write"
10644  </Chain>
10645
10646 If you specify a B<PostCacheChain>, the B<write> target will not be added
10647 anywhere and you will have to make sure that it is called where appropriate. We
10648 suggest to add the above snippet as default target to your "PostCache" chain.
10649
10650 =head2 Examples
10651
10652 Ignore all values, where the hostname does not contain a dot, i.E<nbsp>e. can't
10653 be an FQDN.
10654
10655  <Chain "PreCache">
10656    <Rule "no_fqdn">
10657      <Match "regex">
10658        Host "^[^\.]*$"
10659      </Match>
10660      Target "stop"
10661    </Rule>
10662    Target "write"
10663  </Chain>
10664
10665 =head1 IGNORELISTS
10666
10667 B<Ignorelists> are a generic framework to either ignore some metrics or report
10668 specific metircs only. Plugins usually provide one or more options to specify
10669 the items (mounts points, devices, ...) and the boolean option
10670 C<IgnoreSelected>.
10671
10672 =over 4
10673
10674 =item B<Select> I<String>
10675
10676 Selects the item I<String>. This option often has a plugin specific name, e.g.
10677 B<Sensor> in the C<sensors> plugin. It is also plugin specific what this string
10678 is compared to. For example, the C<df> plugin's B<MountPoint> compares it to a
10679 mount point and the C<sensors> plugin's B<Sensor> compares it to a sensor name.
10680
10681 By default, this option is doing a case-sensitive full-string match. The
10682 following config will match C<foo>, but not C<Foo>:
10683
10684   Select "foo"
10685
10686 If I<String> starts and ends with C</> (a slash), the string is compiled as a
10687 I<regular expression>. For example, so match all item starting with C<foo>, use
10688 could use the following syntax:
10689
10690   Select "/^foo/"
10691
10692 The regular expression is I<not> anchored, i.e. the following config will match
10693 C<foobar>, C<barfoo> and C<AfooZ>:
10694
10695   Select "/foo/"
10696
10697 The B<Select> option may be repeated to select multiple items.
10698
10699 =item B<IgnoreSelected> B<true>|B<false>
10700
10701 If set to B<true>, matching metrics are I<ignored> and all other metrics are
10702 collected. If set to B<false>, matching metrics are I<collected> and all other
10703 metrics are ignored.
10704
10705 =back
10706
10707 =head1 SEE ALSO
10708
10709 L<collectd(1)>,
10710 L<collectd-exec(5)>,
10711 L<collectd-perl(5)>,
10712 L<collectd-unixsock(5)>,
10713 L<types.db(5)>,
10714 L<hddtemp(8)>,
10715 L<iptables(8)>,
10716 L<kstat(3KSTAT)>,
10717 L<mbmon(1)>,
10718 L<psql(1)>,
10719 L<regex(7)>,
10720 L<rrdtool(1)>,
10721 L<sensors(1)>
10722
10723 =head1 AUTHOR
10724
10725 Florian Forster E<lt>octo@collectd.orgE<gt>
10726
10727 =cut