监控Linux的磁盘、内存、CPU

匿名 (未验证) 提交于 2019-12-02 21:56:30

1,安装 mailx

[root@node-1 opt]# yum install mailx

2,编辑配置文件

[root@node-1 opt]# vim /etc/mail.rc #添加如下内容

set from=xxxx@163.com

set smtp=smtp.163.com

set smtp-auth-user=xx@163.com

set smtp-auth-password=xxx

set smtp-auth=login

---说明 建议用163邮箱 因为qq邮箱 smtp会有各种问题

from:对方收到邮件时显示的发件人

smtp:指定第三方发邮件的smtp服务器地址

set smtp-auth-user:第三方发邮件的用户名

set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码

smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

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 "监控报警" xxxx@qq.com < /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,运行脚本

[root@node-1 opt]# sh monitor.sh

检查是否收到邮件

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

[root@node-1 opt]# crontab -e

在cron里添加下面一行即可

*/30 * * * * /opt/monitor.sh
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!