1.
概述与目标
- 目标:对越南 VPS 的“原生公网 IP”进行可用性与连通性监控,发生异常时触发报警并执行自动化恢复策略。
- 恢复优先级:1) 本机网络重启/服务自愈;2) 通过供应商 API 切换浮动 IP 或重绑定;3) DNS 快速切换到备用节点(低 TTL)。
2.
前提与准备
- 需要:一台越南 VPS(被监控端)、一台监控节点(可在同区域或外网)、域名支持 API 修改、若可用则需浮动 IP 或第二备份 VPS。
- 工具:Prometheus、node_exporter、blackbox_exporter、Alertmanager、curl、jq、SSH 密钥与供应商 API token。
3.
部署监控组件(监控节点)
- 安装 Prometheus:下载并编辑 prometheus.yml,将被监控 VPS 的 node_exporter 与 blackbox 抓取配置加入。
- 安装 node_exporter(被监控 VPS):sudo useradd -rs /bin/false node_exporter;下载并 systemd 启动。
- 安装 blackbox_exporter(监控节点):用于 ping/http/traceroute 探测原生 IP。
4.
Prometheus 与 Blackbox 配置要点
- prometheus.yml 示例:在 scrape_configs 中添加 blackbox job,targets 为被监控的原生 IP,module 使用 icmp/http。
- 探测策略:对原生 IP 做 ICMP(ping)与 TCP 端口(如 80/443)探测。超时设置 5s,失败 3 次触发报警。
5.
告警规则与 Alertmanager 配置
- 告警规则例子:instance_unreachable(blackbox probe failed for >3m),service_down(tcp probe failed >3m)。
- Alertmanager:配置接收器 webhook 与邮件/企业微信。Webhook 指向本地自动化脚本接收端(HTTP 服务)。
6.
自动化恢复脚本与逻辑
- webhook 接收逻辑:收到告警 -> 根据 labels 判断为原生 IP 异常 -> 执行逐步恢复策略(并记录每步结果)。
- 恢复步骤脚本示例(简单流程):1) 用 SSH 尝试重启 network:ssh root@IP "sudo systemctl restart networking || sudo systemctl restart network"; 2) 若 SSH 超时,调用供应商 API 尝试重绑浮动 IP 到备用 VPS;3) 若无浮动 IP,调用 DNS API 快速修改 A 记录并降低 TTL(示例:curl -X POST https://api.dns/ change)。
7.
具体实现示例(关键命令与注意)
- SSH 自愈命令:ssh -o ConnectTimeout=8 root@IP "sudo systemctl restart NetworkManager || sudo ifdown eth0 && sudo ifup eth0"。
- 浮动 IP 切换(伪代码):curl -X POST -H "Authorization: Bearer $TOKEN" "https://api.provider/v1/floating_ips/$FID/assign" -d '{"droplet_id":BACKUP_ID}'。注意检查 API 返回并重试 3 次。
- DNS 切换:先设置低 TTL(60s),变更 A 记录到备用 IP,验证生效后恢复 TTL。
8.
测试与演练流程
- 演练步骤:1) 在维护窗口手动停止被监控服务或断网,观察 Prometheus 探测与 Alertmanager 报警;2) 确认 webhook 收到并按策略执行脚本;3) 验证浮动 IP 或 DNS 切换是否成功并且服务恢复;4) 记录时间线与失败点并优化超时/重试参数。
- 建议:每月至少一次完整演练,保留日志便于回溯。
9.
问:为何要同时用 Blackbox 探测与 node_exporter?
- 答:node_exporter 报告主机指标(CPU/网络/进程)但可能在内核网络异常时仍能上报;blackbox 能从外部真实模拟用户访问(ping/http),因此两者结合可区分服务内部故障与公网连通性问题。
10.
问:没有浮动 IP 时如何保证快速切换?
- 答:采用低 TTL(60s)+ DNS API 自动切换到备用节点,并在切换后并行通知上游 CDN 或负载均衡器,若业务对切换敏感,可提前准备异地备用节点并同步数据/状态。
11.
问:安全性与误报如何控制?
- 答:设置多点探测(多监控节点)、配置多级确认(例如 3 次探测失败且 node_exporter 同步异常才触发自动化切换),Webhook 接收端需做签名校验与速率限制,API token 存放在受限环境并定期轮换。
来源:智能运维越南vps原生ip监控报警与自动化故障恢复流程解析