Skip to main content

Raymii.org Raymii.org Logo

Quis custodiet ipsos custodes?
Home | About | All pages | Cluster Status | RSS Feed

Leaf Node Monitoring v2023.01 released, major performance improvements, new layout and new checks!

Published: 05-01-2023 | Author: Remy van Elst | Text only version of this article



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. This post goes over everything that is new in this release.

This post is cross-posted on the official Leaf Node Monitoring website.

You can download the new version here.

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.

edit layout

Performance improvements

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.

Responsive Layout

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:

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

Layout controls

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:

Add external process check

Here is how a successful check and a failed check look, both on Windows as on Linux:

Failed proc check linux

ok proc check

The above check is a Synology SNMP disk temperature check.

The below check is a Windows Powershell Get-Process check, both failed and OK:

win proc check fail

win proc ok

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:

tray icon menu

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.

settings

  • 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:

https errors

Tags: android , blog , business , c++ , gpl , leaf-node-monitoring , qt