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

同样是关键监控指标,
内存和CPU,
难分伯仲,
其实,也没必要分,
运维的时候都要看看。
上篇文章:
给诸位演示了如何监控Linux系统CPU状态信息,
并通过邮件方式,发送告警信息至负责人邮箱。
今天,来看下相同的操作,
换成内存,如何进行?
一、解决方案
演示工具:Centos7.9 + MobaXterm
Linux系统中,内存状况的展示,
可以用上篇介绍的指令:vmstat

也可以使用最常用的指令:free

其中参数:
-h:易于人类读取的格式
-m:单位是MB
然后直接看代码:
#!/bin/bash
#1, 时间
DATE=$(date +%F" "%H:%M)
#2, 过滤出ip
IP=$(ifconfig ens33 | awk '/netmask/{print $2}')
#3,邮箱
MAIL=自己的邮箱@qq.com
#4,获取内存指标数值
#总内存大小
TOTAL=$(free -m | awk '/Mem/{print $2}')
#已经使用内存大小
USED=$(free -m | awk '/Mem/{print $3}')
#剩余内存大小
FREE=$(free -m | awk '/Mem/{print $4}')
#5, 发送邮件
#当剩余内存大小小于1G,则进行告警
if [ $FREE -lt 1024 ];then
echo "
Date: $DATE
HOST: $IP
Describe:
内存告警, 总量$TOTAL MB, 已使用$USED MB, 剩余$FREE MB
" | mail -s "内存告警" $MAIL
fi
执行结果:

告警信息可以不用管,
查看邮箱:

告警信息邮件发送成功!
二、脚本解析
脚本代码里面,
有些指令,可能有小伙伴不熟悉,
下面给诸位解释一下,
会的同学可以跳过。
(1)ifconfig ens33 | awk ...
源代码是:
IP=$(ifconfig ens33 | awk '/netmask/{print $2}')
ifconfig 是查看网卡信息的指令,
ens33 是小编的主网卡名:

下面,要过滤出ip地址,也就是需要拿出:
192.168.10.100
用 awk 里面的正则匹配,或者行数匹配都行。
正则匹配:
ifconfig ens33 | awk '/netmask/{print $2}'
过滤出包含 netmask 的行,然后再打印第2列数据。
行数匹配:
ifconfig ens33 | awk 'NR==2{print $2}'
NR 是awk 的内置变量,表示行号。
打印第2行,第2列的数据。
都明白了吧?
OK,这就是本期的内容了,下期再见!
文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




