Today we are happy to announce that we are releasing Icinga for Windows v1.9.0. This release cycle is the biggest one yet, because we are releasing new versions for everything! This includes
New Isolation Method
Previously, all modules of Icinga for Windows were designed to export all available functions to the PowerShell. In addition, each module shipped with a bunch of own module files, which required to be loaded during runtime. While the REST-Api feature mitigated this, environments without had to load multiple files during plugin execution. In addition, this also caused systems with virus scanners to slow down the performance even more.
Last but not least, the design of the modules caused every function being available within the PowerShell. This caused developers to have to take care about the naming of functions, because a function name used by another module could easily become overwritten, which results in invalid data or entirely different tasks executed.
The new isolation method is a new way on how the modules for Icinga for Windows are designed. You can now decide, either by the Path on where you place code files of your modules or by using Global: to make functions globally available. A module file inside a folder called public will automatically made global available, including functions beginning with the plugin namespace Invoke-IcingaCheck. Furthermore, each module will now create a cache file, similar to the Icinga PowerShell Framework cache. This reduces load time and ensures, that each module is using own defined functions prior to globally available ones.
To ensure this feature is globally available, we created a new release for all Icinga managed Icinga for Windows plugins to follow the new guidelines.
New Hyper-V Plugin
While we required to update the Hyper-V plugins to use the new isolation feature, we fixed a bunch of issues regarding calculations, duplicate virtual machine naming errors and many more. We also added a new plugin, to allow to check against the Virtual Machine Manager (VMM), to ensure the environment is in general healthy.
Invoke-IcingaCheckHyperVVMM -Hostname 'clusterfqdn' -verbosity 2 -VmmState 'OK'; [CRITICAL] VMM Overview: 2 Critical 2 Ok [CRITICAL] HOSTNAME0001, HOSTNAME0004 \_ [CRITICAL] HOSTNAME0001: status is NeedsAttention \_ [OK] HOSTNAME0002: status is OK \_ [OK] HOSTNAME0003: status is OK \_ [CRITICAL] HOSTNAME0004: status is NeedsAttention
Updated Cluster Plugin
As for the Hyper-V Plugins, we added the isolation mode to the Cluster plugins and extended the Cluster Shared Volume Plugin to now include the partition style of disks. This check will fail, in case the partition style of a disk is RAW instead of GPT or other valid styles.
Minor Framework Improvements
For the Framework itself, we added a lot of improvements related to performance as well as general usability. A special thanks to haxtibal on GitHub, for providing a PR to reduce the general CPU load while threads are idling.
The new improvements are designed to reduce the CPU load while threads are waiting for tasks to execute and to ensure that not every single action is causing the garbage collector to force a full flush. We added a new version to ensure only after certain amount of actions executed the full GC is done.
Another big improvement is the internal thread stability. While it could happen, that a plugin never finished and caused an entire thread to freeze, we now include a housekeeping for such threads. In case plugins are executed and never finish, the thread will terminate itself and restart again to ensure a healthy environment.
Last but not least we fixed several issues regarding missing questions during the IMC installer, sometimes wrong certificate detection from the Icinga Agent and many more. You can have a full overview of all changes inside the changelog.
We hope you enjoy this release and stay tuned for the next version, with many more improvements!