shell脚本-开发系统监控脚本

开发系统监控脚本

企业环境说明

某公司随着业务的不断发展,所使用的Linux服务器也越来越多。管理员希望编写一个简单的性能监控脚本,放到各服务器中,当监控指标出现异常时发送告警邮件。

需求描述

编写名为sysmon.sh的shell监控脚本;
监控内容包括CPU使用率,内存使用率,根分区的磁盘占有率,百分比只需精确到个位;
出现磁盘占有率超过90%,CPU使用率超过80%,内存使用率超过90%等情况时,告警邮件通过mail命令发送到指定邮箱;

命令类型

分析:监控内容包括CPU使用率,内容使用率,根分区的磁盘占有率
df命令,awk命令,mpstat命令(需安装sysstat软件包),free命令

磁盘占用率

[root@client1 ~]# df -Th | grep '/$'
[root@client1 ~]# df -Th | grep '/$' | awk '{print $6}'
[root@client1 ~]# df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}'
[root@client1 ~]# disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')

CPU占有率

[root@client1 ~]# mpstat 
[root@client1 ~]# mpstat | tail -1 | awk '{print $12}'
[root@client1 ~]# mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}
[root@client1 ~]# expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')
[root@client1 ~]# CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))

内存使用率

[root@client1 ~]# free -m
[root@client1 ~]# free -m | grep "Mem:" | awk '{print $7}'
[root@client1 ~]# free -m | grep "Mem:" | awk '{print $2}'
[root@client1 ~]# expr $(free -m | grep "Mem:" | awk '{print $7}') / $(free -m | grep "Mem:" | awk '{print $2}')
[root@client1 ~]# expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}')

内存使用率

mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))

shell脚本编辑

[root@client1 ~]# rpm -qa mailx  '查看是否安装相关软件包'
mailx-12.5-16.el7.x86_64
[root@client1 ~]# vi /etc/mail.rc 
[root@client1 ~]# echo "123123" | mail -s "test" ***********@qq.com
set from=***********@qq.com   '发送邮箱地址'
set smtp=smtp.qq.com         '邮箱使用的smtp服务器的域名'
set smtp-auth-user=2231321708@qq.com   'smtp邮件发送时登录的账号'
set smtp-auth-password=........     '填写邮箱授权码'
set smtp-auth=login             'smtp的状态,登录状态'
[root@client1 ~]# vim sysmon.sh
#!/bin/bash
# 磁盘占有率超过90%CPU使用率超过80%,内存使用率超过90%发送报警邮件
disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
A=/root/alert.txt
B=***********@qq.com
if [ $disk -ge 90 ]
then echo "磁盘占有率超过90%" >> $A
fi
if [ $CPU -ge 80 ]
then echo "CPU使用率超过80%" >> $A
fi
if [ $mem -ge 90 ]
then echo "内存使用率超过90%" >> $A
fi
if [ -f $A ]
then
cat $A | mail -s "alert report" $B
rm -rf $A
fi
[root@client1 ~]# chmod +x sysmon.sh 
[root@client1 ~]# ./sysmon.sh 

硬件巡检,对cpu、内存、磁盘超过阈值报警 shell脚本编辑

vi /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat
set from=2231321708@qq.com      '上面有解析'
set smtp=smtp.qq.com
set smtp-auth-user=2231321708@qq.com
set smtp-auth-password=ofuyhifjtxrsdidf
set smtp-auth=login
#!/bin/bash
# 硬件巡检,对cpu、内存、磁盘超过阈值报警
disk=$(df -Th | grep "/$" | awk '{print $6}' | awk -F% '{print $1}')
mem=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100  / $(free | grep "Mem:" | awk '{print $2}'))
cpu=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
alert_file=/root/alert.txt
mailbox=2231321708@qq.com
if [ $disk -ge 10 ]
then echo "磁盘占有率超过85%" >> $alert_file
fi
if [ $mem -ge 5 ]
then echo "内存占有率超过90%" >> $alert_file
fi
if [ $cpu -ge 2 ]
then echo "cpu占有率超过90%" >> $alert_file
fi
if [ -f $alert_file ]
then
cat $alert_file | mail -s "alert report" $mailbox
rm -rf $alert_file
fi
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值