Releasing Icinga for Windows v1.13.0-Beta1

by | Aug 30, 2024

Today we are very happy to announce the first beta release of Icinga for Windows with with version 1.13.0.0! This new release provides a huge number of improvements and changes to the Framework as well as the default Windows Plugins, which we will talk about later on.

Why a Beta release?

While we are confident in the changes we made and trust our internal tests, we learned from previous releases that different Windows versions and configurations of plugin threshold and systems environments can cause unexpected results. For this reason we want provide a smoother upgrade experience, by shipping multiple beta versions before the official release. This allows us to react to user feedback, improve things and even add additional features and functionality to expand Icinga for Windows further.

At the moment we are planning up to 3 beta phases, with beta 1 starting today and beta 2 starting at 19th September 2024.

For a better overview for feedback, we have created a community post on which you can share all your thoughts, issues and provide detailed feedback on the current experience.

Whats new?

We have provided a bunch of bugfixes and improvements for Icinga for Windows itself as well as the plugins. The full changelog for the Framework can be found here and for the plugins here. We will talk about the most important things below.

Improved certificate generation

Most importantly, we have improved the handling on how the REST-Api will handle the certificate generation during the first installation. In most cases, generating the Icinga Agent certificate requires a manual step on the Icinga CA server, to sign the certificate. While this is shipped to the Icinga Agent afterwards, previously the Icinga for Windows daemon would only check for new certificates at 2:00 AM and generate them. This would cause newly deployed Icinga for Windows environments in a non-operational state for an entire day.

Icinga for Windows v1.13.0 will now resolve this issue, by initially scheduling the certificate generation and keeping the process alive as long as no Icinga for Windows certificate signed by the Icinga CA could be created. This will ensure that once you sign the certificate on the Icinga CA for this specific host, it will only take up to 10 minutes before the monitoring is alive and scheduling checks, as the REST-Api will on-the-fly load the newly generated certificate once available.

Icinga Agent Eventlog severity

We heard a lot of feedback regarding the Icinga Agent logging everything into the Application log of Windows, which makes it hard to troubleshot other issues and applications. While the Icinga for Windows team can’t resolve this part, we have introduced a new command which allows to set the log level of the Windows EventLog feature. By default, the severity will be set to warning and all new installations will be configured with this setting. While updating to Icinga for Windows v1.13.0, a migration task will apply to update every single existing installation to use the warning severity as well. This should make the Application log way cleaner and more usable.

Can you also define your custom severity with a newly introduced command which applies once you restart the Icinga Agent:

# Allowed are: critical, debug, information, notice, warning
Write-IcingaAgentEventLogConfig -Severity 'warning';

# Restart the Icinga Agent afterwards
Restart-Service 'icinga2';

Easier API communication

A lot of users are using the API to test the behavior or check for the availability. To ensure we make it as easy to use as possible, without having to know anything about the port of the Icinga for Windows configuration, we now added a new command to interact with the API more easily.

Invoke-IcingaForWindowsRESTApi -Uri /v1/checker?command=cpu -Method POST -Body @{ '-Verbosity' = 3 };

You only have to provide the path to the target with the Uri argument, starting with the API version. In addition, you can use the Method and Body argument to easily send date to the API. The body you send requires to be a simple hashtable with the arguments for plugins and the command will take care of the entire rest. This should make the entire interaction with the API in general more user friendly and convenient.

Removing Process-List from CPU plugin

This is a short one and very simple: We have removed the process list collected by default with the CPU plugin, which was intended to report the top 5 processes which consume a lot of CPU resources. This feature caused way too many issues in the current implementation, causing either timeouts or very high CPU usage. For this reason, we have removed this feature for now. You do not have to change anything in your Icinga or plugin configuration, as just the code was removed.

We will re-introduce this feature later with Beta-2 or Beta-3 with a more modern and resource friendly implementation, including properly reported process information which aktual mean something.

New threshold and checker core

A long-term attempt has now finally be made its way into the next Icinga for Windows version. We have reworked the interpretation of plugin thresholds and the way on how plugins are executed inside the core of Icinga for Windows. While this does not affect on how plugins are developed, it will reduce a lot of CPU overhead and improve the performance while generating performance data. For example, the process plugin now reduced the execution time by over 50% with the new code base.

This is a massive performance boost, and while other plugins might not see the same results, the overall execution will cause less CPU overhead as the smoothed the interpretation of thresholds and reduced not required conversions. In addition, plugins will have a better way to display threshold ranges now, giving better feedback on why the status is warning or critical

Metrics over Time

With the first release of Beta-1, the Metrics over Time feature is currently no longer supported and will not work with threshold or checks. We are currently in the Final phase to finishing this feature and plan to bring it back with Beta-2 or Beta-3 in the upcoming weeks. The reason behind this change is that when we first introduced this feature, we wanted to make it easy for users to simply collect performance metrics by registering certain plugins in the background.

While this in general worked, the performance impact for CPU and Memory are not acceptable, caused by way too much overhead the plugin execution in general takes. In addition, some plugins require certain arguments to properly fetch information, limiting the result and causing way too much confusion. On the other hand, the entire code was not optimized in a way we would have liked, as the architecture of each plugin was way too different to find a common ground.

For this reason, we are finalizing the next version Metrics over Time 2, which will use the newly introduced data providers to fetch all information and calculate the metrics over time in a customizable range as before on-the-fly in the background. Once a plugin is executed, it can request the metrics over time by either using the REST-Api (for local execution) or fetch them from memory as before if being executed inside the API already. This will not only improve the performance, but this new method also allows for a less resource hungry execution and better storage of the collected metrics before.

How to install the Beta?

Now as we shared some information about the new features introduced with Icinga for Windows v1.13.0, we would love to see you all test this out on your test or staging environments. We have created a new repository at packages.icinga.com on the Icinga for Windows section which is called beta.

Once a new beta version is available, we will update this repository with new files and content, making updates and testing a lot easier! These packages are marked as stable and NOT snapshot which makes the testing even more convenient.

You simply have to add the beta repository to the Windows machine you would like to test, like this:

Add-IcingaRepository -Name 'Icinga Beta' -RemotePath 'https://packages.icinga.com/IcingaForWindows/beta/ifw.repo.json';

Once done, you can simply run

Update-Icinga -Confirm;

to install the latest versions of the Icinga for Windows beta on your device. Once a new beta release is available, you can run the command again to update to the next version.

For new installations of Icinga for Windows, you can simply use the path to the beta repository for both, kickstart and during IMC installation to install the latest version of the Framework and the Plugins.

What’s next?

We are looking forward to your feedback and will monitor the community post carefully with your feedback, to ensure we can provide a smooth experience for everyone. Thank you everyone in advance and have a great time!

You May Also Like…

Subscribe to our Newsletter

A monthly digest of the latest Icinga news, releases, articles and community topics.