• 磁盘监控:告警时发送邮件


    1.配置邮箱

    1.编辑邮箱配置文件

    vim /etc/mail.rc
    
    • 1

    2.在末尾输入自己的邮箱配置,以163邮箱为例

    #开启ssl
    set ssl-verify=ignore
    #证书目录,下方为centos系统证书默认位置,也自行生成证书并指定
    set nss-config-dir=/etc/pki/nssdb
    # 配置的第三方smtp服务器的地址及端口
    set smtp=smtps://smtp.163.com:465                         
    # 认证方式
    set smtp-auth=login
    # 发送邮件的邮箱账号
    set smtp-auth-user=xxx@163.com
    # 发送邮件的客户端授权码
    set smtp-auth-password=yyy
    # 设置发信人邮箱和昵称
    set from=xxx@163.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.测试发邮箱功能是否可用

    echo "测试" | mail -s "测试" 1259799716@qq.com
    
    • 1

    -s:邮件主题
    1259799716@qq.com:收件人

    测试结果如下:
    在这里插入图片描述
    自己的邮箱已经可以收到邮件,报错Error in certificate: Peer’s certificate issuer is not recognized. 是因为没有配置smtps://smtp.163.com:465 的ssl证书,想解决这个报错的可以自行百度配置证书,本脚本是直接忽略该错误,不影响正常使用

    2.编写shell脚本
    1. 编写shell脚本
    cd xxx     #选择自己存放脚本的文件夹
    vim console.sh
    
    • 1
    • 2

    shell脚本分享如下

    #!/bin/bash
    
    # 主机名
    hostname="117.50.117.58"
    # 邮箱收件人  可以循环发送给多个人
    addresses=("邮箱地址1" "邮箱地址2" "邮箱地址3")
    # 获取磁盘使用率
    rate=$(df -h | grep /dev/vdb | awk '{print $5}' | cut -d % -f1)
    # 磁盘剩余空间
    remain_size=$(df -h | grep /dev/vdb | awk '{print $4}')
    # 获取当前时间
    date=$(date "+%Y-%m-%d %H:%M:%S")
    
    # 如果磁盘使用率超过95%  可以自己制定监控值,一般是85%
    if [ ${rate} -ge 95 ]
            then
            #磁盘超过监控值,发送邮件
            echo "${date} 主机 ${hostname} 磁盘使用率已经超过95%,当前使用率为${rate}% ,剩余空间为${remain_size} ,请及时清理磁盘空间" > message.txt        
            for address in ${addresses}
                    do
                            mail -s "磁盘空间告警" ${address} < message.txt 2>/dev/null
            done
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.赋予脚本可执行权限

    chmod 755 console.sh
    
    • 1
    3.将脚本加入到定时任务即可,可以每半个小时执行一次,按照自己的需求设置执行频率即可
  • 相关阅读:
    【工程光学】平面与平面系统
    Java_求两个正整数的最大公约数
    Golang | Leetcode Golang题解之第48题旋转图像
    HTTP发起请求与收到响应的大致过程
    【linux高性能服务器编程】中篇
    基于 QT 实现 Task Timer,高效利用时间
    Linux head/tail
    计算机毕业设计 JSPM校园闲置物品交易平台的设计与实现 Java实战项目 附源码+文档+视频讲解
    Oracle函数之聚组函数
    ErrCode: 13102001没有找到名称为 ‘xxx‘ 的数据源
  • 原文地址:https://blog.csdn.net/qq_43597256/article/details/134071246