监控窃取时间的工具 (st)

监控窃取时间的工具 (st)

我们在虚拟的“专用”服务器上运行,从理论上讲,这意味着我们是服务器上唯一的人。实际上……我想我们可能不会。

在此输入图像描述

请注意,虽然看起来我们正在杀死我们的机器,但“窃取时间”为 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::extOutputexec命令自行扩展它。

(我发现)获得窃取时间的最简单方法是从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

其中nsExtendOutput1Lineoid 为 .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

相关内容