最新消息:

zabbix的cpu取值加起来不是100%

Linux ipcpu 4958浏览

引入

在openstack私有云平台部署了Zabbix后,发现承载云主机的物理机(CentOS7),zabbix监控图有些异常,如下,CPU利用率这张图默认情况应该是图像占满100%的,而这里却只有不到80%。

解决

一开始怀疑是Zabbix客户端装在Docker容器中导致取值不准确,所以更换了最新版客户端,直接安装在宿主机上,发现结果还是一样。

最后私有云厂商技术人员经过查资料发现,zabbix模板对于CPU取值有几项默认是没有加上的。

Zabbix对于获取CPU利用率的Item如下:

  1. system.cpu.util[<cpu>,<type>,<mode>]
  2. type - 可选项:
  3. idle, nice, user (default), system (default for Windows), iowait, interrupt, softirq, steal, guest (on Linux kernels 2.6.24 and above), guest_nice (on Linux kernels 2.6.33 and above)

其中guest 和guest_nice 都与虚拟化有关,并且zabbix模板里面默认没有。

一般业务用途的机器这两项基本为0,所以也没什么影响,但是虚拟化的宿主机guest 项占用非常高,就出现了一开始现象。

我们在Zabbix模板中添加CPU guest time选项,然后加到Graph中,发现数据就正常了。

为什么会出现这种情况?

一般我们做监控时,抓取的CPU利用率会跟top命令作对比,但是top命令里没有guest这个选项。

查询源码发现,top只读取了/proc/stat的8个数值,而zabbix读取了/proc/stat的10个数值。因此计算出的结果是有偏差的。

参考资料

https://support.zabbix.com/browse/ZBX-10710
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent

转载请注明:IPCPU-网络之路 » zabbix的cpu取值加起来不是100%