3 CPU 与 CPU 核心的发现

以类似于发现file systems 的方式,也可以发现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"
           }
       ]

需要注意的是,clear无法区分实际的物理处理器、核心和超线程。在Linux、UNIX和BSD系统上,{#CPU.STATUS}返回处理器的状态,可能为"online"或"offline"。在Windows系统上,该宏变量可能还会表示第三种状态 - "unknown" - 表示已检测到处理器但尚未收集其信息。

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

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

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

有关监控项键的详细描述,请参阅支持的-监控项-键

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 相关的罕见错误。