1.
概述与准备工作
- 目标:对
台湾CN2链路的服务器进行端到端性能监控、告警与标准化故障响应。
- 前提:服务器能安装监控代理(root权限)、网络端口对外可访问、已申请Grafana/Prometheus/Alertmanager等所需账号或容器权限。
2.
选择监控组件与架构设计
- 建议架构:Prometheus + node_exporter + blackbox_exporter(链路/端口/ICMP)+ Grafana + Alertmanager + 日志集中(Filebeat/ELK或Loki)。
- 说明:Prometheus负责采集指标并触发规则,Alertmanager负责通知,Grafana可视化,blackbox用于从外部探测台湾出口到目标点(最低RTT、丢包)。
3.
node_exporter 安装与配置(服务器端)
- Debian/Ubuntu 快速命令:apt update && apt install -y prometheus-node-exporter || 使用二进制:wget https://.../node_exporter.tar.gz && tar -xzf && systemctl enable --now node_exporter.service。
- 验证:curl http://127.0.0.1:9100/metrics 应返回指标;在Prometheus的scrape_targets添加目标:- job_name: 'nodes' static_configs: - targets: ['ip:9100']。
4.
blackbox_exporter 用于链路、端口与HTTP探测
- 安装运行:docker run -d -p 9115:9115 prom/blackbox-exporter 或使用二进制。
- 配置示例(prometheus.yml 中):- job_name: 'blackbox-taiwan' metrics_path: /probe params: module: [tcp_connect] static_configs: - targets: ['example.com:80','8.8.8.8:53'] relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 你的blackbox地址:9115。
5.
Prometheus 指标与告警规则编写
- 常用监控项:node_cpu_seconds_total(CPU利用率)、node_memory_MemAvailable_bytes(可用内存)、node_network_receive_errs_total(网口错误)、probe_latency_seconds(blackbox RTT)、probe_success(探测成功率)。
- 示例告警规则(alert.rules.yml):- alert: CN2_High_Latency expr: histogram_quantile(0.95, sum(rate(probe_duration_seconds_bucket[5m])) by (le)) > 0.2 for: 5m labels: severity: critical annotations: summary: "台湾 CN2 RTT 95p >200ms"。
6.
Alertmanager 与通知通道配置
- Alertmanager 配置示例(alertmanager.yml):route: receiver: 'team' receivers: - name: 'team' email_configs: - to: ops@company.com slack_configs: - api_url: 'https://hooks.slack.com/services/...' channel: '#ops'。
- 流程要点:配置抑制(inhibit_rules)避免重复告警;将高优先级通过电话/SMS或PagerDuty推送。
7.
Grafana 仪表板与大盘搭建
- 步骤:在Grafana中添加Prometheus数据源 -> 导入或自建仪表板(重要面板:链路延迟/丢包、带宽使用、TCP重传、系统负载)。
- 建议:创建“台湾CN2健康”面板显示probe_success%、95P RTT、丢包率、接口错误,并设置阈值颜色。
8.
实时排查命令与检查清单
- 基本网络检查:ping -c 20 -i 0.2 目标IP(观察丢包、平均RTT);mtr -r -c 100 目标IP(查看跳数丢包与延迟);traceroute -T 目标IP(TCP方式)。
- 带宽/吞吐测试:在两端安装iperf3:服务器端 iperf3 -s,客户端 iperf3 -c server_ip -P 4 -t 60。观察丢包与速率。
9.
抓包与流量分析
- tcpdump 快速抓包:tcpdump -i eth0 host
and port 80 -w /tmp/cn2.pcap,若需限流写入:-c 10000。
- 分析:使用Wireshark或tshark查看TCP重传、RST、三次握手延迟;注意观察MTU、path MTU或SYN丢失。
10.
故障响应(Runbook)步骤:接到告警后的首要动作
- 1) 确认告警:在Prometheus/Grafana中打开告警详情,确认告警时间、受影响实例、指标趋势。
- 2) 快速定位:执行 ping/mtr/traceroute/iperf,确认是单机问题、机房链路问题还是上游CN2网络异常。记录所有原始输出。
11.
故障处理与升级策略
- 本地问题处理:若是CPU/内存/磁盘资源达到瓶颈,按优先级 kill 非关键进程、扩容实例或重启服务;若网口错误,检查网卡驱动、交换机端口状态(ethtool -S eth0)。
- 上游链路问题:若确认是CN2链路质量问题,收集mtr/traceroute/tcpdump并联系承运营商(提供时间戳、源/目的IP、样本),同时启用备用出口或BGP切换策略。
12.
演练与优化建议
- 定期演练:每季度进行一次故障演练(告警触发->值班响应->上游沟通->恢复),并记录SLA恢复时间与改进措施。
- 优化点:完善告警抑制规则、引入外部探测点(国内/台湾/国际)用于比对,监控链路抖动而不仅仅是瞬时阈值。
13.
问:如何判断是服务器本身问题还是CN2链路问题?
- 答:先在服务器上本地检查CPU/内存/disk(top、free、iostat),再用本地到目标外部节点的ping/mtr和blackbox探测比较。如果多台不同服务器对同一目的地都出现高丢包或高RTT,且本地资源正常,基本可以判断为CN2链路或上游网络问题;进一步用tcpdump抓包和路径traceroute确认。
14.
问:如果Prometheus误报或频繁抖动该如何处理?
- 答:首先检查告警规则的时间窗口与for时长,适当增加for延时(如5m->10m)或使用rate/avg等平滑函数;其次使用Alertmanager抑制重复告警并设置分级通知,最后排查采集间隔是否过短导致波动(将 scrape_interval 从15s调整为30s或60s 以减少噪声)。
15.
问:发生CN2链路故障时,运维第一时间需要向供应商提供哪些信息?
- 答:提供:故障发生时间(UTC/本地)、受影响IP/服务、mtr/traceroute输出、tcpdump抓包样本、Prometheus相关指标图(RTT/丢包曲线)以及如果有,BGP路由变化日志。越详细的信息能加速承运商定位并恢复链路。
来源:台湾cn2服务器 性能监控、告警与故障响应流程