SNMP – CPU处理器负载的价值不反映现实

尝试使用以下硬件绘制服务器上的CPU负载:ProLiant DL360p Gen8(在ProLiant DL360 G7上的行为相同)。

该机器正在运行VMWare ESXi5.1

要创build一个CPU峰值,我运行dd if=/dev/zero of=/dev/null ,而且我知道CPU过载了,因为在vCenter上显示的graphics中可以看到相关的尖峰。

在这里输入图像说明

但是,运行这个snmpwalk:

 snmpwalk -v 1 -c ******** 192.168.MY_IP 1.3.6.1.2.1.25.3.3.1.2 

显示以下结果:

 iso.3.6.1.2.1.25.3.3.1.2.1 = INTEGER: 3 iso.3.6.1.2.1.25.3.3.1.2.2 = INTEGER: 2 iso.3.6.1.2.1.25.3.3.1.2.3 = INTEGER: 2 iso.3.6.1.2.1.25.3.3.1.2.4 = INTEGER: 3 

我没有看到正确的MIB? 我应该乘以一个常数?

顺便说一句,使用惠普无代理监控,我能够得到一些CPU统计,但不是我在找什么,至less没有什么我可以find涉水通过这些MIB 。

请尝试使用压力工具在Linux中生成负载。 它非常细化,比你所做的更有意义。

我所看到的是在4-CPU虚拟机上生成一个单线程I / O负载。 从vSphere客户端粘贴的CPU图表显示25%的负载,因为您只是分配给虚拟机的四个 CPU之一。

下载压力 (这对大多数Linux发行版是可用的),并尝试使用一些特定的参数。

例如,只需在一个4-CPU虚拟机上运行以下命令:

 # stress -c 4 stress: info: [594013] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd 

收益率…

在这里输入图像说明

Vmware不会收集这些信息,而且这样做真的没有好的方法。 问题在于它无法知道你什么时候会问 – 所以为了使这项工作,它必须有一个平均准备在过去六十秒。 既然你现在可能会问,然后再问一次,那么在四十秒之前,这两个时间间隔必须正确地计算CPU时间。 这是一个非常难看,复杂的事情。

由于SNMP代理将不得不不断地探测CPU使用情况并更新所有同时运行的间隔,因此支持此操作将会增加成本。