CPU使用率

报警描述

业务[XX业务],虚拟机[X.X.X.X],位于[位置]CPU使用率报警,使用率为95%。

说明

如果CPU使用率达到100%,则所有与CPU有关的计算操作都会产生阻塞现象,系统卡顿。

监控对象

Windows操作系统、Linux操作系统、Unix操作系统

监控方式

Windows

对于Windows操作系统,通过监控代理读取。读取命令为:

sysmonitor.exe -counter cpu

注意:该命令执行后,采集的是最近5秒钟CPU平均使用率。
实现机制:通过调取kernel32.dll的GetSystemTimes函数实现。

GetSystemTimes函数
BOOL WINAPI GetSystemTimes(
__out_opt LPFILETIME lpIdleTime, // 空闲时间
__out_opt LPFILETIME lpKernelTime, // 内核进程占用时间
__out_opt LPFILETIME lpUserTime // 用户进程占用时间
);
GetSystemTimes获得系统(自开机以来)处于Kernel状态下面的CPU时间,以及系统处于User状态下的时间,以及Idle的时间.
返回值
如果函数成功,返回值为true。
如果函数失败,返回值为false。
调用GetLastError函数可获得更多的错误信息。

Linux

对于Linux操作系统,通过监控代理读取。读取命令为:

./sysmonitor.bin -counter cpu

注意:该命令执行后,采集的是最近5秒钟CPU平均使用率。
实现机制:通过读取/proc/stat文件内容实现。

proc/stat输出示例如下:

cpu  284406 5124 265469 127366482 1535 137210 17435 0 0 0
cpu0 95163 762 58533 31818184 273 28239 2822 0 0 0
cpu1 56060 1575 63527 31872003 354 33676 2686 0 0 0
cpu2 80310 1909 78641 31816154 328 41024 8639 0 0 0
cpu3 52872 877 64766 31860140 579 34270 3286 0 0 0
intr 549507255 0 9 0 0 414 0 0 0 0 0 0 31 15 0 0 0 0 0 0 0 0 0 0 0 0 16 0 241447 230309 284184 238755 0 104037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 1059578036
btime 1637232875
processes 278082
procs_running 1
procs_blocked 0
softirq 71843425 0 17031560 3 1055041 103904 0 2167 27299326 3 26351421

UNIX

对于Unix操作系统:
AIX通过定时任务执行脚本读取。读取命令为:

sar -u 1 5

sar命令是sysstat工具包中的一个命令行工具,用于打印CPU、内存等资源信息。该工具支持Linux、Unix操作系统。由于大多数已知AIX上均安装了sysstat包,因此这里采用sar命令读取CPU使用率。

“sar -u 1 5”这条命令的含义就是,每隔1秒钟打印一次CPU资源信息,打印5次。其输出示例如下:

Linux 4.18.0-240.22.1.el8_3.x86_64 (zgyw)       11/22/2021      _x86_64_        (4 CPU)

02:13:47 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:13:48 PM     all      0.25      0.00      0.50      0.00      0.00     99.25
02:13:49 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:13:50 PM     all      0.00      0.00      0.50      0.00      0.00     99.50
02:13:51 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:13:52 PM     all      0.00      0.00      0.75      0.00      0.00     99.25
Average:        all      0.05      0.00      0.35      0.00      0.00     99.60

规则

默认规则为:

[0<=使用率<90] 正常
[90<=使用率<95] 提醒
[95<=] 报警

可通过报警策略进行配置。