文章最后更新时间:2022年11月16日已超过744天没有更新。
一、服务器环境
centos7
支持mail邮箱发送
提示:如果想直接使用,直接跳到最后复制脚本内容,修改下邮箱即可使用
二、mail邮箱配置
#安装mail邮箱 yum install mailx -y [root@WEB ~]# vim /etc/mail.rc set bsdcompat set from=123456@qq.com //邮箱地址, set smtp=smtp.exmail.qq.com set smtp-auth-user=123456@qq.com //邮箱 账户 set smtp-auth-password=123 //邮箱密码 set smtp-auth=login
三、监控CPU
crontab定时任务的环境变量不支持top命令,需要top -b输出到一个文件,然后赋值给cpu变量
#!/bin/bash . /etc/profile . ~/.bash_profile #CPU监测 tmp=$(/usr/bin/top -bn 1 | grep %Cpu | cut -d , -f 4 | awk '{print $1}' | cut -d . -f 1 > /root/tmp) cpu=$(cat /root/tmp) if [ $cpu -lt 15 ];then cputmp=$((100-$cpu)) echo "CPU使用率高达$cputmp%,请及时处理!" | mail -s "CPU使用告急!" 123456@qq.com fi
四、内存监测
注意: shell不支持浮点比较或者计算,需要换个思路处理
1、先求出浮点数据之后,然后使用awk把浮点数转换成两位小数,储存到临时变量
2、然后把浮点数乘以100转换成整数,然后进行IF判断
#内存监测 totalmem=$(free -m | grep Mem | awk '{print $2}') usemem=$(free -m | grep Mem | awk '{print $3}') mtmp=$(echo "$totalmem $usemem" | awk '{printf ("%.2f\n",$2/$1)}') mem=$(echo "$mtmp" | awk '{print $1*100}') if [ $mem -gt 85 ];then echo "内存使用率高达$mem%,请及时处理!" | mail -s "内存使用告急!" 123456@qq.com fi
五、硬盘监测
#硬盘监测 disk=$(df -h / | awk '{print $5}' | cut -d % -f 1 | grep ^[0-9]) if [ $disk -gt 85 ];then echo "硬盘使用率高达$disk%,请及时处理!" | mail -s "硬盘使用告急!" 123456@qq.com fi
六、系统负载监测
系统负载数据也使用到浮点数,还是使用乘以100转换成整数运算的思路
#系统负载监测 average=$(uptime | awk '{print $12}') cpucroe=$(cat /proc/cpuinfo | grep processor | wc -l) atmp=$(echo $average | awk '{print $1 * 100}') ctmp=$(echo $cpucroe | awk '{print $1 * 100}') if [ $atmp -gt $ctmp ];then echo "近15分钟系统负载高达$average请及时处理!" | mail -s "系统负载过高!" 123456@qq.com fi
七、加入定时任务
*/15 * * * * ./etc/profile;/bin/bash /root/脚本名字
八、最后脚本总内容
#CPU监测 cpu=$(top -n 1 | grep %Cpu | cut -d , -f 4 | awk '{print $2}' | cut -d . -f 1) if [ $cpu -lt 15 ];then cputmp=$((100-$cpu)) echo "CPU使用率高达$cputmp%,请及时处理!" | mail -s "CPU使用告急!" 123456@qq.com fi #内存监测 totalmem=$(free -m | grep Mem | awk '{print $2}') usemem=$(free -m | grep Mem | awk '{print $3}') mtmp=$(echo "$totalmem $usemem" | awk '{printf ("%.2f\n",$2/$1)}') mem=$(echo "$mtmp" | awk '{print $1*100}') if [ $mem -gt 85 ];then echo "内存使用率高达$mem%,请及时处理!" | mail -s "内存使用告急!" 123456@qq.com fi #硬盘监测 disk=$(df -h / | awk '{print $5}' | cut -d % -f 1 | grep ^[0-9]) if [ $disk -gt 85 ];then echo "硬盘使用率高达$disk%,请及时处理!" | mail -s "硬盘使用告急!" 123456@qq.com fi #系统负载监测 average=$(uptime | awk '{print $12}') cpucroe=$(cat /proc/cpuinfo | grep processor | wc -l) atmp=$(echo $average | awk '{print $1 * 100}') ctmp=$(echo $cpucroe | awk '{print $1 * 100}') if [ $atmp -gt $ctmp ];then echo "近15分钟系统负载高达$average请及时处理!" | mail -s "系统负载过高!" 123456@qq.com fi echo "$(date +%F) $(date +%T)" >> /$HOME/sys.log echo "空闲CPU:$cpu%" >> /$HOME/sys.log echo "MEM:$mem%" >> /$HOME/sys.log echo "DISK:$disk%" >> /$HOME/sys.log echo "AVERAGE:$average" >> /$HOME/sys.log
文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。