首先明确需要监控的维度:在线率(ping/HTTP)、延迟与丢包(mtr/smokeping)、主机资源(CPU、内存、磁盘、负载)、网络接口/连接数、以及服务进程(nginx、ssr、v2ray等)。
使用Prometheus + node_exporter采集主机指标,Blackbox exporter做主动探测,Grafana做展示;或者使用Zabbix做一体化监控与告警。
对外链路建议多点探测(国内多个节点或第三方探针)每1-5分钟一次;内部指标1分钟采集较为常见。
ping -c 10 搬瓦工日本CN2 IP;mtr -rw IP。将这些结果纳入主动探测或脚本上报。
告警分级(warning/critical)并设置连续触发条件(如连续3次ping丢包>30%才触发),避免单次波动误报。通知渠道配置为邮件、钉钉/企业微信、Slack、SMS及Webhook。
Prometheus Alertmanager示例:expr = avg_over_time(node_network_up[3m]) < 1 表示连续3分钟不可达;或使用packet_loss_rate > 0.3 持续5分钟。
启用告警抑制(silence)与分组,以同一事件不重复发送;对维护窗口执行自动静默。
告警Payload中包含主机、时间、阈值、当前值与恢复命令链接,Webhook可以触发自动恢复流程(见问题3)。
自动化恢复流程通常包含:检测->验证->执行修复脚本->再次验证->人工升级(若失败)。使用Rundeck/Ansible Tower或自建调度器接收告警Webhook并执行作业。
重启网络服务(systemctl restart network/NetworkManager)、重启代理进程(systemctl restart v2ray)、flush路由或重启主机(reboot)。
1) 告警触发Webhook;2) 调度器执行Playbook:备份日志->重启服务->收集诊断->告警恢复。3) 将结果回传到告警系统并通知运维。
自动化脚本须限权并记录操作,一旦修复失败要触发人工工单并自动回滚到安全状态或切换到备用节点。
结合多个探测源(不同ISP、不同地域)可以判断是区域故障还是节点故障。采用多次连续失败才告警、增加滑动窗口、以及合并跨源探测结果判断为“确认故障”。
对短时高抖动使用熔断器策略:短时间内多次失败则进入半开状态,降低探测频率并等待稳定再恢复正常。
除了底层网络探测,做TCP/HTTP握手、TLS、业务端口的真实交易(如登陆、请求返回码)以确保服务可用性,而不仅仅是ICMP可达性。
为维护窗口自动抑制告警,并对已知平台变更(如搬瓦工节点迁移)建立白名单与临时规则。
场景1:高延迟/丢包——先做mtr定位,若为本机网络问题则重启网卡或route:ip link set dev eth0 down; ip link set dev eth0 up;或重启网络服务。
#!/bin/bash
DATE=$(date +%F_%T)
ping -c 6 8.8.8.8 > /tmp/ping_$DATE.log
systemctl restart NetworkManager || systemctl restart network
tar -czf /tmp/diag_$DATE.tgz /tmp/ping_$DATE.log /var/log/messages
检查进程:ps aux | grep v2ray;若未运行,systemctl start v2ray && journalctl -u v2ray -n 200 >/tmp/v2ray.log。
在自动化流程中将重启作为最后一招,先做优雅重启与进程转储,若仍无效则通过API或调度器执行reboot,并在重启后验证服务。