Update from 2.0.0P22 to 2.1 | Missing monitoring data for plugins: wmi_cpuload

We have the same problem in our environment with checkmk 2.1 and different older Agent versions (1.2/1.4/1.6).
The error stops when the agents are updated to 2.1, the problems started right after the 2.1 upgrade.

Could I get an output from your agent?

Is it possible to obtain Windows agent output?

Hey Sergej,

in fact, it’s a bug in the Agent, just CMK handles it different in 2.1 it seems.
Always when it’s happens, the Section is missing all the Information, when you check then again, the information is back.

This is how the Section looks, when the failure appears:

<<<wmi_cpuload:sep(44)>>>
[system_perf]
WMItimeout
[computer_system]
WMItimeout

So, there are Timeouts…

Today i had some systems with this problem and only the section [system_perf] was empty. Computer system was working as expected.
In search for a solution i also had a look at the check - wmi_cpuload.py and found some strang things.
Why is there no real error handling inside the parsing function? It returns empty output but the section is not empty.

For all who want a small workaround.
It only give the error if the computer_system table is empty.

Original

    try:
        load = wmi_tables["system_perf"].get(0, "ProcessorQueueLength")
        timestamp = get_wmi_time(wmi_tables["system_perf"], 0)
        computer_system = wmi_tables["computer_system"]
    except (KeyError, WMIQueryTimeoutError):
        return None
    assert load

changed version

    try:
        load = wmi_tables["system_perf"].get(0, "ProcessorQueueLength")
    except (KeyError, WMIQueryTimeoutError):
        load = 0.0

    try:
        timestamp = get_wmi_time(wmi_tables["system_perf"], 0)
    except (KeyError, WMIQueryTimeoutError):
        timestamp = 0.0

    try:
        computer_system = wmi_tables["computer_system"]
    except (KeyError, WMIQueryTimeoutError):
        return None
1 Like

Hi
I still have the same issues.
Is a official fix planned or is updating the agent the only way to fix this? @SergejKipnis

Thanks in advance!

Norm

Hi

Latest versions of Windows Agent use Perf API instead of WMI to get cpu_perf data as more stable.
WMI is not stable enough when we are trying to use to monitor CPU(system_perf)

Above-mentioned workaround is good and applicable too.

Sergey Kipnis

To validate that you are using stable perf API

run
"C:\Program Files (x86)\checkmk\service\check_mk_agent.exe" section wmi_cpuload
You should get relatively short and clean output:

<<<wmi_cpuload:sep(124)>>>                                                                                               
[system_perf]                                                                                                            
Name|ProcessorQueueLength|Timestamp_PerfTime|Frequency_PerfTime|WMIStatus                                                
|0|961086594870|10000000|OK                                                                                              
[computer_system]                                                                                                        
Name|NumberOfLogicalProcessors|NumberOfProcessors|WMIStatus                                                              
MY_PC_NAME|12|1|OK

In this case, you should not have problems with CPU-load monitoring. Still do not hesitate to infrom checkmk if problem persists.

Sincerely
SK