就像自动发现 文件系统一样,也可以自动发现 CPU 和 CPU 核心。
在 自动发现规则 中使用的监控项的键是
这个自动发现监控键返回两个宏 - {#CPU.NUMBER}和 {#CPU.STATUS} ,分别表示CPU 编号和状态。注意,没有办法清楚地区分出来实际的物理处理器、核心与超线程。Linux、UNIX和BSD系统上的 {#CPU.STATUS} 返回处理器的状态,状态可以是 "在线" 或者 "离线"。在Windows操作系统上,同样的宏可能会返回第三个取值 - "未知" - 表示已检测到处理器,但还未收集到相关信息。
为了保持与收集器提供的数据一致,CPU自动发现功能依赖agent的收集器进程,通过此方式还能在获取数据方面节省资源,但是这会导致此监控项的键不支持二进制agent的测试(-t)命令行参数,并且会返回一个NOT_SUPPORTED状态,并附带信息,表明收集器进程未启动。
可基于CPU自动发现来创建监控项原型,比如:
system.cpu.util[{#CPU.NUMBER},<type>,<mode>]
system.hw.cpu[{#CPU.NUMBER},<info>]
关于监控项键的详细信息, 参考 Zabbix agent 监控项的键。
Some Windows performance counters might be not available for some of the logical processors at NUMA systems.
For example, items discovered with an item prototype with the key below might work only for the first NUMA node. Items for the other NUMA nodes might be in unsupported state.
perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,60]
Also, a discovery rule with key "system.cpu.discovery" does not provide any low-level discovery macro values to substitute into such performance counters as:
perf_counter["\Processor Information(<NUMA node index>,<CPU index in NUMA node>)\% Processor Time",60]
While system.cpu.util items rely on different performance counters to monitor CPU utilization percentage depending on the processor group count and processor count. Also, there is a rare bug related to processor groups on Windows.