=head1 NAME collectd - System statistics collection daemon =head1 SYNOPSIS collectd I<[options]> =head1 DESCRIPTION collectd is a daemon that receives system statistics and makes them available in a number of ways. The main daemon itself doesn't have any real functionality appart from loading, querying and submitting to plugins. For a description of available plugins please see L below. =head1 OPTIONS Most of collectd's configuration is done using using a configfile. See L for an in-depth description of all options. =over 4 =item B<-C> Iconfig-fileE> Specify an alternative config file. This is the place to go when you wish to change B's behavior. The path may be relative to the current working directory. =item B<-P> Ipid-fileE> Specify an alternative pid file. This overwrites any settings in the config file. This is thought for init-scripts that require the PID-file in a certain directory to work correctly. For everyday-usage use the B config-option. =item B<-f> Don't fork to the background. I will also B close standard file descriptors, detach from the session nor write a pid file. This is mainly thought for 'supervisioning' init replacements such as I. =item B<-h> Output usage information and exit. =back =head1 PLUGINS As noted above, the real power of collectd lies within it's plugins. There are two big groups of plugins, B and B plugins: =over 4 =item Input plugins are queried periodically. They somehow aquire the current value of whatever they where designed to work with and submit these values back to the daemon, i. e. they "dispatch" the values. As an example, the C reads the current cpu-counters of time spent in the various modes (user, system, nice, ...) and dispatches these counters to the daemon. =item Output plugins get the dispatched values from the daemon and does something with them. Common applications are writing to RRD-files, CSV-files or sending the data over a network link to a remote box. =back Of course not all plugins fit neatly into one of the two above categories. The C, for example, is able to send (i.Ee. "write") B receive (i.Ee. "dispatch") values. Also, it opens a socket upon initialization and dispatches the values when it receives them and isn't triggered at the same time the input plugins are being read. You can think if the network receive part as working asynchronous if it helps. In addition to the above, there are "logging plugins". Right now those are the C and the C. With these plugins collectd can provide information about issues and significant situations to the user. Several loglevels let you suppress uninteresting messages. Please note that some plugins, that provide other means of communicating with the daemon, have manpages of their own to describe their functionality in more detail. In particular those are L, L, ... =head1 SPECIAL PLUGINS =head2 perl The C includes a Perl-interpreter in collectd and provides Perl-equivalents of the plugin-functions. This makes it possible to write plugins in Perl. There are two more complex types you need to know about: =over 4 =item Data-Set A data-set is a list of one or more data-sources. Each data-source defines a name, type, min- and max-value and the data-set wraps them up into one structure. The general layout looks like this: [{ name => 'data_source_name', type => DS_TYPE_COUNTER || DS_TYPE_GAUGE min => value || undef, max => value || undef }, ...] =item Value-List A value-list is one structure which features an array of values and fields to identify the values, i. e. time and host, plugin name and plugin-instance as well as a type and type-instance. Since the "type" is not included in the value-list but is passed as an extra argument, the general layout looks like this: { values => [123, 0.5], time => time (), host => 'localhost', plugin => 'myplugin', plugin_instance => '', type_instance => '' } =back The following functions provide the C-interface to Perl-modules: =over 4 =item B (I, I, I) Registers a callback-function or data-set. I can be one of: =over 4 =item TYPE_INIT =item TYPE_READ =item TYPE_WRITE =item TYPE_LOG =item TYPE_SHUTDOWN =item TYPE_DATASET =back I is the name of the callback-function or the type of the data-set, depending on the value of I. (Please note that the type of the data-set is the value passed as I here and has nothing to do with the I argument which simply tells B what is being registered.) The last argument, I, is either a function- or an array-reference. If I is B, then the I argument must be an array-reference which points to an array of hashes. Each hash describes one data-source. For the exact layout see B above. If the I argument is any of the other types (B, B, ...) then I is expected to be a function reference. These functions are called in the various stages of the daemon and are passed the following arguments: =over 4 =item TYPE_INIT =item TYPE_READ =item TYPE_SHUTDOWN No arguments are passed =item TYPE_WRITE The arguments passed are I, I, and I. I is a string. For the layout of I and I see above. =item TYPE_LOG The arguments are I and I. The log level is small for important messages and high for less important messages. The least important level is B, the most important level is B. In between there are (from least to most important): B, B, and B. I is simply a string B a newline at the end. =back =item B (I, I) Removes a callback or data-set from collectd's internal list of functionsE/ datasets. =item B (I, I) Submits a I of type I to the daemon. If the data-set I is found (and the number of values matches the number of data-sources) then the type, data-set and value-list is passed to all write-callbacks that are registered with the daemon. =item B (I, I) Submits a I of level I to collectd's logging mechanism. The message is passed to all log-callbacks that are registered with collectd. =back =head1 SEE ALSO L, L, L, L, L =head1 AUTHOR Florian Forster Eocto@verplant.orgE =cut