CPU和CPU核心的自动发现与 文件系统 的自动发现工作方式相似。
在 自动发现规则 中使用的监控项的键是
从Zabbix agent 2.4起支持此监控项。
这个键使用两个宏 - {#CPU.NUMBER} 用于识别CPU序号, {#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.