Linux实用监控脚本——使用 Shell 检测进程 CPU 利用率

系统 Linux
CPU 过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程 CPU 进行时时监控,可以在 CPU 利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断。

在对应用服务进行维护时,我们经常遇到由于 CPU 过高导致业务阻塞,造成业务中断的情况。CPU 过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程 CPU 进行时时监控,可以在 CPU 利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断。

[[275052]]

下面的函数可获得指定进程 ID 的进程 CPU 利用率。它有一个参数为进程 ID,它首先使用 ps 查找进程信息,同时通过「grep -v」过滤掉「%CPU」行,最后通过 awk 查找 CPU 利用百分比的整数部分(如果系统中有多个 CPU,CPU 利用率可以超过 100%)。

对业务进程 CPU 进行实时监控

  1. function GetCpu  
  2.  {  
  3.  CpuValue=`ps -p $1 -o pcpu |grep -v CPU | awk '{print $1}' | awk - F. '{print $1}'`  
  4.  echo $CpuValue  
  5.  } 

下面的功能是通过上面的函数 GetCpu 获得此进程的 CPU 利用率,然后通过条件语句判断 CPU 利用率是否超过限制,如果超过 80%(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

判断 CPU 利用率是否超过限制

  1. function CheckCpu  
  2.  {  
  3.  PID=$1  
  4.  cpu=`GetCpu $PID`  
  5.  if [ $cpu -gt 80 ]  
  6.  then  
  7.  {  
  8.  echo “The usage of cpu is larger than 80%” 
  9.  }  
  10.  else  
  11.  {  
  12.  echo “The usage of cpu is normal” 
  13.  }  
  14.  fi  
  15.  } 

示例演示:

(1) 源程序(假设上面已经查询出 TestApp 的进程 ID 为 11426)

  1. CheckCpu 11426 

(2) 结果输出

  1. The usage of cpu is 75  
  2. The usage of cpu is normal  
  3. [dyu@xilinuxbldsrv shell]$ 

(3) 结果分析

从上面的输出可见:TestApp 程序当前的 CPU 使用为 75%,是正常的,没有超过 80% 的告警限制。

作为 IT 运维工程师,对单个进程CPU利用率设置监控告警可以在一定程度上降低系统异常,保障业务稳定的运行。试想,如果拥有一个能够监控全局,实现业务告警风险提醒的运维协作工具呢?定能极大提升工作效率,加强团队运维保障能力! 

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2017-08-25 15:56:54

Linuxproc文件系统CPU利用率

2019-08-23 06:22:47

LinuxShell监控脚本

2010-03-11 16:49:55

Linux CPU利用

2013-01-04 10:44:31

IBMdW

2019-03-05 15:53:40

Linux服务器CPU

2011-04-02 11:16:16

MRTG监控带宽

2023-04-04 09:22:50

LinuxCPU命令

2017-05-03 11:10:14

Linux进程监控cpustat

2014-04-09 16:52:24

NetHogs网络带宽开源监控

2012-10-11 10:21:33

数据中心CPU利用率服务器效率

2011-03-17 15:16:38

2020-09-23 06:00:04

ShellLinux邮件监控

2020-08-03 14:17:34

CPU内存系统运维

2009-12-15 15:12:05

Linux限制进程cp

2019-05-20 16:21:51

LinuxShell监控磁盘

2010-03-15 15:01:37

2019-01-23 10:21:32

吞吐量响应时间CPU

2019-08-01 09:35:09

LinuxBashmessages

2013-03-19 12:23:25

SDN网络利用率网络系统架构

2011-03-17 13:54:42

查询参数SQL语句利用率
点赞
收藏

51CTO技术栈公众号