Merge branch 'collectd-4.2' into collectd-4.3
[collectd.git] / src / collectd-unixsock.pod
1 =head1 NAME
2
3 collectd-unixsock - Documentation of collectd's C<unixsock plugin>
4
5 =head1 SYNOPSIS
6
7   # See collectd.conf(5)
8   LoadPlugin unixsock
9   # ...
10   <Plugin unixsock>
11     SocketFile "/path/to/socket"
12     SocketGroup "collectd"
13     SocketPerms "0770"
14   </Plugin>
15
16 =head1 DESCRIPTION
17
18 The C<unixsock plugin> opens an UNIX-socket over which one can interact with
19 the daemon. This can be used to use the values collected by collectd in other
20 applications, such as monitoring, or submit externally collected values to
21 collectd.
22
23 This plugin is used by L<collectd-nagios(1)> to check if some value is in a
24 certain range and exit with a Nagios-compatible exit code.
25
26 =head1 COMMANDS
27
28 Upon start the C<unixsock plugin> opens a UNIX-socket and waits for
29 connections. Once a connection is established the client can send commands to
30 the daemon which it will answer, if it understand them.
31
32 The following commands are implemented:
33
34 =over 4
35
36 =item B<GETVAL> I<Identifier>
37
38 If the value identified by I<Identifier> (see below) is found the complete
39 value-list is returned. The response is a space separated list of
40 name-value-pairs:
41
42 I<num> I<name>B<=>I<value>[ I<name>B<=>I<value>[ ...]]
43
44 If I<num> is less then zero, an error occurred. Otherwise it contains the
45 number of values that follow. Each value is of the form I<name>B<=>I<value>.
46 Counter-values are converted to a rate, e.E<nbsp>g. bytes per second.
47 Undefined values are returned as B<NaN>.
48
49 Example:
50   -> | GETVAL myhost/cpu-0/cpu-user
51   <- | 1 value=1.260000e+00
52
53 =item B<LISTVAL>
54
55 Returns a list of the values available in the value cache together with the
56 time of the last update, so that querying applications can issue a B<GETVAL>
57 command for the values that have changed.
58
59 The first line's status number is the number of identifiers returned or less
60 than zero if an error occurred. Each of the following lines contains the
61 update time as an epoch value and the identifier, separated by a space.
62
63 Example:
64   -> | LISTVAL
65   <- | 69 Values found
66   <- | 1182204284 leeloo/cpu-0/cpu-idle
67   <- | 1182204284 leeloo/cpu-0/cpu-nice
68   <- | 1182204284 leeloo/cpu-0/cpu-system
69   <- | 1182204284 leeloo/cpu-0/cpu-user
70   ...
71
72 =item B<PUTVAL> I<Identifier> [I<OptionList>] I<Valuelist>
73
74 Submits one or more values (identified by I<Identifier>, see below) to the
75 daemon which will dispatch it to all it's write-plugins.
76
77 An I<Identifier> is of the form
78 C<I<host>B</>I<plugin>B<->I<instance>B</>I<type>B<->I<instance>> with both
79 I<instance>-parts being optional. If they're omitted the hyphen must be
80 omitted, too. I<plugin> and each I<instance>-part may be chosen freely as long
81 as the tuple (plugin, plugin instance, type instance) uniquely identifies the
82 plugin within collectd. I<type> identifies the type and number of values
83 (i.E<nbsp>e. data-set) passed to collectd. A large list of predefined
84 data-sets is available in the B<types.db> file.
85
86 The I<OptionList> is an optional list of I<Options>, where each option is a
87 key-value-pair. A list of currently understood options can be found below, all
88 other options will be ignored.
89
90 I<Valuelist> is a colon-separated list of the time and the values, each either
91 an integer if the data-source is a counter, or a double if the data-source is
92 of type "gauge". You can submit an undefined gauge-value by using B<U>. When
93 submitting B<U> to a counter the behavior is undefined. The time is given as
94 epoch (i.E<nbsp>e. standard UNIX time).
95
96 You can mix options and values, but the order is important: Options only
97 effect following values, so specifying an option as last field is allowed, but
98 useless. Also, an option applies to B<all> following values, so you don't need
99 to re-set an option over and over again.
100
101 The currently defined B<Options> are:
102
103 =over 4
104
105 =item B<interval=>I<seconds>
106
107 Gives the interval in which the data identified by I<Identifier> is being
108 collected.
109
110 =back
111
112 Please note that this is the same format as used in the B<exec plugin>, see
113 L<collectd-exec(5)>.
114
115 Example:
116   -> | PUTVAL testhost/interface/if_octets-test0 interval=10 1179574444:123:456
117   <- | 0 Success
118
119 =item B<PUTNOTIF> [I<OptionList>] B<message=>I<Message>
120
121 Submits a notification to the daemon which will then dispatch it to all plugins
122 which have registered for receiving notifications. 
123
124 The B<PUTNOTIF> if followed by a list of options which further describe the
125 notification. The B<message> option is special in that it will consume the rest
126 of the line as its value. The B<message>, B<severity>, and B<time> options are
127 mandatory.
128
129 Valid options are:
130
131 =over 4
132
133 =item B<message=>I<Message> (B<REQUIRED>)
134
135 Sets the message of the notification. This is the message that will be made
136 accessible to the user, so it should contain some useful information. This
137 option must be the last option because the rest of the line will be its value,
138 even if there are spaces and equal-signs following it! This option is
139 mandatory.
140
141 =item B<severity=failure>|B<warning>|B<okay> (B<REQUIRED>)
142
143 Sets the severity of the notification. This option is mandatory.
144
145 =item B<time=>I<Time> (B<REQUIRED>)
146
147 Sets the time of the notification. The time is given as "epoch", i.E<nbsp>e. as
148 seconds since January 1st, 1970, 00:00:00. This option is mandatory.
149
150 =item B<host=>I<Hostname>
151
152 =item B<plugin=>I<Plugin>
153
154 =item B<plugin_instance=>I<Plugin-Instance>
155
156 =item B<type=>I<Type>
157
158 =item B<type_instance=>I<Type-Instance>
159
160 These "associative" options establish a relation between this notification and
161 collected performance data. This connection is purely informal, i.E<nbsp>e. the
162 daemon itself doesn't do anything with this information. However, websites or
163 GUIs may use this information to place notifications near the affected graph or
164 table. All the options are optional, but B<plugin_instance> without B<plugin>
165 or B<type_instance> without B<type> doesn't make much sense and should be
166 avoided.
167
168 Please note that this is the same format as used in the B<exec plugin>, see
169 L<collectd-exec(5)>.
170
171 =back
172
173 Example:
174   -> | PUTNOTIF type=temperature severity=warning time=1201094702 message=The roof is on fire!
175   <- | 0 Success
176
177 =back
178
179 =head2 Identifiers
180
181 Value or value-lists are identified in a uniform fashion:
182
183 I<Hostname>/I<Plugin>/I<Type>
184
185 Where I<Plugin> and I<Type> are both either of type "I<Name>" or
186 "I<Name>-I<Instance>". This sounds more complicated than it is, so here are
187 some examples:
188
189   myhost/cpu-0/cpu-user
190   myhost/load/load
191   myhost/memory/memory-used
192   myhost/disk-sda/disk_octets
193
194 =head2 Return values
195
196 Unless otherwise noted the plugin answers with a line of the following form:
197
198 I<Num> I<Message>
199
200 If I<Num> is zero the message indicates success, if I<Num> is non-zero the
201 message indicates failure. I<Message> is a human-readable string that describes
202 the return value further.
203
204 Commands that return values may use I<Num> to return the number of values that
205 follow, such as the B<GETVAL> command. These commands usually return a negative
206 value on failure and never return zero.
207
208 =head1 ABSTRACTION LAYER
209
210 Shipped with the sourcecode comes the Perl-Module L<Collectd::Unixsock> which
211 provides an abstraction layer over the actual socket connection. It can be
212 found in the directory F<contrib/PerlLib>. If you want to use Perl to
213 communicate with the daemon, you're encouraged to use and expand this module.
214
215 =head1 SEE ALSO
216
217 L<collectd(1)>,
218 L<collectd.conf(5)>,
219 L<collectd-nagios(1)>,
220 L<unix(7)>
221
222 =head1 AUTHOR
223
224 Florian Forster E<lt>octo@verplant.orgE<gt>
225
226 =cut