1.
准备与总体架构
先确定监控平台(建议Prometheus+Node Exporter+Alertmanager+Grafana)。在每台服务器安装node_exporter、在边缘交换机或路由器启用SNMP/NetFlow,集中收集到Prometheus/InfluxDB;Grafana做面板,Alertmanager做告警聚合和路由。
2.
部署Node Exporter与网络采集
在每台Linux服务器按步骤:1) 下载node_exporter二进制并设置systemd服务;2) 在交换机启用SNMP并用snmp_exporter或使用sFlow/NetFlow收集带宽流向;3) 在Prometheus的scrape_configs中添加job并用labels区分site/AS/机房。
3.
关键监控指标清单
推荐指标与采集方法:1) 接口带宽利用率(if_octets/ifSpeed或node_network_transmit_bytes);2) 丢包率与重传(ping丢包/SYN retrans /tcp_retransmits);3) 并发连接数(netstat/ss exporter);4) HTTP 5xx比例与响应时延;5) 磁盘IO、CPU、内存、进程数;6) BGP邻居与路由可达性。
4.
Prometheus采集与PromQL示例
在prometheus.yml添加 scrape job,并示例PromQL与阈值:1) 单口带宽利用率:rate(node_network_transmit_bytes{device="eth0"}[1m]) * 8 / (1024*1024) 表示Mbps;2) 告警规则示例(80%阈值): (rate(node_network_transmit_bytes{device="eth0"}[5m]) *8) / (1024*1024) > (0.8 * 1000) 假设接口为1Gbps时以1000Mbps计算;3) HTTP错误率:sum(rate(http_requests_total{code=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.02 。
5.
Alertmanager路由与通知实践
创建Alertmanager route按severity、site分流:1) severity=critical -> SMS/电话或PagerDuty;2) severity=warning -> 邮件/Slack;3) 对台湾站群单独建立静默窗口和轮班表。示例:使用group_interval=5m、repeat_interval=1h避免重复刷屏,配置接收器模板包含instance、接口、当前吞吐与阈值。
6.
告警规则实用样例
提供几个常用rules示例:1) 接口高利用告警:expr: (rate(node_network_transmit_bytes[5m])*8)/(1024*1024) > (0.85 * iface_speed_mbps) for: 5m;2) 丢包告警:expr: increase(node_netdev_errs[10m]) / increase(node_netdev_recv_packets[10m]) > 0.01 for:10m;3) 突增并发连接:expr: node_netstat_Ip_InCsumErrors > X 或 ss_established > 20000 for:2m。
7.
运行与误报控制步骤
实操要点:1) 先观察1周baseline再设阈值,使用百分位(p95、p99)减少噪声;2) 设置for延迟(例如5-10分钟)避免短时峰值告警;3) 建立自动化恢复脚本和手工确认流程(playbook),在告警信息里嵌入快速排查命令和Runbook链接。
8.
扩展到多站点与自动化
对站群请统一label(site、rack、isp、role),使用Prometheus federation或远程写入(remote_write)归集指标。用Grafana变动模板面板显示每站指标并建立按site筛选的告警抑制策略。
9.
故障排查示例步骤
收到“带宽高告警”时:1) 在Grafana按instance检查瞬时与历史流量;2) 用tcpdump抓包确认流量类型并定位来源IP;3) 检查连接数、HTTP请求分布、后端CPU是否瓶颈;4) 若是DDoS,启动限流/ACL并联络上游ISP。
10.
示例Prometheus告警条目
给出YAML片段参考:groups: - name: network.rules rules: - alert: HighInterfaceUtilization expr: (rate(node_network_transmit_bytes[5m])*8)/(1024*1024) > 800 for: 5m labels: severity: critical annotations: summary: "接口{{ $labels.instance }}利用率过高" description: "当前吞吐 {{ $value }} Mbps, 阈值 800 Mbps"
11.
问:如何为台湾站群精确设置带宽阈值?
答:先用1周历史采样算出p95峰值与日均,按治理目标取0.8*p接口速率或p95*1.1两者取小值;若流量波动大用百分位策略替代固定阈值。
12.
问:如何减少误报与重复告警?
答:在规则加for延迟(5–10分钟)、使用group_interval与repeat_interval、建立静默窗口和自动抑制(Alertmanager)以及基于流量分布的统计阈值可明显降低误报。
13.
问:当发现疑似DDoS时第一步怎么做?
答:立即启用流量采样与tcpdump确认源,临时在边界路由或防火墙做速率限制与黑洞策略,通知上游ISP并根据告警runbook逐步放开或调整规则。
来源:台湾站群大带宽服务器监控指标设定与告警规则实用样例