Komari 节点探测监控(WxPusher 告警)
完整安装与部署步骤文档(长期保存版)
系统环境:
Linux VPS(Ubuntu / Debian / CentOS 均可)
具备 systemd
能访问 Komari 面板 API
root 权限
本方案功能:
从 Komari API 获取节点 UUID 和名称
通过 TCP 探测判断节点在线 / 离线
Linux / Windows / 网站统一监控
节点状态变化才通知(不刷屏)
WxPusher 微信推送
systemd 托管,SSH 断开仍运行
二、依赖安装
更新系统
apt update -y
安装必要工具
apt install -y curl jq bash
三、准备 WxPusher
准备以下信息:
APP_TOKEN
WX_UID
WxPusher API 地址(固定):
https://wxpusher.zjiecode.com/api/send/message
四、创建监控脚本
创建脚本文件
nano /root/fuwuqi.sh
脚本完整内容如下(可直接粘贴)
#!/bin/bash
UA=”Mozilla/5.0 (Windows NT 10.0; Win64; x64)”
WxPusher 配置
APP_TOKEN=”你的APP_TOKEN”
WX_UID=”你的WX_UID”
WXPUSHER_API=”https://wxpusher.zjiecode.com/api/send/message”
send_push() {
local MSG=”$1″
curl -s -X POST “$WXPUSHER_API”
-H “Content-Type: application/json”
-d “{
“appToken”: “$APP_TOKEN”,
“content”: “$MSG”,
“contentType”: 1,
“uids”: [“$WX_UID”]
}” >/dev/null
}
Komari 节点 API
NODES_API=”https://你的域名/api/nodes”
节点配置文件
TARGET_FILE=”/root/node_targets.conf”
检测周期(秒)
CHECK_INTERVAL=60
状态目录
STATE_DIR=”/root/state”
mkdir -p “$STATE_DIR”
echo “开始监控(节点探测模式)”
send_push “🧪【监控启动】\n\n模式:节点探测\n周期:1 分钟”
TCP 探测函数
check_tcp() {
local HOST_PORT=”$1″
timeout 5 bash -c “>/dev/tcp/${HOST_PORT/://}” 2>/dev/null
}
while true; do
JSON=$(curl -s “$NODES_API”)
[ -z “$JSON” ] && sleep “$CHECK_INTERVAL” && continue
echo “$JSON” | jq -c ‘.data[]’ | while read -r NODE; do
UUID=$(echo “$NODE” | jq -r ‘.uuid’)
NAME=$(echo “$NODE” | jq -r ‘.name’)
LINE=$(grep “^$UUID|” “$TARGET_FILE” 2>/dev/null)
[ -z “$LINE” ] && continue
METHOD=$(echo “$LINE” | cut -d’|’ -f2)
TARGET=$(echo “$LINE” | cut -d’|’ -f3)
STATE_FILE=”$STATE_DIR/$UUID.state”
LAST_STATE=$(cat “$STATE_FILE” 2>/dev/null)
ONLINE=false
case “$METHOD” in
tcp)
check_tcp “$TARGET” && ONLINE=true
;;
esac
if ! $ONLINE; then
# 关键修复:首次离线也要报警
if [ “$LAST_STATE” != “DOWN” ] || [ ! -f “$STATE_FILE” ]; then
send_push “❌【节点离线】\n\n$NAME\n$TARGET”
echo “DOWN” > “$STATE_FILE”
fi
else
if [ “$LAST_STATE” != “OK” ]; then
send_push “✅【节点恢复在线】\n\n$NAME\n$TARGET”
echo “OK” > “$STATE_FILE”
fi
fi
done
sleep “$CHECK_INTERVAL”
done
保存并退出
Ctrl + O → 回车
Ctrl + X
赋予执行权限
chmod +x /root/fuwuqi.sh
五、创建节点配置文件
创建节点配置
nano /root/node_targets.conf
配置格式说明
UUID|探测方式|目标地址
探测方式:
tcp
端口约定:
Linux:22
Windows:3389
网站:443
示例(完整示例需按自己节点填写)
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|tcp|1.2.3.4:22
六、创建 systemd 服务
创建服务文件
nano /etc/systemd/system/fuwuqi.service
服务内容
[Unit]
Description=Komari Server Monitor
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /root/fuwuqi.sh
Restart=always
RestartSec=5
重新加载 systemd
systemctl daemon-reload
设置开机自启
systemctl enable fuwuqi
启动服务
systemctl start fuwuqi
七、运行验证
查看服务状态
systemctl status fuwuqi
状态应为:
Active: active (running)
查看进程
ps aux | grep fuwuqi.sh
应看到:
/bin/bash /root/fuwuqi.sh
查看日志
journalctl -u fuwuqi -f
八、节点维护操作规范
新增节点:
从 Komari 后台获取 UUID
添加一行到 /root/node_targets.conf
systemctl restart fuwuqi
删除节点:
删除配置文件中的对应行
删除状态文件:
rm -f /root/state/UUID.state
systemctl restart fuwuqi
修改 IP / 端口:
仅修改 node_targets.conf
UUID 不变
重启服务
九、重要运维原则
UUID 是唯一身份,名称仅用于展示
删除节点必须同步删除 state 文件
修改配置后一定重启 systemd 服务
首次离线必须报警(已在脚本中修复)
十、当前功能总结
systemd 常驻运行
TCP 真实可达性检测
节点离线 / 恢复通知
WxPusher 推送
支持 20+ 节点稳定运行
资源占用极低,可长期运行