I’m pleased to announce the next version of Leaf Node Monitoring, the simple and easy to use open source site and server monitoring tool. Major new features include a responsive and adjustable layout, massive performance improvements and a new check type, allowing you to execute external processes, for example, the nagios/monitoring plugins.
You can download the new version here. Existing customers can open their purchase confirmation email and re-download, I’ve updated the assets. If you have any issues, please shoot me an email.
Let’s start off with a screen recording of the new version, demonstrating the new responsive layout. Note that any stuttering is due to the recording software.
The biggest but least visible new feature in this release is the massive speedup. All checks now run in their own thread, with intelligent thread management making sure the UI is not blocked. Valgrind and QML Profiling also showed a few pain points which have been resolved to make LeafNode Monitoring feel way more snappy. Using the Loader in QML to only load parts when required and not passing huge amounts of text via Qt signals/slots are a few of the other speed improvements. This is also the reason why this version took so long to release, I’ve rewritten the threading related code multiple times and only now am I a bit satisfied with it.
I’ll now go over the other new features in more detail.
One request I got from multiple people was to make the app more usable on larger screens, like a wall mounted monitor. Here is a picture showing a 2 column layout: Using the new controls, visible after clicking the arrow at the bottom of the app, you can resize the host cards and check tiles. Make them huge for a wall mounted monitor, make them small on your high-dpi Android phone.
Here is a side by side comparison of the previous version (2022.01) together with this version, showing the same hosts. Can you imagine how much more useful this is on a big screen?
|v2022.01 (old)||v2023.01 (new)|
My intention always was to have Leaf Node Monitoring running in a small window on the side. Since failed checks automatically are placed at the top, a quick glance should show you enough. But, I’m more than happy to incorporate user feedback, and I find setting the layout to be a bigger improved readability.
Earlier I’ve written an article showcasing the new layout feature, you can read it here. Another visual improvement is the rounding of most corners. Since the most-used operating system in their 11th version also rounded corners, I thought, why not, lets be fancy.
External Process Checks
The other major new feature is a new check type, namely External Process checks. This allows you to configure any process and when it exit with an exit code other than 0, it will trigger an error. On the Linux side you can use the monitoring plugins, on Windows you might use Powershell, for example a `Get-Process` command. The README file and the build in help list examples for both PowerShell and Linux. Here’s how it looks when you add a check:
|Synology SNMP disk temperature check|
|Windows Process running check|
I’m still thinking about how to design a better check add / host edit screen. At the moment it still is a bit of a big list of buttons and fields. Keep an eye out for new versions since that is high on my todo list. But, adding this external process integration extends the functionality of LeafNode Monitoring by a huge amount, since you can now add any check or script you want and don’t have to wait until I add it myself.
Notifications for individual checks
In the previous version, you were only notified when of a host status change and you had to go look yourself to see which check failed. Now you also receive notifications for each individual check. No history (yet), your window manager / operating system alert history is a useful alternative for now.
Tray icon menu
On the desktop, the tray icon can now be right-clicked to open a menu allowing you to quickly check all hosts or start/stop the timer or disable/enable notifications:
This is a small quality of life improvement which I find myself using often, more than I expected.
Other fixes / additions
The output of a check can now be selected (and copied).
Unit tests are added to the code and a CI build system has been setup.
Reworked the visual timer indicator. Now the timer only starts counting down if there are no more checks running. Most controls are now disabled when there are checks running.
Qt6 compatibility. Source code builds with Qt 6 and unit tests are ran with both Qt 5 and Qt 6. Binaries are still distributed as 32-bit Qt5 for Windows 7 and older Linux compatibility.
Added button to add a ping check to a target. The ping check could be removed, but not added (without removing the entire target).
You can now configure the amount of hosts that are checked concurrently and the amount of checks that each host runs concurrently. If you have a slower or older Android phone, it might help to set this to 1 or 2, on a fast desktop you could set it way higher.
When a check fails, it is retried up to 4 times. For example if you have one missed ping packet, you won’t get a notification, only if 4 consecutive ping’s have an error.
When a HTTPS check fails, the output now gives more information including the certificate: