Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Powershell Framework Failing to Query \Processor Information(*)\% Processor Utility Counter #767

Open
WilHatesComputers opened this issue Dec 17, 2024 · 1 comment

Comments

@WilHatesComputers
Copy link

I've outlined the problem thoroughly here . I fear the verbosity of my testing and details may be why the post got no attention so I'll be as brief as I can.

Environment (this is a little mixed across hosts):

agent 2.14.0 2.14.3
framework 1.11.0 1.12.3
plugins 1.11.0 1.12.0
service 1.2.0 1.2.0

When using invoke-icingaCheckCPU on numerous computers, we're intermittently seeing this error:

Plugin Output
[UNKNOWN]: Icinga Invalid Input Error was thrown: PerformanceCounter: \Processor Information(*)\% Processor Utility
A plugin failed to fetch Performance Counter information. Please ensure the counter is written properly and available on your system.

This is the result 95% of the time with an occasional valid result. When using anything from within Icinga to query this counter, it fails (invoke-icingacheckcpu, invoke-icingacheckperfcounter, etc.). I think I have tracked the cause down to when Icinga builds the list of counters available on the system (Line 95 of New-IcingaPerformanceCounter.psm1). For whatever reason "Processor Information" isn't present in [System.Diagnostics.PerformanceCounterCategory]:

PS C:\WINDOWS\system32> [Diagnostics.PerformanceCounterCategory]('Processor Information') | fl
CategoryName : Processor Information
CategoryHelp :
CategoryType :
MachineName  : .
PS C:\WINDOWS\system32> [Diagnostics.PerformanceCounterCategory]('Processor') | fl
CategoryName : Processor
CategoryHelp : The Processor performance object consists of counters that measure aspects of processor activity. The processor is the part of the computer that performs arithmetic and logical computations, initiates operations on peripherals, and runs the threads of processes.  A computer can have multiple processors. The processor object represents each processor as an instance of the object.
CategoryType : MultiInstance
MachineName  : .

Considering this, the counter can be queried with WMIC and get-counter without fail. I just can't use any Icinga cmdlets to work.

I have a very loose understanding of things this far under the hood. My investigation has led me to the conclusion this is some sort of .NET API object and Powershell just has direct access to it. I can't think of what could be happening to this counter that seems to be removing it from PerformanceCounterCategory. I'd think there would be considerable traction behind an issue like this if it affected everyone.

I opened this issue here instead of on the plugins project as it looks like the Framework is responsible for this output, not the plugin.

Even if this isn't an Icinga issue, if you can point me in the right direction, I'd really appreciate it. Many of the affected hosts are having this issue out of box (Almost, we install ScreenConnect, NinjaRMM, the Icinga Agent, NSCP, and a couple other productivity apps).

@WilHatesComputers
Copy link
Author

I may be reaching but this issue report on the plugins project seems similar to mine, and even references the same "_Total" counter instance which is what Invoke-IcingaCheckCPU queries.

However, this user is looking to ignore the missing counter's UNKNOWN status using the -IgnoreEmptyChecks option.

I wanted to also add that I have tried rebuilding counters with lodctr, ran updates, rebooted, and reinstalled the agent, framework, and plugins. The only one of these that makes an impact is rebooting which only seems to resolve the issue for what I believe to be a single query.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant