(Large) Windows environment - Which kind of check plugins do you use?

Hello all,

I am aware of several discussions about CPU load caused by Icinga PowerShell Plugins (Invoke-IcingaCheck…), but still I am wondering how everybody out ther is dealing with the current situation.

I know about three main options to check on Windows:

  1. Windows Plugins for Icinga 2 - these are deprecated
  2. NSClient++ - the latest stable release is 3 years ago
  3. Icinga PowerShell Plugins - currently have severe load impact on smaller machines

Looking closer at the load aspect, we did some measuring on a 1-core, 2 GB RAM Windows VM and found (in a steady state with default settings, checking load, memory, and disks):

  • no significant overhead with Windows plugins for Icinga 2
  • less than 1% additional CPU load with NSClient++ (nscp-local)
  • ca. 15% additional CPU load with Icinga PowerShell Plugins (v1.6.0 - earlier versions created significantly more load)

Having this, option 3. is a no-go for us especially on smaller webservers.
As 1. is deprecated and 2. is not maintained for a longer timeframe, how do you deal with this situation in your (large) Windows environment?

Did we miss something in our project? I am eager to read about your opinion & experience!

Thanks, Uli

I have the same dilemma, opting for the future would be the new Icinga for Windows and hoping they can reduce the overhead further, but at the moment it is depending on the check to much.

An idea I was thinking about, but did not find time to test, was to convert the Powershell to Exe as there are tools for this and it should reduce the overhead for loading the code.

That the Windows Plugins for Icinga 2 are declared as deprecated, doesn’t mean that they doesn’t work anymore. :wink: . We are still using it and everything is fine. If we need check which still doesn’t exist there but in the Icinga PowerShell Plugins we use it from here. That means, we are using a mix of them.

For the (near) future we are testing also the other check variants from the Icinga PowerShell Plugins. So if everything fits for uns, we could switch completly to the Icinga PowerShell Plugins.

Thank you Dirk for sharing your view. I am also confident that Icinga PowerShell Plugins is the way to go in future.
Concerning “convert PowerShell to exe”, I would prefer to have the icingapowershell service include the code for checking. I think the root cause for the performance issues is that (at least on my machines) a new powershell.exe process is started for every single check.
But I am not really deep into the PowerShell Framework/Plugins code and I don’t think that it makes sense trying “alternative ways to use the PowerShell framework” - the Icinga PowerShell developer team would have told us if it was easy, wouldn’t they? :upside_down_face:
What I am taking away is that at least the two of us do not know about a fourth, better option :neutral_face:

Many thanks Stevie. Yes, we are also going for a “use both”, but we chose NSClient++ as the interim solution because it delivers timeframe mean values for cpu load.
So we are already three of us, not aware of the fourth “golden option” :sweat_smile: