zoukankan      html  css  js  c++  java
  • linux性能监控 + Sendmail 发邮件

    sendmail安装

    #!/bin/bash
    #控制发邮件的阈值是在rate,rate1和FF值(三个同样的用途,仅仅是名字不同)
    #
    #注:该博文中的变量不规范,我是随意定义的,请注意
    #
    #定义时间倒计时函数
    stop_time(){
      kk=3
      while [ $kk -gt 0 ];do
      sleep 1
      kk=$(($kk - 1))
      echo -ne " "
      done
    }
    #free 监控内存使用率,超过80%就发邮件
    #获取当前内存各值
    mem_total=$(free -m | sed -n '2p' | awk '{print $2}')
    mem_used=$(free -m | sed -n '2p' | awk '{print $3}')
    mem_free=$(free -m | sed -n '2p' | awk '{print $4}')
    mem_shared=$(free -m | sed -n '2p' | awk '{print $5}')
    mem_buff=$(free -m | sed -n '2p' | awk '{print $6}')
    mem_cached=$(free -m | sed -n '2p' | awk '{print $7}')
    mem_rate=`echo "scale=2;$mem_used/$mem_total" | bc | awk -F. '{print $2}'`
    [ ! -d /home/zpz/mail ] && mkdir /home/zpz/mail
    echo "10分钟前内存使用情况:">>/home/zpz/mail/memory.txt
    #换算成M和G为单位
    echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
    used: `expr $mem_used / 1000`G (${mem_used}M)
    free: `expr $mem_free / 1000`G (${mem_free}M)
    shared: `expr $mem_shared / 1000`G (${mem_shared}M)
    buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
    available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
    echo -e "rate:${mem_rate}%(如显示为 06% 即表示 0.06%,换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
    if [ $mem_rate -ge 40 ];then
      stop_time
      mem_total1=$(free -m | sed -n '2p' | awk '{print $2}')
      mem_used1=$(free -m | sed -n '2p' | awk '{print $3}')
      mem_rate1=`echo "scale=2;$mem_used1/$mem_total1" | bc | awk -F. '{print $2}'`
    #判断2次统计的内存使用率
      if [ $mem_rate1 -ge $mem_rate ];then
        echo "">>/home/zpz/mail/memory.txt
        echo "当前内存使用情况:">>/home/zpz/mail/memory.txt
        echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
        used: `expr $mem_used / 1000`G (${mem_used}M)
        free: `expr $mem_free / 1000`G (${mem_free}M)
        shared: `expr $mem_shared / 1000`G (${mem_shared}M)
        buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
        available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
        echo "rate:${mem_rate}%(换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
      fi
    else
    #如果以上条件都不成立就将memory.txt文件清零并将各变量赋空值
      mem_opop=" "
      mem_kk=" "
    fi


    #监控磁盘使用率,超过80%就发邮件
    DEV=`df -hP | grep '^/dev/*' | awk -F ' ' '{print $1}'|sort`
    for i in $DEV
    do
      disk_dev=`df -Ph | grep $i | awk '{print $1}'`
      disk_size=`df -Ph | grep $i | awk '{print $2}'`
      disk_used=`df -Ph | grep $i | awk '{print $3}'`
      disk_free=`df -Ph | grep $i | awk '{print $4}'`
      disk_rate=`df -Ph | grep $i | awk '{print $5}'`
      disk_mount=`df -Ph| grep $i | awk '{print $6}'`
    #定义磁盘利用率
      disk_F=`echo $disk_rate | awk -F% '{print $1}'`
      if [ $disk_F -ge 40 ];then
        echo " ">>/home/zpz/mail/memory.txt
        echo " ">>/home/zpz/mail/memory.txt
        echo "10分钟前硬盘使用率: $disk_rate">>/home/zpz/mail/memory.txt
        for p in $DEV;do echo -e "$p: size:$disk_size used:$disk_used free:$disk_free mount: $disk_mount";done>>/home/zpz/mail/memory.txt

    stop_time
        disk_dev1=`df -Ph | grep $i | awk '{print $1}'`
        disk_size1=`df -Ph | grep $i | awk '{print $2}'`
        disk_used1=`df -Ph | grep $i | awk '{print $3}'`
        disk_free1=`df -Ph | grep $i | awk '{print $4}'`
        disk_rate1=`df -Ph | grep $i | awk '{print $5}'`
        disk_mount1=`df -Ph | grep $i | awk '{print $6}'`
        disk_FF=`echo $disk_rate1 | awk -F% '{print $1}'`
    #判断2次统计的硬盘使用率
        if [ $disk_FF -ge $disk_F ];then
          echo " ">>/home/zpz/mail/memory.txt
          echo "当前硬盘使用率: $disk_rate1">>/home/zpz/mail/memory.txt
          for H in $DEV;do echo -e "$H: size:$disk_size1 used:$disk_used1 free:$disk_free1 mount: $disk_mount1";done >>/home/zpz/mail/memory.txt
        else
          echo " ">/home/zpz/mail/memory.txt
        fi
      fi
    done
    if [[ $mem_rate1 -ge 70 || $disk_FF -ge 80 ]];then
      mail -v -s "44服务器的硬盘警告" xxxxx@126.com</home/zpz/mail/memory.txt
      echo " ">/home/zpz/mail/memory.txt
    fi

     

                                该文章为原创,转载请注明原出处   谢谢合作

    欢迎加入QQ群一起讨论Linux、开源等技术

  • 相关阅读:
    linux日常。
    tp5中的config类和config助手函数
    TP5隐藏index.php
    TP5读取数据概述
    TP5的安装部署概要
    eclipse4.7中文包安装方法。
    利用mysqldump备份magento数据库
    MySQL 基础知识
    PHP 基础知识
    妖怪与和尚过河问题
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/11011542.html
Copyright © 2011-2022 走看看