vim ping_monitor.sh

#!/bin/bash
IP_LIST=("1.1.2.1" "12.0.4.10" "16.11.8.2" "13.7.12.10" "3.44.10.14" "3.13.15.4" "1.3.0.9")
CHECK_INTERVAL=3
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
# 告警阈值(ms)
ALARM_DELAY=200

ALARMED_IPS=()
while true; do
    TIME=$(date '+%Y-%m-%d %H:%M:%S')

    for IP in "${IP_LIST[@]}"; do
        LOG="ping_${IP}.log"

        # 执行 ping 并获取延迟
        PING_RESULT=$(ping -c 1 -W 1 "$IP" 2>&1)
        if echo "$PING_RESULT" | grep -q "time="; then
            # 提取延迟数值
            DELAY=$(echo "$PING_RESULT" | grep -oP 'time=\K[\d.]+')
            # 判断是否超过告警阈值
            if (( $(echo "$DELAY > $ALARM_DELAY" | bc -l) )); then
                # 延迟过高,触发告警
                echo "[$TIME]【告警】$IP 延迟过高:${DELAY}ms"
                echo "[$TIME] $IP 延迟过高 ${DELAY}ms" >> "$LOG"

                # 未告警过则发送通知
                if [[ ! " ${ALARMED_IPS[@]} " =~ " $IP " ]]; then
                    curl -s "$WEBHOOK_URL" \
                      -H "Content-Type: application/json" \
                      -d '{"msgtype":"text","text":{"content":"【Ping 延迟过高告警】\nIP:'"$IP"'\n时间:'"$TIME"'
当前延迟:'"${DELAY}"'ms\n阈值:'"${ALARM_DELAY}"'ms"}}' > /dev/null 2>&1
                    ALARMED_IPS+=("$IP")
                fi
            else
                # 延迟正常,清除告警状态
                echo "[$TIME] $IP 正常 ${DELAY}ms" >> "$LOG"
                ALARMED_IPS=(${ALARMED_IPS[@]/$IP})
            fi
        else
            # ping 完全失败/超时
            echo "[$TIME]【严重】$IP 无法访问"
            echo "[$TIME] $IP 无法访问" >> "$LOG"

            if [[ ! " ${ALARMED_IPS[@]} " =~ " $IP " ]]; then
                curl -s "$WEBHOOK_URL" \
                  -H "Content-Type: application/json" \
                  -d '{"msgtype":"text","text":{"content":"【Ping 不可达告警】\nIP:'"$IP"'\n时间:'"$TIME"'
状态:完全无法访问"}}' > /dev/null 2>&1
                ALARMED_IPS+=("$IP")
            fi
        fi
    done
    sleep $CHECK_INTERVAL
done

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