Shell脚本判断Linux服务器多挂载点磁盘使用率并推送钉钉@指定人告警

1. 告警需求

服务器挂载多个挂载点,但是配置磁盘使用率告警,需要排除掉loop形式挂载点。

2. 撰写脚本

cat   disk_utilization_alert.sh

#!/bin/bash

# 配置参数
THRESHOLD=80  # 磁盘使用率告警阈值(单位:%),可修改
SERVER_IP='10.10.10.188'
SERVER_NAME='xx平台服务器'
DINGTALK_URL="https://oapi.dingtalk.com/robot/send?
# 替换为实际钉钉机器人Webhook URL
access_token=c88888888888888888888888888888888888888888888889efdbfa808742af999"  


# 获取磁盘信息并处理告警
alerts=$(df -P | awk -v threshold="$THRESHOLD" '
NR>1 {  # 跳过标题行
    usage = $5;  # 第五列为使用率(如 "80%")
    sub(/%/, "", usage);  # 移除%符号转换为数值
    if (usage + 0 > threshold && $1 !~ /loop/) {  # 比较数值并排除loop设备
        print "磁盘挂载点: "$6", Usage: "usage"%"
    }
}')


# 如有告警则推送钉钉并@告警处理人
if [ -n "$alerts" ]; then
    # 构建告警消息
    message="【磁盘使用率告警,请及时处理】\n服务器名称:$SERVER_NAME \n服务器IP:$SERVER_IP\n告警时间:`date  "+%F %H:%M:%S"`\n告警阈值: ${THRESHOLD}% exceeded on server:\n${alerts} \n@13088888888"
    dingding_push(){
      curl      -H "Content-Type: application/json" \
                -d '{
                    "msgtype": "text",
                    "text": {
                        "content": "'"$message"'"
                    },
                    'at': {
                         'atMobiles': ['13088888888'],
                         'isAtAll': false
                    }
                }' $DINGTALK_URL
}

    # 调用钉钉API发送JSON格式消息
    dingding_push

    echo "Alert has  been sent to DingTalk successfully."
else
    echo "No disk usage has  been  exceeded threshold. System is  normal."
fi

3. 配置定时任务

*/5 * * * *     /path/to/disk_utilization_alert.sh
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值