Provided by: smokeping_2.6.7-1_all bug


       smokeping_upgrade - Notes on upgrading Smokeping


       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 "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

2.4.2 to 2.4.3

       To fix zooming for FF3.5 I prototype and scriptaculous have been updated. To complete the
       fix you have to update your basepage.html too and include effects in the scriptaculous
       load line


2.3.6 to 2.4.0

       The new SmokeTrace tool was added to SmokePing. For setup instructions read the smoketrace
       manual page.

2.3.3 to 2.3.4

       The communication protocol between master and slave has been made more secure. This
       requires that BOTH master and slave are upgraded to continue working.

2.2.x to 2.3.x

       2.3.0 is mainly about new features. Check out the reference documentation on hierarchies
       and the target properties parents, hidden and nomasterpoll.

       The only thing you have to take a look at, is the file basepage.html.dist which got some
       new css properties. Without them the results of the new filter function will look quite

2.1.x to 2.2.0

   LWP Dependency
       The new master/slave functionality needs the LWP::UserAgent module from CPAN. Currently
       the dependency is not optional; you'll need the module even if you are only running one
       Smokeping instance.

2.0.9 to 2.1.0

   Echoping 6 support
       This is the first Smokeping version that fully supports echoping 6. Earlier versions of
       the EchoPingHttp probes don't work with echoping 6 because of a command line
       incompatibility. (Echoping 5 is still supported, of course.)

       This version also introduces three new probes using the new echoping plugin interface
       introduced in version 6:

       ·   EchoPingDNS

       ·   EchoPingLDAP

       ·   EchoPingWhois

       See the smokeping_examples document for simple examples of using these probes.

   New method in (if you write your own probes)
       The module defines the method ProbeUnit. Override this if your Probe does not
       return 'Seconds'. See the for inspiration.

2.0.8 to 2.0.9

       The 'timeout' variable removed in 2.0.5 has been brought back.  It is used to give the
       "fping" command the "-t" parameter, which apparently affects the timeout of the last ping
       in the counting ("-C") mode used by Smokeping.

2.0.5 to 2.0.6

   CGI self-referring links (again)
       The way Smokeping creates the self-referring links was changed once more.  See the section
       under '2.0.4 to 2.0.5' for a description of the previous change.

       The behaviour is now customizable via the "linkstyle" variable in the "General" section of
       the configuration file. The default is now "relative", creating links like
       <a href="?foo=bar">. I hope this works for everybody, but if it doesn't, see
       smokeping_config for the alternatives.

2.0.4 to 2.0.5

       The 'timeout' variable has been removed.  It was used to give the "fping" command the "-t"
       parameter, but as this parameter is only effective in "fping"'s default mode, while
       Smokeping uses the counting mode ("-c"), it never actually did anything.

   CGI self-referring links
       The way Smokeping creates the self-referring links was changed. The old behaviour used the
       script name but not the host part, resulting in links like
       <a href="/path/smokeping.cgi?foo=bar">. The new behaviour uses the "cgiurl" variable: the
       links are always absolute like <a href="">.

2.0.1 to 2.0.2

   Edge-triggered alerts
       The alert notifications can now optionally be sent only when the state of the alert
       changes. This means that only the first match of the alert generates a notification,
       subsequent matches don't. When the alert is cleared, ie. there's no match anymore, another
       notification is sent.

       This behaviour is enabled by the "edgetrigger" variable in the "Alerts" section. The old
       behaviour (which sends a notification on each match) is the default.

1.40 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.

       A smaller change worth mentioning is the inclusion of the tSmoke script (contributed by
       Dan McGinn-Combs) for sending summary emails on daily and weekly system status. Note that
       it needs the new 'tmail' variable to be defined in the config file.

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

           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

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

           Additionally, "probe" must now precede "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

           Note for distributors: the "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.

       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.

           The "timeout" variable in the Probes section is now the maximum time expected for 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 "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.

           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.

       Minimum number of pings
           The "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.

       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 try to
           fix the situation and refuse to start if it can't.

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

       Configurable location for DYNAMIC-related files
           There is now a new configuration variable, "dyndir", that can be used to specify the
           location of the DYNAMIC-related files (.adr and .snmp).  These files used to be kept
           under "datadir" along with the RRD files, but since they need to be writable by the
           web server, it may be useful to separate these.

           If "dyndir" is not specified, Smokeping will use the "datadir" value as the default.
           This should ensure that no existing setups will break.

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

           The "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

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

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

           The change was made to fix the confusing situation where the "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 "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 "agent" parameter).  Smokeping will
           complain if it notices quotes around the string.

           Any extra arguments for "curl" can now be specified in the "extraargs" variable.

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

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

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

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

           The "sleeptime" variable was changed to "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.)

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

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

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

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

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

   CGI::Carp module version
       The recommended version for CGI::Carp is now at least 1.24, included in and
       the Perl standard distribution starting from 5.8.1.  See the smokeping_install document.

1.38 to 1.40

       The new navigation feature
           The big visible difference between 1.38 and 1.40 is the new browser navigation
           feature: when clicking on the graphs in detail view you can select different time
           ranges for the graph. The creation of this feature has been sponsored by

1.34 to 1.37

       The 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
           "rhost", "rbinary" and "rhost".

       Logging changes
           The "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.

       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'.


       Copyright 2005 by Niko Tyni.


       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,


       Niko Tyni <>


       The other Smokeping documents, especially smokeping_config.