shell
应用示例
示例要求:
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。 (2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。 (3)使用free命令提取出内存使用率,赋值给变量MUG。 (4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。 (5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。
[root@localhost ~]# vim 1.sh
#!/bin/bash
提取性能监控指标(磁盘占用、CPU使用、内存使用)
DUG=(df −hT∣grep "/" | awk '{print $6}' | awk -F% '{print 1}') CUG=(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print 1}')) MUG=(expr $(free | grep "Mem:" | awk ‘{print $3}’) * 100 / $(free | grep "Mem:" | awk '{print $2}'))
设置告警日志文件、告警邮箱
ALOG=“/tmp/alert.txt”
AMAIL=“root”
判断是否记录告警
if [ DUG −ge 0] then echo "磁盘占用率:DUG -ge 0 ] then echo "磁盘占用率:DUG−ge0]thenecho"磁盘占用率:DUG %" >> $ALOG fi if [ CUG −ge 0] then echo "CPU使用率:CUG -ge 0 ] then echo "CPU使用率:CUG−ge0]thenecho"CPU使用率:CUG %" >> $ALOG fi if [ MUG −ge 0] then echo "内存使用率:MUG -ge 0 ] then echo "内存使用率:MUG−ge0]thenecho"内存使用率:MUG %" >> $ALOG fi
判断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ] then cat $ALOG | mail -s “Host Alert” $AMAIL rm -rf $ALOG fi [root@localhost ~]# sh 1.sh [root@localhost ~]# mail //查看邮件 Heirloom Mail version 12.5 7/5/10. Type ? for help. “/var/spool/mail/root”: 1 message 1 new N 1 root Tue Jul 30 13:01 20/662 “Host Alert” & …………………… //省略部分内容 磁盘占用率:26 % CPU使用率:1 % 内存使用率:18 % //验证结果 #(注释)实验环境,大于等于0就发送邮件,实际生产环境视情况而定!
也可以这样查看邮件:
[root@localhost ~]# cat /var/spool/mail/root …………… //省略部分内容 磁盘占用率:26 % CPU使用率:1 % 内存使用率:18 %