磁盘告警钉钉监控
文章目录
脚本
vim /usr/local/oemservice/disk_alert.sh
#!/bin/bash
# 不加签 Webhook 地址
WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=替换成你的token"
# 磁盘使用率阈值
THRESHOLD=80
# 日志文件路径
LOG_DIR="/usr/local/oemservice"
LOG_FILE="${LOG_DIR}/disk_alert.log"
# 确保日志目录存在
mkdir -p "$LOG_DIR"
# 钉钉发送函数,带日志输出
send_dingding() {
local content="$1"
local result=$(curl -s -w "\nHTTP_CODE:%{http_code}" "$WEBHOOK" \
-H 'Content-Type: application/json' \
-d "{\"msgtype\": \"text\", \"text\": {\"content\": \"${content}\"}}" 2>&1)
echo "$(date '+%Y-%m-%d %H:%M:%S') [钉钉推送] 内容: ${content}" >> "$LOG_FILE"
echo "$(date '+%Y-%m-%d %H:%M:%S') [钉钉返回] ${result}" >> "$LOG_FILE"
}
# 检测磁盘使用率
check_disk() {
df -hP | awk 'NR>1 {print $5 " " $6}' | while read usage mount; do
percent=${usage%\%}
if (( percent >= THRESHOLD )); then
local message="服务器磁盘告警通知
主机: $(hostname)
挂载点: ${mount}
使用率: ${usage}
告警时间: $(date '+%Y-%m-%d %H:%M:%S')
请及时处理!"
echo "$(date '+%Y-%m-%d %H:%M:%S') [告警触发] ${message}" >> "$LOG_FILE"
send_dingding "${message}"
else
echo "$(date '+%Y-%m-%d %H:%M:%S') [检查通过] 挂载点: ${mount}, 使用率: ${usage}" >> "$LOG_FILE"
fi
done
}
echo "==================== $(date '+%Y-%m-%d %H:%M:%S') 检查开始 ====================" >> "$LOG_FILE"
check_disk
echo "==================== $(date '+%Y-%m-%d %H:%M:%S') 检查结束 ====================" >> "$LOG_FILE"
定时任务添加
crontab -e
添加以下内容:
5 14 * * * /usr/local/oemservice/disk_alert.sh >/dev/null 2>&1
文章作者
上次更新 2025-06-19