CPU 和 CPU 核心的发现
与 文件系统 的发现方式类似,也可以发现 CPU 和 CPU 核心。
监控项键
要配置发现规则,请使用 Zabbix agent 监控项键system.cpu.discovery。
支持的宏
此发现键返回两个宏 - {#CPU.NUMBER} 和 {#CPU.STATUS},分别用于标识 CPU 序号和状态。
它会将处理器从 0 枚举到 N - 1,其中 N 为处理器总数。
[
{
"{#CPU.NUMBER}": 0,
"{#CPU.STATUS}": "online"
},
{
"{#CPU.NUMBER}": 1,
"{#CPU.STATUS}": "offline"
},
{
"{#CPU.NUMBER}": 2,
"{#CPU.STATUS}": "unknown" /* "unknown" is only on Windows */
},
{
"{#CPU.NUMBER}": 3,
"{#CPU.STATUS}": "online"
}
]
请注意,无法明确区分实际的物理处理器、核心和超线程。Linux、UNIX 和 BSD 系统上的 {#CPU.STATUS} 会返回处理器状态,可能为 "online" 或 "offline"。
在 Windows 系统上,这个相同的宏还可能表示第三个值 - "unknown" -,表示已检测到处理器,但尚未收集到其信息。
CPU 发现依赖于 agent 的收集器进程,以保持与收集器提供的数据一致,并节省获取数据所需的资源。
这会导致该监控项键无法与 agent 二进制文件的测试 -t 命令行标志一起使用;该命令会返回 NOT_SUPPORTED 状态,并附带一条消息,说明收集器进程尚未启动。
可基于 CPU 发现创建的监控项原型示例包括:
system.cpu.util[{#CPU.NUMBER},<type>,<mode>]system.hw.cpu[{#CPU.NUMBER},<info>]
有关监控项键的详细说明,请参见 Zabbix agent 监控项键。
NUMA 系统上已发现的性能计数器监控项说明
在 NUMA 系统上,某些 Windows 性能计数器 可能对部分逻辑处理器不可用。
例如,使用下面这个 key 的监控项原型发现的监控项,可能只对第一个 NUMA 节点有效。其他 NUMA 节点对应的监控项可能处于不受支持状态。
perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]
另外,key 为 "system.cpu.discovery" 的发现规则不会提供任何低级别发现宏值,因此无法将其替换到如下这类性能计数器中:
perf_counter["\Processor Information(<NUMA node index>,<CPU index in NUMA node>)\% Processor Time",60]
而 system.cpu.util 监控项则依赖不同的性能计数器来监控 CPU 利用率百分比,具体取决于处理器组数量和处理器数量。
此外,还存在一个与 Windows 上的处理器组 相关的罕见 bug。