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。