监控系统网络连接中CLOSE_WAIT状态的连接数量,如果数量大于10则发出钉钉提醒

✅ 功能说明

  • 使用 ss 或 netstat 获取当前系统中所有 TCP 连接。
  • 统计状态为 CLOSE_WAIT 的连接数量。
  • 如果数量大于指定阈值(如 10),则发送告警通知。

📦 最终优化脚本:monitor_close_wait.sh

#!/bin/bash

# 配置项
THRESHOLD=10
CHECK_CLOSE_WAIT_CMD="ss -ant | awk '\$1 == \"CLOSE-WAIT\" {count++} END {print count+0}'"
CHECK_PORT=8080
TIMEOUT=1

# 钉钉机器人 Webhook 地址(替换为你自己的)
SEND_DINGTALK=true
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=你的token"

# 获取机器信息
HOSTNAME=$(hostname)
IP_ADDRESS=$(hostname -I | awk '{print $1}')

# 获取 CLOSE_WAIT 数量
CLOSE_WAIT_COUNT=$(eval "$CHECK_CLOSE_WAIT_CMD" 2>/dev/null)

if [[ -z "$CLOSE_WAIT_COUNT" ]]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') 错误:无法获取 CLOSE_WAIT 连接数,请确认命令是否执行成功。"
    exit 1
fi

# 检查连接数
if (( CLOSE_WAIT_COUNT > THRESHOLD )); then

    # 检查本地 8080 端口是否可访问(使用 curl 检测本地 TCP 连接)
    if timeout "$TIMEOUT" bash -c "</dev/tcp/127.0.0.1/$CHECK_PORT"; then
        PORT_STATUS="✅ 端口 $CHECK_PORT 可访问"
    else
        PORT_STATUS="❌ 端口 $CHECK_PORT 不可访问或超时(${TIMEOUT}s)"
    fi

    MESSAGE="⚠️【系统告警】检测到 CLOSE_WAIT 连接异常!

【主机名】: $HOSTNAME
【IP地址】: $IP_ADDRESS
【当前 CLOSE_WAIT 数量】: $CLOSE_WAIT_COUNT
【阈值】: $THRESHOLD
【服务端口状态】: $PORT_STATUS

请及时检查应用连接释放情况,避免资源泄漏。"

    echo "$MESSAGE"

    # 发送钉钉消息
    if $SEND_DINGTALK; then
        JSON_DATA=$(cat <<EOF
{
    "msgtype": "text",
    "text": {
        "content": "$MESSAGE",
        "at": {
            "isAtAll": false
        }
    }
}
EOF
)
        curl -s -H "Content-Type: application/json" -d "$JSON_DATA" "$DINGTALK_WEBHOOK" > /dev/null
    fi
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') 当前 CLOSE_WAIT 连接数为 $CLOSE_WAIT_COUNT,未超过阈值 $THRESHOLD。"
fi

🧪 示例钉钉报警消息内容

⚠️【系统告警】检测到 CLOSE_WAIT 连接异常!

【主机名】: web-server-01
【IP地址】: 192.168.1.10
【当前 CLOSE_WAIT 数量】: 15
【阈值】: 10
【服务端口状态】: ❌ 端口 8080 不可访问或超时(1s)

请及时检查应用连接释放情况,避免资源泄漏。

🕒 设置定时任务(crontab)

crontab -e

添加如下内容,每5分钟运行一次监控

*/5 * * * * /opt/monitor_close_wait.sh >> /var/log/close_wait_monitor.log 2>&1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪你听风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值