Releasing Icinga for Windows v1.5.0

by | Jun 2, 2021

After weeks of rewriting the core aspect of Icinga for Windowsexecuting checks – we are happy to announce version 1.5.0 today. Why we changed the check handling? We are glad you asked and happy to share the new features!

 

Before you update

Please read the Icinga PowerShell Framework upgrading docs and Icinga PowerShell Plugins upgrading docs carefully, to experience a smooth update. We did some changes to plugins and arguments, which requires some updates inside the Icinga Director, before you apply new configuration baskets for example.

 

New and reworked Plugins

With Icinga for Windows v1.5.0 we added two new plugin to the base collection: Invoke-IcingaCheckHTTPStatus and Invoke-IcingaCheckMPIO

Invoke-IcingaCheckHTTPStatus

This plugin will allow you to check web services directly from your Windows machine and add thresholds for response time, status code and content checks. If the web service requires authentication or is only available through a proxy, simply configure the required plugin arguments and you are good to go!

Invoke-IcingaCheckHTTPStatus -Warning '100ms' -Critical '200ms' -Url 'https://icinga.com' -Timeout '5' -Content 'icinga' -Verbosity 3;

[WARNING] HTTP Status Check: 1 Warning [WARNING] HTTP Status Check https://icinga.com (All must be [OK])
\_ [WARNING] HTTP Status Check https://icinga.com (All must be [OK])
   \_ [OK] HTTP Content Check (Atleast 1 must be [OK])
      \_ [OK] HTTP Content "icinga": Found
   \_ [WARNING] HTTP Response Time: 142ms is greater than threshold 100ms
   \_ [OK] HTTP Status Code: 200
| 'https_icinga_com.http_status'=200;; 'https_icinga_com.http_content_icinga'=1;; 'https_icinga_com.http_content_size'=89238B;; 'https_icinga_com.http_response_time'=0.141611s;0.1;0.2

Invoke-IcingaCheckMPIO

With this plugin you can check your MPIO Path for disks in case this feature is installed and configured. It will allow you to check the number of MPIO Paths assigned to the disks and print alert in case they are below the defined threshold.

Invoke-IcingaCheckMPIO -Verbosity 2 -Warning '9:' -Critical '7:';

[CRITICAL] Check package "Multipath-IO Package" (Match All) - [CRITICAL] MPIO Disk0 Number Paths, MPIO Disk1 Number Paths
\_ [CRITICAL] Check package "ROOT\MPIO\0000_0 Package" (Match All)
   \_ [OK] ROOT\MPIO\0000_0 Active: True
   \_ [CRITICAL] Check package "ROOT\MPIO\0000_0 Drivers Package" (Match All)
      \_ [WARNING] MPIO Disk0 Number Paths: Value "8c" is lower than threshold "9c"
      \_ [CRITICAL] MPIO Disk1 Number Paths: Value "6c" is lower than threshold "7c"
   \_ [OK] ROOT\MPIO\0000_0 NumberDrives: 2c
| 'mpio_disk0_number_paths'=8c;9;7 'mpio_disk1_number_paths'=6c;9;7 'rootmpio0000_0_numberdrives'=2c;;

Other Plugin Updates

In addition, we updated Invoke-IcingaCheckNetworkInterface by removing some no longer required arguments, reworked Invoke-IcingaCheckMemory to include page files and redesigned Invoke-IcingaCheckUsedPartitionSpace to fix some minor issues and ensure drives are always properly displayed.
Last but not least we updated Invoke-IcingaCheckEventLog which increased the performance a lot, as we are now using another method to fetch event log entries. In addition to this, we added a new argument -MaxEntries, allowing to configure on how much eventlog entries are actually loaded. If you want to modify this value besides the configured default, you can use Show-IcingaEventLogAnalysis to get an idea on how many logs are generated in different time frames.

 

Increased Monitoring Flexibility

With the entire rewrite of the current check execution handling, we are able to add many additional features for developers and users using Icinga for Windows for monitoring. By doing so, developers will require less time to write new plugins, especially when it comes to %-Values, but also decreases the effort for normalizing your metrics or allow users the monitoring of threshold intervals natively.

 

Know Your Metrics

Imagine you are running a certain plugin and as result, the basic unit is simply Bytes. You would want that inside your Performance Data, the metric is displayed correctly, but in addition, you would assume that your plugin output will translate the plain Byte value properly, to give you an easier overview on how much space your disks are using for example. Icinga for Windows 1.5.0 does exactly this and will convert all Byte and Time units to easily readable output values with dynamic adjustment, to get the best match for the next unit available.

Invoke-IcingaCheckUsedPartitionSpace -Warning '1TB' -Critical '1.5TB' -Verbosity 3;

[CRITICAL] Used Partition Space: 1 Critical 1 Warning 1 Ok [CRITICAL] Partition G: (1.37TiB) [WARNING] Partition R: (1.13TiB) (All must be [OK])
\_ [OK] Partition C: 785.27GiB
\_ [CRITICAL] Partition G: 1.37TiB is greater than threshold 1.36TiB
\_ [WARNING] Partition R: 1.13TiB is greater than threshold 931.32GiB
| 'partition_c'=843179600000B;1000000000000;1500000000000;0;999527800000 'partition_g'=1501377000000B;1000000000000;1500000000000;0;2000381000000 'partition_r'=1245040000000B;1000000000000;1500000000000;0;4000768000000

