告警知识库:CPU使用率
2023-02-04 10:29:13
报警描述
业务[XX业务],虚拟机[X.X.X.X],位于[位置]CPU使用率报警,使用率为95%。
说明
如果CPU使用率达到100%,则所有与CPU有关的计算操作都会产生阻塞现象,系统卡顿。
当CPU使用率较高时,应当进一步分析操作系统的进程信息,定位哪些进程占用了CPU资源。对于非关键进程,可采取终止相关进程的操作以释放资源;对于关键进程,一方面要对进程的运行效能进行优化(修改配置参数、优化程序代码),另一方面也可以向该服务器追加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 0cpu0 95163 762 58533 31818184 273 28239 2822 0 0 0cpu1 56060 1575 63527 31872003 354 33676 2686 0 0 0cpu2 80310 1909 78641 31816154 328 41024 8639 0 0 0cpu3 52872 877 64766 31860140 579 34270 3286 0 0 0intr 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 0ctxt 1059578036btime 1637232875processes 278082procs_running 1procs_blocked 0softirq 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 %idle02:13:48 PM all 0.25 0.00 0.50 0.00 0.00 99.2502:13:49 PM all 0.00 0.00 0.00 0.00 0.00 100.0002:13:50 PM all 0.00 0.00 0.50 0.00 0.00 99.5002:13:51 PM all 0.00 0.00 0.00 0.00 0.00 100.0002:13:52 PM all 0.00 0.00 0.75 0.00 0.00 99.25Average: all 0.05 0.00 0.35 0.00 0.00 99.60
规则
默认规则为:
[0<=使用率<90] 正常 [90<=使用率<95] 提醒 [95<=] 报警
可通过报警策略进行配置。