Linux下 监控磁盘 内存 cpu脚本 以及发送邮件流程详解程序员

1,安装 mailx
[[email protected] opt]# yum install mailx
2,编辑配置文件
[[email protected] opt]# vim /etc/mail.rc #添加如下内容
set [email protected]
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=xxx
set smtp-auth=login

说明 建议用163邮箱 因为qq邮箱 smtp会有各种问题
from:对方收到邮件时显示的发件人
smtp:指定第三方发邮件的smtp服务器地址
set smtp-auth-user:第三方发邮件的用户名
set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码
smtp-authSMTP的认证方式,默认是login,也可以改成CRAM-MD5PLAIN方式

3,编写 检测和运行脚本 monitor.sh
#!/bin/bash 
#获取cpu使用率 
cpuUsage=`top -n 1 | awk -F '[ %]+' 'NR==3 {print $2}'` 
#获取磁盘使用率 
data_name="/dev/vda1" 
diskUsage=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'` 
logFile=/tmp/monitor.log 
#获取内存情况 
mem_total=`free -m | awk -F '[ :]+' 'NR==2{print $2}'` 
mem_used=`free -m | awk -F '[ :]+' 'NR==3{print $3}'` 
#统计内存使用率 
mem_used_persent=`awk 'BEGIN{printf "%.0f/n",('$mem_used'/'$mem_total')*100}'` 
#获取报警时间 
now_time=`date '+%F %T'` 
function send_mail(){ 
        mail -s "监控报警" [email protected] < /tmp/monitor.log 
} 
function check(){ 
        if [[ "$cpuUsage" > 80 ]] || [[ "$diskUsage" > 80 ]] || [[ "$mem_used_persent" > 80 ]];then 
                echo "报警时间:${now_time}" > $logFile 
                echo "CPU使用率:${cpuUsage}% --> 磁盘使用率:${diskUsage}% --> 内存使用率:${mem_used_persent}%" >> $logFile 
                send_mail 
        fi 
} 
function main(){ 
        check 
} 
main 

4,运行脚本

[[email protected] opt]# sh monitor.sh

检查是否收到邮件


5、最后,可以设置一个cron计划任务,让该脚本每隔半小时运行一次

[[email protected] opt]# crontab -e

在cron里添加下面一行即可 

*/30 * * * * /opt/disk_check.sh

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/6372.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论