With Icinga for Windows v1.5.0 we also improved the unit conversion and use GiB instead of GB for example, as this is the correct representation in case you want to compare your Windows disk overview with the plugin output for example. The same improvement now also applies to checks like Uptime:

Invoke-IcingaCheckUptime -Warning '5h:' -Critical '1h:' -Verbosity 3;

[OK] System Uptime: 18.32d (All must be [OK])
\_ [OK] Last Boot: 05/13/2021 10:17:50
\_ [OK] System Uptime: 18.32d
| 'system_uptime'=1583238s;18000:;3600:

Time values are, like Byte values, dynamically converted to the next best matching unit to easier identify the current values and outputs.

 

Use Dynamic %-Values

Most plugins will support out-of-the-box %-Values for used thresholds. For this, developers simply need to add the new -BaseValue argument to New-IcingaCheck. The base value is the value, which is compared to the current input value to calculate the %-Value from it. By doing so, simply adding % behind the argument will move the plugin from comparing Byte values for %-Values:

Invoke-IcingaCheckUsedPartitionSpace -Warning '70%' -Critical '80%' -Verbosity 3

[CRITICAL] Used Partition Space: 1 Critical 1 Warning 1 Ok [CRITICAL] Partition C: (84.36% (785.28GiB)) [WARNING] Partition G: (75.05% (1.37TiB)) (All must be [OK])
\_ [CRITICAL] Partition C: 84.36% (785.28GiB) is greater than threshold 80% (744.71GiB)
\_ [WARNING] Partition G: 75.05% (1.37TiB) is greater than threshold 70% (1.27TiB)
\_ [OK] Partition R: 31.12% (1.13TiB)
| 'partition_c'=843192100000B;699669460000;799622240000;0;999527800000 'partition_g'=1501377000000B;1400266700000;1600304800000;0;2000381000000 'partition_r'=1245098000000B;2800537600000;3200614400000;0;4000768000000

As you can see, by using %-Values arguments, the plugin now compares the partition size against this value instead of given Byte values. In addition, Performance Data is based on these threshold values and the plugin output not only prints the %-Value but also the corresponding partition size out-of-the-box, without having to do any effort for calculating values inside the plugin by yourself.

 

Check With Threshold-Intervals

Since Icinga for Windows v1.0.0, we support a background daemon which is running as Windows service, allowing to register Icinga for Windows daemons. These daemons will then run in the background and do defined tasks. One core daemon is the Start-IcingaServiceCheckDaemon, which can be used to register service checks, allowing to collect metrics over time, like CPU load in 1,3,5,15-minute intervals for example.

Prior to Icinga for Windows 1.5.0, these collected values were only useable with graphing solutions, like InfluxDB or Graphite. Our new version adds a generic argument -ThresholdInterval to every available plugin. You simply have to update your Icinga Director with the latest baskets or update your Icinga configuration files with the latest version. Afterwards, you can add one interval to this argument, which will tell the check plugin to not use the current value of the CPU for example, but the 15m value:

Invoke-IcingaCheckCPU -Core '_Total' -Warning 40% -Critical 70% -ThresholdInterval '15m' -Verbosity 3;

[OK] CPU Load (All must be [OK])
\_ [OK] Core Total: 29.148177% (15m avg.)
| 'core_total_1'=31.545677%;;;0;100 'core_total_15'=29.148177%;40;70;0;100 'core_total_5'=28.827410%;;;0;100 'core_total_20'=30.032942%;;;0;100 'core_total_3'=27.731669%;;;0;100 'core_total'=29.148177%;;;0;100

To give the user feedback if a Threshold Interval argument was used, behind the line of the value the interval is listed, in this case (15m avg.). In case you are wondering what happens if you specify an interval you did not collect metrics for, we thought of this as well:

Invoke-IcingaCheckCPU -Core '_Total' -Warning 40% -Critical 70% -ThresholdInterval '14m' -Verbosity 3;

[UNKNOWN] CPU Load [UNKNOWN] Core Total (27.41305%) (All must be [OK])
\_ [UNKNOWN] Core Total: The provided time interval "14m" which translates to "14m" in your "-ThresholdInterval" argument does not exist
| 'core_total_1'=31.545677%;;;0;100 'core_total_15'=29.148177%;;;0;100 'core_total_5'=28.827410%;;;0;100 'core_total_20'=30.032942%;;;0;100 'core_total_3'=27.731669%;;;0;100 'core_total'=27.41305%;40%;;0;100

Anything Else?

In addition to the mentioned topics above, we added minor tweaks and improvements to the Icinga PowerShell Plugins and the Icinga PowerShell Framework itself, including a bunch of small and important bugfixes. You can read every single change on the Framework Changelog and Plugins Changelog.

You can download all new releases for Icinga for Windows v1.5.0, Icinga PowerShell Plugins v1.5.0 and Icinga PowerShell MSSQL v1.2.0 directly from GitHub or by using PowerShell Gallery. Within the next days we will also update our Roadmap, giving an overview on what is going to happen next.

In addition, you can stay tuned, as we are going to release your Icinga Hyper-V and Icinga Cluster plugins next week!

We hope you enjoy this new release and would love to hear your feedback!

You May Also Like…

Icinga Module for JIRA v1.1.0

Icinga Module for JIRA v1.1.0

If your team is using Atlassians Jira and Icinga and you didn't know about our integration yet: Our module for Jira is...

Subscribe to our Newsletter

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