监控体系应覆盖三层:基础连通性层(ICMP/TCP/HTTP)、传输质量层(延迟、丢包、抖动、带宽)和业务可用性层(HTTP 200、TLS 握手、应用响应)。建议至少采集:ping/icmp、tcp_connect、http_status、95%/99%延迟、丢包率、带宽利用率、BGP 会话状态和链路错误计数。
在指标上加维度标签:country=vn、provider=Viettel/VNPT/FPT、node_role=egress/ingress、environment=prod/stage,以便按运营团队、ISP 和节点角色快速聚合。
建议使用 Prometheus + blackbox_exporter 进行主动探测,配合 node_exporter、SNMP 或流量采集(sFlow/NetFlow)来采集主机与链路指标;业务层用应用探针或 RUM 补充。
为每个越南节点配置 blackbox probe(icmp/tcp/http/tls)。Prometheus job 示例(简化):
job_name: 'blackbox-vn'
metrics_path: /probe
params: { module: [icmp] }
static_configs:
- targets: ['1.2.3.4','5.6.7.8']
relabel_configs:
- source_labels: [__address__]
target_label: instance
replacement: 'vn-node-1'
可用性告警:probe_success{job="blackbox-vn",instance=~".*"} == 0 连续 5 分钟触发;
延迟告警(95pct):histogram_quantile(0.95, sum(rate(probe_duration_seconds_bucket{job="blackbox-vn"}[5m])) by (le,instance)) > 0.2(阈值示例 200ms)。
在 Alertmanager 中按 country/provider/severity 路由,设置抑制(inhibit_rules)和分组(group_by)。Grafana 可用于面板与直接通知(但建议以 Alertmanager 为主做路由)。
当 ICMP 被屏蔽 时,优先使用 TCP SYN(端口 80/443/业务端口)和 HTTP(S) 请求 做连通性与应用可用性检测;如果目标支持 SNMP/BGP,可采集会话状态和接口错误。
例:使用 curl 检查 HTTP:curl -I -m 5 https://example.vn;TCP 端口探测:timeout 3 bash -c "echo > /dev/tcp/1.2.3.4/443";mtr 或 tcptraceroute 做路径诊断。
建议从多个探测点(不同运营商与区域)验证,必要时在越南侧部署轻量探针(agent)上报到中心监控,补偿被中间防火墙拦截的情况。
告警应包含 severity=critical/major/minor/info,和 owner/team/region 等标签。对于越南节点把 provider 与 node_role 加入路由规则,保证关键节点(出口链路、骨干)优先通知。
使用 Alertmanager 的 inhibit_rules 抑制低优先级告警在高优先级存在时通知;使用 group_wait/group_interval/group_by 减少重复通知;通过 fingerprint 或 external_labels 实现跨实例去重。
采用“短时确认+再确认”策略:比如连通性类告警连续 1 分钟触发初始告警,5 分钟未恢复视为严重;使用滑动窗口避免抖动(例如 3 次采样均异常才触发)。
每类告警应有标准化步骤:1) 识别告警与影响范围(哪些 IP / 哪个 ISP / 哪些业务);2) 执行快速诊断(ping/traceroute/mtr、BGP 会话、接口错误);3) 执行已验证的恢复动作(重启隧道、切换出口、拉起备份 IP);4) 通知相关人并记录工单。
对常见可自动恢复的问题实现脚本化(例如自动重启隧道、触发 BGP withdraw/announce、API 触发云端替换节点),并在脚本中加入幂等与安全校验;重要操作需先尝试非破坏性检查并写日志。
将告警通过 Alertmanager 路由到 Slack/WeChat/PagerDuty,并在严重告警中自动创建工单。示例通知 webhook 调用:curl -X POST -H 'Content-Type: application/json' --data '{"text":"vn node down: 1.2.3.4"}' https://hooks.example.com