关注+星标,干货第一时间送达

稍不留神,
国庆即将结束了
小编都还没休息够...
回头再看,中秋节都已经过去半个月了。
其实,每当假期前,都是运维小伙伴忙的时候,
因为,他们非常担心,假期间系统发生故障!
那时候大家都在休假,摇人很难。。。
那么,监控告警就显得十分重要了。
一旦出现问题,直接呼到对应系统负责人头上,
岂不美哉!
今天看个简单的案例,
如何监控系统CPU状态,
并且将可能出现的告警信息,
通过邮件发送至指定人手中。
一、解决方案
演示工具:Centos7.9 + MobaXterm
Linux系统中,有多种监控分析CPU状况的工具,
如 top、mpstat、vmstat 等。
任君挑选。
本次咱们选择使用 vmstat 来监控CPU。
如下图所示,

其中的参数分别是:
us:用户空间占用CPU的百分比。us值越高,说明用户进程消耗CPU时间比多,如果长期超过50%,则需要考虑优化程序算法或加速。
sy:内核空间占用CPU的百分比。sy值越高,说明系统内核消耗CPU资源多,需要检查原因。
id:CPU空闲的百分比。
wa:CPU等待IO的百分比。wa值越高,说明CPU等待IO时间较多,可能是大量的磁盘随机访问,或者磁盘出现瓶颈。
st:来自虚拟机偷取的CPU所占的百分比。
这次,咱们只关注 us、sy 两个数值。
看看代码:
#!/bin/bash
#1, 日期
DATE=$(date +%F" "%H:%M)
#2,ip
IP=ifconfig ens33 | awk 'NR==2 {print $2}'
#3,邮箱
MAIL=自己的邮箱@qq.com
#4, 判断当前环境是否安装了vmstat
if [ ! which vmstat &>/dev/null ];then
echo "vmstat not found..."
exit 1
fi
#5,获取监控数值
US=$(vmstat | awk 'NR==3 {print $13}')
SY=$(vmstat | awk 'NR==3 {print $14}')
STATE=$(($US+$SY))
#6, 发送邮件
# 这里为了显示告警效果,阈值设置成1
if [ $STATE -ge 1 ];then
echo "
Date: $DATE
HOST: $IP
Problem:
CPU alert us:$US sy:$SY
" | mail -s "CPU告警" $MAIL
fi
执行效果:

图片提示的信息不用管,
去看看QQ邮箱:

而系统实际的cpu状态是:

说明我们的这个监控脚本是有效的!
二、脚本解析
上面的脚本,用到了一些指令,
如果,直接看脚本代码,就能够理解了,
那么恭喜你们,后面的可以不用看了
如果,有小伙伴不了解的,可以看下这里。
(1)date +%F
这里是Linux里面的日期转换方法,
具体用法看下图:

再拼接时间:

(2)ifconfig ens33 | awk ...
ifconfig 是打印网卡信息,ens33 是当前小编机器的主网卡名字:

再通过 awk 过滤出里面的ip地址,
由上图可知,是在第二行,第二列,所以awk过滤:
awk 'NR==2 {print $2}'
NR是awk里面的关键词,指明行数,
还有其他的关键字,此处不再赘述。
(3)mail -s '' $MAIL
是直接发送邮件,
关于如何在Linux系统中发送邮件到邮箱,
可以翻看之前的文章:
OK,这就是本期的内容了,下期再见!




