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 的 collector 进程,以便与 collector 提供的数据保持 一致,并节省获取数据时的资源。因此,该监控项键无法通过 agent 二进制文件的 test (-t) 命令行标志使用;此时将返回 NOT_SUPPORTED 状态,并附带一条消息, 指出 collector 进程尚未启动。

基于 CPU 发现可创建的监控项原型例如包括:

  • system.cpu.util[{#CPU.NUMBER},<type>,<mode>]
  • system.hw.cpu[{#CPU.NUMBER},<info>]

有关监控项键的详细说明,请参见 Zabbix agent item keys

关于 NUMA 系统上已发现性能计数器监控项的说明

某些 Windows 性能计数器 在 NUMA 系统上的某些逻辑处理器中可能不可用。

例如,使用以下键值的监控项原型发现的监控项,可能仅适用于第一个 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 上的处理器组 相关的罕见 bug。