summaryrefslogtreecommitdiffstats
path: root/doc/smokeping_upgrade.pod
blob: bd3b93a32294ba6c0f6f33f8889769aff95948be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
=head1 NAME

smokeping_upgrade - Notes on upgrading Smokeping

=head1 OVERVIEW

This document tries to list incompatible or otherwise user-visible changes
in Smokeping versions, with instructions on how to fix any possible
problems. It also sporadically mentions new features and the like.

The document currently starts with changes from 1.34 to 1.37. If you
run into problems with upgrading from earlier versions, please send
a description of the problems, preferably with notes on how to fix
them, to the C<smokeping-users> mailing list, so they can be added to
this document.  The same applies to any problems you find with current
versions that are not documented here, of course. Patch submissions
against the POD source of this file are most appreciated.

If a version is not listed, there are no known problems in upgrading
to it from the previous release.

An official list of changes with each release can be found in the CHANGES
file in the Smokeping distribution. This document tries to complement
that with upgrading instructions etc.

=head1 1.38 to 2.0

The biggest change with the 2.0 release is that the configuration file
is now parsed much more strictly. This should result in (hopefully
understandable) error messages making the configuration less of the
trial-and-error variety than it used to be. It also automates the
generation of the configuration documentation from the source code,
so the docs are now more accurate.

The configuration syntax has stayed mostly the same, except for the
issues below.

=over

=item PROBE_CONF

The PROBE_CONF subsections have been deprecated. All the target-specific
variables are now configured in the same section as the target is. Just
deleting the

++ PROBE_CONF

lines should fix this (for any number of '+', obviously.)

The existence of a PROBE_CONF section makes smokeping exit with an error
message at parse time.

Note for distributors: these lines could easily be removed automatically
during upgrade.

=item Variable order

The C<probe> variable must now be set before any variables that depend on
the selected probe. This is because setting C<probe> modifies the grammar
of the rest of the section dynamically at parse time.

Additionally, C<probe> must now precede C<host>, for reasons that have
to do with the current implementation of mandatory variable checking.

Both of these errors are recognized at parse time and produce error messages
accordingly.

Note for distributors: the C<smokeping> command now has a new '--check'
option that can be used to verify the syntax of the configuration
file. It might be a good idea to do this on upgrade and give the user
an explanatory note if the verification fails.

=item Target-specific variables in the Probes section

This is not an incompatible change, but it is mentioned here nevertheless.
Target-specific variables can now be specified in the Probes section as well,
and the values given become defaults for all the targets.

=item Timeouts

The C<timeout> variable in the Probes section is now the maximum time
expected for B<one> ping to take. Previously it was the maximum time
allowed for all the pings to one target.  This is an incompatible change,
but the code now works in the way it was documented to work even in 1.38.

Those probes offering a target-specific C<timeout> variable will get a
default for it from the Probes section, as noted in the previous item.
This should ensure that probes that enforce the ping timeout themselves
(most do) will not get killed due to timeout before they have a chance
to do it.

=item Matchers

The matcher modules have been renamed to start with a capital letter,
to differentiate the actual modules from the base classes. You have to
capitalize the matcher name in the pattern definition accordingly.

=item Minimum number of pings

The C<pings> variable now has an enforced minimum value of 3, as the
whole design of Smokeping is based on the idea of sending several probes
and measuring and visualizing the variation between them.

=item RRD parameter checking

Smokeping now checks at startup that the parameters of any existing RRD files
match those specified in the configuration file. If there is a discrepancy,
it will give an error message and refuse to start. 

This situation is most likely to happen if you have modified the C<step>
or C<pings> variables in your configuration file. You'll then have to
delete the old RRD file or somehow convert it to use the new parameters.
The C<rrdtune> command might be helpful here.

=back

In addition to this, some probes have had minor incompatible changes to
their configuration.

=over

=item L<RemoteFPing|Smokeping::probes::RemoteFPing>

The C<rbinary> variable is now mandatory. This is a side effect from a bigger change:
the probe is now derived from the FPing probe and supports all the variables
FPing does.

=item L<FPing6|Smokeping::probes::FPing6>

This probe is also now derived from FPing and supports all the variables FPing does.

=item L<Curl|Smokeping::probes::Curl>

The URL that will be used is now specified with the variable C<urlformat> instead
of C<url>. The new variable can (and usually should) include a placeholder
for the C<host> variable of each target as C<%host%>, eg. C<urlformat = http://%host%/>.
The new variable is mandatory. 

The change was made to fix the confusing situation where the C<host> variable
was required for each actual target, but it didn't actually have any effect
(as the server to be probed came from the C<url> variable.)

Timeouts are now recognized properly by looking at the curl exit code.
The default timeout of this probe has been raised to 10 seconds.

The command line is now executed without an intervening /bin/sh, and so
quotes are not needed anymore around the User-Agent string (the C<agent>
parameter).  Smokeping will complain if it notices quotes around the
string.

=item L<EchoPingHttp|Smokeping::probes::EchoPingHttp>

The default timeout of this probe has been raised to 10 seconds.

=item L<EchoPingHttps|Smokeping::probes::EchoPingHttps>

The default timeout of this probe has been raised to 10 seconds.

=item L<EchoPingIcp|Smokeping::probes::EchoPingIcp>

The C<url> variable is now mandatory, as the old default "/" didn't make
sense because it's relative rather than absolute.

=item L<LDAP|Smokeping::probes::LDAP>

The C<filter> variable is now mandatory, as Net::LDAP bails out without it.

The C<sleeptime> variable was changed to C<mininterval> and its semantics
were changed accordingly (it's now the minimum time between two queries
rather than the time slept between the end of one and the start of the
another.)

=item L<Radius|Smokeping::probes::Radius>

The C<sleeptime> variable was changed to C<mininterval> and its semantics
were changed accordingly. See the LDAP explanation above.

=item L<AnotherDNS|Smokeping::probes::AnotherDNS>

The C<sleeptime> variable was changed to C<mininterval> and its semantics
were changed accordingly. See the LDAP explanation above. Additionally,
the time is now specified in seconds rather than microseconds.

=item L<AnotherSSH|Smokeping::probes::AnotherSSH>

The C<sleeptime> variable was changed to C<mininterval> and its semantics
were changed accordingly. See the LDAP explanation above. Additionally,
the time is now specified in seconds rather than microseconds.

=item L<TelnetIOSPing|Smokeping::probes::TelnetIOSPing>

The name of this probe was changed: it now starts with a capital letter
like all the others do.

The C<target> variable was removed. The target should now be specified
in the C<host> variable, like it is with all the other probes.

=back

=head1 1.34 to 1.37

=over

=item The L<RemoteFPing|Smokeping::probes::RemoteFPing> probe

The configuration of this probe was moved from the Targets section to the
Probes section, as all the variables are really probe-specific. The moved
variables were C<rhost>, C<rbinary> and C<rhost>.

=item Logging changes

The C<smokeping> daemon now warns at startup if syslog support is not turned on
in the config file. This is because many diagnostic messages will otherwise
get lost.

=item Concurrent probes

Each probe now runs in its own process, instead of them all running
sequentially in one process. This makes it possible to specify different
step lengths for different probes. You can get the old behaviour back
by setting 'concurrentprobes = no'.

=back

=head1 COPYRIGHT

Copyright 2005 by Niko Tyni.

=head1 LICENSE

This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more
details.

You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
02139, USA.

=head1 AUTHOR

Niko Tyni <ntyni@iki.fi>

=head1 SEE ALSO

The other Smokeping documents, especially L<smokeping_config>.