This is a text-only version of the following page on https://raymii.org:
---
Title       :   Leaf Node Monitoring v2023.01 released, major performance improvements, new layout and new checks!
Author      :   Remy van Elst
Date        :   05-01-2023
URL         :   https://raymii.org/s/blog/Leaf_Node_Monitoring_v2023.01_released.html
Format      :   Markdown/HTML
---



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][0] website.

[You can download the new version here.][1]


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][2]


### 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][3]


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][4]

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?


<table>
 <th>
   <td>v2022.01 (old)</td>
   <td>v2023.01 (new)</td>
 </th>
 <tr>
   <td><img src="https://www.leafnode.nl/wp-content/uploads/2023/01/v2022.01-layout.png"/></td>
   <td><img src="https://www.leafnode.nl/wp-content/uploads/2023/01/v2023.01-layout.png"/></td>
 </tr>
</table>

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][5]. 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][6], 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][7]

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

![Failed proc check linux][8]


![ok proc check][9]

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][10]


![win proc ok][11]

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][13]


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][12]


- 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][14]



[0]: https://www.leafnode.nl/news/leaf-node-monitoring-2023-01-released/
[1]: https://www.leafnode.nl/download/
[2]: /s/inc/img/v2023.01-edit-layout-1.gif
[3]: /s/inc/img/v2023.01-overview-checks-running.png
[4]: /s/inc/img/v2023.01-edit-layout-controls-1.png
[5]: https://www.leafnode.nl/news/also-coming-in-v2022-02-responsive-layouts-in-qt-qml/
[6]: https://www.monitoring-plugins.org/
[7]: /s/inc/img/v2023.01-add-external-process-check.png
[8]: /s/inc/img/v2023-01-external-process-check-FAIL.png
[9]: /s/inc/img/v2023-01-external-process-check-OK.png
[10]: /s/inc/img/v2023-win-failed-proc-check.png
[11]: /s/inc/img/v2023-win-ok-proc-check.png
[12]: /s/inc/img/v2023.01-settings.png
[13]: /s/inc/img/v2023.01-tray-icon-menu.png
[14]: /s/inc/img/v2023.01-https-error-output.png

---

License:
All the text on this website is free as in freedom unless stated otherwise.
This means you can use it in any way you want, you can copy it, change it
the way you like and republish it, as long as you release the (modified)
content under the same license to give others the same freedoms you've got
and place my name and a link to this site with the article as source.

This site uses Google Analytics for statistics and Google Adwords for
advertisements. You are tracked and Google knows everything about you.
Use an adblocker like ublock-origin if you don't want it.

All the code on this website is licensed under the GNU GPL v3 license
unless already licensed under a license which does not allows this form
of licensing or if another license is stated on that page / in that software:

   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 3 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, see <http://www.gnu.org/licenses/>.

Just to be clear, the information on this website is for meant for educational
purposes and you use it at your own risk. I do not take responsibility if you
screw something up. Use common sense, do not 'rm -rf /' as root for example.
If you have any questions then do not hesitate to contact me.

See https://raymii.org/s/static/About.html for details.