banshee/windows-collection/windows/snmp/
cpu
The load of each processor of a Windows and their average, by SNMP
by banshee1 installation2 versions
Processors of a Windows, by SNMP
Returns the load of each logical processor of a Windows, the average load of all of them, and how many there are. Four watches are proposed, each one set on the probe.
How it works
The collector walks hrProcessorLoad (1.3.6.1.2.1.25.3.3.1.2, the table hrProcessorTable of HOST-RESOURCES-MIB): one row per logical processor, the load in percent, which the agent itself averages over the last minute.
- Each row is one processor, named
cpu0,cpu1… in the order the agent serves them: the index of the table means nothing to a reader. - The average load is the mean of the processors' loads, rounded to a tenth.
- The number of processors is the number of rows.
- Nothing is skipped at the first run: the agent already serves a load, not a counter.
- An agent that serves no row at all stops the collector as misconfigured ("The agent does not serve the processor table"): never a green light without a measure.
- By default, every processor is watched; the selection is changed on the probe.
Nothing is written to the Windows: SNMP reads only.
Prerequisites
- The SNMP service of Windows, installed and started: - on Windows Server, the feature "SNMP Service" (Server Manager, Add Roles and Features; or
Install-WindowsFeature SNMP-Servicein PowerShell); - on Windows 10 and 11, the optional feature "Simple Network Management Protocol (SNMP)" (Settings, Optional features; orAdd-WindowsCapability -Online -Name SNMP.Client~~~~0.0.1.0in PowerShell). - In the properties of the service "SNMP Service", tab Security: - a community with the right READ ONLY, which banshee reads in
protocol:snmp:v2c:community; - under "Accept SNMP packets from these hosts", the address of the poller. - SNMPv3: the SNMP agent of Windows does not offer it;
protocol:snmp:versionstaysv2c. The community then travels in clear text: keep it read-only and accepted from the poller alone. - The Windows firewall open to the poller on UDP 161 (the rule "SNMP Service (UDP In)").
Outputs
| Name | Label | Unit | Per instance |
|---|---|---|---|
cpu-busy | Average load | % | no |
core-busy | Processor load | % | yes, per processor (cpu0, cpu1…) |
cores | Number of processors | — | no |
Watches
| Name | Title | Kind | Defaults | Checked by default |
|---|---|---|---|---|
cpu-high | Saturation | above a threshold, on cpu-busy | warning above 85 %, critical above 95 %, for 3 runs | yes |
core-hot | A processor saturated | above a threshold, on core-busy | warning above 95 %, for 3 runs; no critical | no |
core-neglected | A processor left idle | deviates from the others, on core-busy | warning when a processor is more than 30 % below the median of the others; no critical | no |
core-count | Unexpected number of processors | expected value, on cores | no expected value: it raises nothing until one is set on the probe | yes |
"A processor left idle" judges nothing on a run that keeps fewer than three processors: with two, there is no "others" to speak of.
Limits
- The load is the one the agent computes over the last minute: a burst of a few seconds is smoothed out.
- The processors are the logical ones: on a processor with two threads per core, each thread is one row.
- The SNMP agent of Windows serves neither the time spent waiting for the disks, nor the time taken by the hypervisor, nor a load average, nor the load of a GPU: none of them can be returned here.
- The names
cpu0,cpu1… follow the order of the agent, not the numbering of Windows.