暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell 脚本案例【9】内存邮件告警

皮皮克克 2024-10-08
218

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


同样是关键监控指标

内存和CPU,

难分伯仲,

其实,也没必要分,

运维的时候都要看看。

上篇文章:

Shell 脚本案例【8】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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论