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" is only on Windows */
           },
           {
               "{#CPU.NUMBER}": 3,
               "{#CPU.STATUS}": "online"
           }
       ]

请注意,无法明确区分实际的物理处理器、核心和超线程。在Linux、UNIX和 BSD系统上,{#CPU.STATUS}返回处理器的状态,可以是 "在线"或"离线"。在Windows系统上,此宏可能表示 第三个值 - "未知" - 表示检测到处理器,但尚未收集其信息。

CPU发现依赖于agent的收集进程,以保持与收集器提供的数据一致,并节省获取数据的资源。 这导致此监控项键无法与测试(-t)命令行flag的agent二进制文件一起工作,它将 返回NOT_SUPPORTED状态和伴随的消息,指示 收集进程尚未启动。

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

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

对于详细的监控项键描述,请参阅Zabbix agent item keys

关于在NUMA系统上发现的性能计数器 监控项 的注释

在NUMA系统上,某些 Windows performance counters 可能对部分逻辑处理器不可用。

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

perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]
       ```此外,具有键 "system.cpu.discovery" 的发现规则不提供任何低级别发现宏值,以替换到以下性能计数器中:
       

perf_counter["Information(<NUMA node index>,<CPU index in NUMA node>)% Processor Time",60] ```虽然 system.cpu.util 监控项 依赖于不同的性能计数器 根据处理器组数量和处理器数量监控CPU利用率百分比。 此外,存在一个与 processor groups on Windows 相关的罕见错误。