SMOKEPING_UPGRADE(7)

πŸ’– NAME πŸ’–

Okay bestie, welcome to smokeping_upgrade(7) β€” the SmokePing upgrade-notes manual page. This is where SmokePing tells you what changed between versions and how to not get absolutely humbled by an upgrade. πŸ’…

✨ OVERVIEW ✨

So this doc is literally trying to list the incompatible or otherwise user-visible changes in Smokeping versions, plus 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 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. Same energy for 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. No cap.

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.


πŸ”₯ 2.4.2 to 2.4.3 πŸ”₯

Okay so to fix zooming for FF3.5, 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:

cropper/lib/scriptaculous.js?load=builder,effects,dragdrop

That's the whole vibe check for this one, bestie.

🌸 2.3.6 to 2.4.0 🌸

The new SmokeTrace tool was added to SmokePing. For setup instructions, read the smoketrace manual page. Obsessed with a whole new tool, honestly. ✨

πŸŽ€ 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. Like, both of them. No leaving one behind. πŸ’€

πŸ¦‹ 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. Main character feature energy, fr fr.

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 bad. Not me warning you about aesthetics, but here we are. πŸ™ˆ

πŸ’œ 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. Like, even solo. Periodt. πŸ’…

⭐ 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. We love backwards compatibility.)

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

🧚 New method in base.pm (if you write your own probes) 🧚

The base.pm module defines the method ProbeUnit. Override this if your Probe does not return 'Seconds'. See the FTPtransfer.pm for inspiration. DIY probe girlies, this one's for you. 🫢

πŸ”₯ 2.0.8 to 2.0.9 πŸ”₯

πŸ’€ FPing πŸ’€

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. She's back and she has a job. πŸ’…

πŸ“ 2.0.5 to 2.0.6 πŸ“

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. Not the sequel we asked for, but okay. 😭

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 πŸ’œ

πŸ’€ FPing πŸ’€

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. So it was giving nothing. Not even a little. πŸ’€

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="http://some.host/path/smokeping.cgi?foo=bar">. Absolute link main character energy. ✨

πŸŽ€ 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, and subsequent matches don't. When the alert is cleared, ie. there's no match anymore, another notification is sent. It's giving "only speak when spoken to" but make it monitoring. 😭

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. So if you want the new edge-triggered vibe, you gotta set it.

🌈 1.40 to 2.0 🌈

Okay bestie, this is the strict era β€” the biggest change in the 2.0 release is that the configuration file is now parsed much more strictly. The goal is (hopefully understandable 😭) error messages, so config editing becomes less of a trial-and-error lifestyle and more of an actual documented thing. It also automates generation of the configuration documentation from the source code, so the docs are now more accurate. Slay.

A smaller change worth mentioning: the tSmoke script is now included (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 πŸ‘€.

πŸŽ€ CONFIGURATION πŸŽ€

The configuration syntax has stayed mostly the same, except for the issues below. Buckle up, bestie 🫢.

πŸ’… 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 + characters, obviously 😌.

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

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

🌸 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. Wild, but that's the tea β˜•.

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 accordingly πŸ‘‘.

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. Cute, right? πŸ’–

⏰ Timeouts ⏰

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

🧚 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. Capitalization is the moment πŸ’….

πŸ“ 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. Three is the minimum, bestie β€” the math said so πŸ“ˆ.

πŸ”₯ 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. Dramatic? Yes. Necessary? Also yes 😭.

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 πŸ› οΈ.

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. Safety first, icon behavior πŸ’œ.

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

🌈 RemoteFPing 🌈

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 does. Glow-up with strings attached πŸ’….

✨ FPing6 ✨

This probe is also now derived from FPing and supports all the variables FPing does. Same energy, bestie πŸ¦‹.

πŸ’– Curl πŸ’–

  • 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.) We love a fixed plot hole 😌.
  • 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. No quotes, bestie πŸ™…β€β™€οΈ.
  • Any extra arguments for curl can now be specified in the extraargs variable. Extra credit behavior πŸŽ€.

🐚 EchoPingHttp 🐚

The default timeout of this probe has been raised to 10 seconds. More time to shine ✨.

🐚 EchoPingHttps 🐚

The default timeout of this probe has been raised to 10 seconds. Same glow-up, secure edition πŸ”.

🌸 EchoPingIcp 🌸

The url variable is now mandatory, as the old default / didn't make sense because it's relative rather than absolute. We don't do confusing defaults anymore πŸ’….

🧠 LDAP 🧠

The filter variable is now mandatory, as Net::LDAP bails out without it. No filter, no service 😭.

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 another. Semantics said "new era" ✨.

πŸ“‘ Radius πŸ“‘

The sleeptime variable was changed to mininterval and its semantics were changed accordingly. See the LDAP explanation above. Same plot, same slay 🫢.

🌐 AnotherDNS 🌐

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. Seconds, bestie β€” she's not doing microdrama anymore ⏱️.

πŸ›°οΈ AnotherSSH πŸ›°οΈ

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. Same energy, new units πŸ’œ.

πŸ‘‘ TelnetIOSPing πŸ‘‘

The name of this probe was changed: it now starts with a capital letter like all the others do. Capitalization said "main character" πŸ’….

The target variable was removed. The target should now be specified in the host variable, like it is with all the other probes. One host to rule them all 🌈.

πŸͺ CGI::Carp module version πŸͺ

The recommended version for CGI::Carp is now at least 1.24, included in CGI.pm-2.82 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 BeverlyCorp.com. Sponsored icon behavior πŸ‘‘βœ¨.


🌸 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. Yes, rhost is listed twice β€” not me, I'm just the messenger πŸ˜­πŸ’€.

πŸ“ 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. Turn on syslog, bestie β€” your logs deserve to be seen 🫢.

⚑ 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. Independence slay πŸ’….


Copyright 2005 by Niko Tyni.


πŸŽ€ LICENSE πŸŽ€

Legal bestie moment β€” here's the exact license tea β˜•:

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.


🌟 AUTHOR 🌟

Niko Tyni <ntyni@iki.fi>.


πŸ”— SEE ALSO πŸ”—

The other Smokeping documents, especially smokeping_config. Go read the lore, bestie πŸ“šπŸ’–.


Okay that's the whole upgrade-file moment ✨ this page is source/version 2.9.0, dated 2025-06-30. Go forth and upgrade iconically πŸ«ΆπŸ’…

πŸ“¦ where this page comes from