以类似于发现file systems 的方式,也可以发现CPU和CPU核心。
在 发现规则 中使用的 监控项 键为
该发现键返回两个宏变量 - {#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系统中,某些逻辑处理器可能无法使用某些 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 相关的罕见错误。