.png)
我们在虚拟的“专用”服务器上运行,从理论上讲,这意味着我们是服务器上唯一的人。实际上……我想我们可能不会。
请注意,虽然看起来我们正在杀死我们的机器,但“窃取时间”为 71%
我正在对负载进行统计,但令我失望的是该统计数据没有显示在我的图表中。是否有任何工具可以监控这一点,这可能会有所帮助?
附加信息:
我们正在运行 4 核,型号:
# grep "model name" /proc/cpuinfo | sort -u
model name : Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz
答案1
您的问题定义明确,但您没有提供有关您的环境、您当前如何监控或您正在使用哪些图形工具的大量信息。然而,鉴于 SNMP 的使用非常普遍,我假设您正在使用它并且至少对它有一定的熟悉。
尽管(据我所知)CPU Steal time 目前无法从 snmpd 中获得,但您可以使用对象UCD-SNMP-MIB::extOutput
和exec
命令自行扩展它。
(我发现)获得窃取时间的最简单方法是从iostat
.使用以下构造我们可以得到只是偷窃时间:
$ iostat -c | awk 'NR==4 {print $5}'
0.00
因此,将以下内容附加到您的 snmpd.conf:
exec cpu_steal_time /usr/bin/iostat -c | /usr/bin/awk 'NR==4 {print $5}'
(或者,您可以将命令放入包装器脚本中并从内部调用包装器snmpd.conf
。)
每个exec
调用的索引snmpd.conf
从 1 开始。因此,如果您只有一个 exec 语句,那么您需要 poll UCD-SNMP-MIB::extOutput.1
。如果这是第五条 exec 语句,则 pollUCD-SNMP-MIB::extOutput.5
等。
的数字 OIDUCD-SNMP-MIB::extOutput
是.1.3.6.1.4.1.2021.8.1.101
,如果您位于索引 1,则为.1.3.6.1.4.1.2021.8.1.101.1
,索引 5 为.1.3.6.1.4.1.2021.8.1.101.5
,等等。
然后,您创建一个图形,轮询类型为 gauge 的 SNMPD OID,范围为 0–100。这应该会给你一些漂亮的图表。
答案2
sar -u
可能对你的情况有帮助。 sar 通常是系统状态-包裹。
答案3
获得最多支持的答案很棒,但目前它还没有完全发挥作用:网络SNMP通话中丢失管道exec
,所以应该是这样的
extend-sh cpu_steal_time /usr/bin/iostat -c 1 1 | /usr/bin/awk '!/%user|Linux|^$/ {print $5}'
结果将在下面可见nsExtendOutput1Table
:
# snmpwalk localhost NET-SNMP-EXTEND-MIB::nsExtendOutput1Table
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu_steal_time" = STRING: 0.60
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu_steal_time" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu_steal_time" = INTEGER: 0
其中nsExtendOutput1Line
oid 为 .1.3.6.1.4.1.8072.1.3.2.3.1.1:
snmpwalk localhost .1.3.6.1.4.1.8072.1.3.2.3.1.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu_steal_time" = STRING: 0.60