3 CPU 和 CPU 核心的发现

文件系统 的发现方式类似,也可以发现 CPU 和 CPU 核心。

监控项键值

发现规则 中使用的监控项键值是

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" 仅在 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 performance counters

例如,使用带有如下键值的 监控项 原型发现的 监控项 可能仅适用于第一个NUMA节点。其他NUMA节点的 监控项 可能处于不支持状态。

perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]

此外,键值为 "system.cpu.discovery" 的发现规则不会提供任何低级别自动发现宏值,以替换如下性能计数器中的变量:

perf_counter["\Processor Information(<NUMA node index>,<CPU index in NUMA node>)\% Processor Time",60]

system.cpu.util 的 监控项 则依赖于不同的性能计数器,以根据处理器组数量和处理器数量监控CPU使用百分比。此外,还有一个与 windows上的处理器组-winprocgroups 相关的罕见错误。