1.
概述与目标
说明目标:保障在马来西亚使用 CN2 线路的服务器网络可达性与性能稳定。
小分段:列出关键关注点:链路丢包/延迟、带宽利用、BGP 会话、实例资源(CPU/内存/磁盘)、服务可用性与业务层探测。
2.
准备:监控组件与权限
步骤:选工具(推荐 Prometheus + node_exporter + blackbox_exporter + Alertmanager + Grafana)。
小分段:确保有 root/运维账号,开放抓取端口(Prometheus 9090、exporter 端口)、在马来西亚节点与监控服务器间互通,或使用分布式采集(Pushgateway/Prometheus remote-write)。
3.
部署指标采集(Node Exporter & SNMP)
Node Exporter 安装(Linux 例子):
sudo useradd --no-create-home --shell /bin/false node_exporter
wget https://.../node_exporter.tar.gz && tar -xzvf && sudo cp node_exporter /usr/local/bin/
创建 systemd 服务并 start/enable。
SNMP:对于交换机/路由器启用 snmpd,配置 community 字段并在 Prometheus 上使用 snmp_exporter。
4.
网络探测:部署 blackbox_exporter
blackbox 用于 ICMP/TCP/HTTP 合成监测。
安装并配置 blackbox.yml,示例 probe:icmp、tcp_connect(port 80)、http_2xx。
在 Prometheus scrape_configs 添加针对目标的 job,并设置不同的 module(icmp 用于连通性、tcp 用于端口可达、http 用于应用层响应)。
5.
Prometheus 配置关键指标采集
示例 scrape_configs:
- job_name: 'node'\n static_configs: {targets: ['server1:9100','server2:9100']}
- job_name: 'blackbox'\n metrics_path: /probe\n params: {module: [icmp]}\n static_configs: {targets: ['1.2.3.4','8.8.8.8']}\n relabel_configs: 将 __address__ 指向 blackbox_exporter。
小分段:增加 SNMP job 用于交换机端口错误/丢包统计。
6.
关键监控指标与阈值建议
网络类:
- 丢包率:packet_loss > 1% 持续 5min 告警;
- 延迟:rtt > 100ms(业务敏感可设 50ms)5min;
- 抖动(jitter)>30ms。
链路/路由:BGP 会话 down 立刻告警;AS path 频繁变更触发告警。
资源类:CPU 或 load >85% 5min;内存可用 < 15%;磁盘使用 >80%。
7.
编写 Prometheus 告警规则示例
示例规则(YAML 片段):
- alert: CN2_High_Packet_Loss\n expr: increase(node_network_transmit_errs_total[5m]) / increase(node_network_transmit_packets_total[5m]) > 0.01\n for: 5m\n labels: severity: critical\n annotations: summary/ runbook URL。
小分段:为 BGP 会话写 alert:bgp_session_up == 0 -> 立即告警并关联路由器名。
8.
报警路由与推送(Alertmanager)
配置路由策略:按 severity 分组、按 team label 路由到对应的 Slack/DingTalk/邮件。
小分段:设置抑制(inhibit_rules)防止同一故障产生重复告警;设置重复阈值与静默窗口;示例 webhook:curl -XPOST https://hooks.slack.com/services/...
9.
演练与自动化恢复
演练步骤:
- 人为制造故障(shutdown interface / iptables 丢包模拟 / tc netem 延迟)验证 blackbox 与 alert 生效;
- 编写自动化脚本(Ansible / Runbook 脚本),例如当 BGP down 自动重启 bgpd 或下发备用路径;
小分段:所有自动操作必须在告警说明中标注风险与回滚步骤。
10.
告警降噪与分级策略
实践建议:
- 首先区分临界(Critical)、主要(Major)、次要(Minor);
- 合并相同根因的告警(group_by: instance, job);
- 对短暂抖动使用 for: 3m/5m 延时触发,避免抖动告警风暴。
11.
Grafana 仪表盘与可视化
创建仪表:
- 网络面板:带宽、丢包、错误、TCP retransmits;
- 链路面板:BGP 会话状态、路由前缀数;
- 运行图:CPU/内存/磁盘与服务响应时间。
小分段:为紧急值使用红色阈值,提供快速定位链接到 Prometheus 的 runbook。
12.
运维流程与告警处理单(SOP)
制定处理流程:
- 接收告警->初步判断(network/server/service)->执行 runbook -> 如果未恢复,升级人工;
小分段:在告警注释中包含常用排查命令(ping/traceroute/tcpdump/ss/netstat/systemctl status)与定位模板。
13.
问:如何快速定位马来西亚 CN2 路由问题?
答:首先用 blackbox 的 icmp/traceroute/traceroute4 探针对目标执行多点探测,查看哪一跳出现高丢包或跳数突变;同时在路由器上检查 BGP 会话(show ip bgp summary)、AS path 变更日志,并在 Prometheus 的 BGP 指标面板上对比前后前缀数与邻居状态。
14.
问:报警阈值如何根据业务调整?
答:先做基线采集 7-14 天,统计 95/99 分位延迟与丢包,再以业务可接受值(例如游戏 <50ms、VoIP 抖动 <30ms、HTTP p95 <300ms)设阈值;对非关键业务放宽阈值并增加告警抑制,关键业务使用更严格的 for 与重复策略。
15.
问:发生多点丢包且 BGP 未断开,如何处理?
答:优先在不同探测点(海外节点/本地机房/云监控点)确认是否为上游问题;收集 tcpdump(接口方向)、ifconfig/ethtool 检查物理错误;若为上游链路退化,与运营商协商并提供 MTR/pcap 证据,同时启用备用链路或调整路由权重以降低业务影响。
来源:从运维角度看马来西亚cn2 服务器监控指标与报警策略设定