1.
监控设计起点:确定监控对象与SLA
- 明确对象:核心交换机、边界路由、汇聚交换机、服务器、UPS、CRAC(空调)。
- 确定SLA:带宽可用率(99.95%)、链路延迟(内网<5ms,国际出口<80ms)与丢包(<0.5%)。
- 输出资产清单(CSV):设备名、管理IP、厂商、型号、SNMP团体或证书、联系人。
2.
基础监控指标与常用OID/Exporter
- 接口流量:ifInOctets/ifOutOctets(IF-MIB 1.3.6.1.2.1.2.2.1.10/16),周期取样计算带宽利用率。
- 接口状态:ifOperStatus(1.3.6.1.2.1.2.2.1.8);CPU/内存:cpmCPUTotal5min或设备自定义OID。
- 温度/风扇:ENTITY-SENSOR(entSensorValue),UPS电池/箱体状态通过SNMP或NUT。
- 对于Prometheus使用node_exporter(服务器)、snmp_exporter(网络设备),并在snmp_exporter配置targets指向管理IP。
3.
在设备上开启SNMP(以Cisco示例)
- SNMPv2c(快速测试):config t → snmp-server community MONITOR_RO RO
- SNMPv3(建议生产安全):config t → snmp-server group MONGRP v3 priv → username monuser auth sha MyAuthPass priv aes 128 MyPrivPass → snmp-server user monuser MONGRP v3 auth sha MyAuthPass priv aes 128 MyPrivPass。
- 验证:show snmp user、snmpwalk -v3 -u monuser -l authPriv -a SHA -A MyAuthPass -x AES -X MyPrivPass
.
4.
部署Prometheus + node_exporter(服务器端)
- 安装node_exporter:在Linux服务器上wget最新包 → tar xvf → sudo useradd --no-create-home nodeusr → 设置systemd服务并启动。
- 修改prometheus.yml:添加scrape_configs -> job_name: 'node' -> static_configs: targets: ['10.0.0.5:9100']。
- 重载Prometheus:systemctl restart prometheus,访问http://prometheus:9090/targets确认抓取状态为UP。
5.
配置snmp_exporter与Prometheus抓取网络设备
- snmp_exporter准备:编辑snmp.yml定义module(walk OID集合);在prometheus.yml加入job_name: 'snmp' 和 targets 列表。
- 示例targets:['192.168.1.1'],module: cisco。
- 验证:Prometheus targets页面看到snmp job UP,使用PromQL查看ifInOctets等指标。
6.
定义报警规则(Prometheus Alertmanager示例)
- 基础模板:groups -> rules -> alert: HighInterfaceUtilization expr: (rate(ifHCInOctets[5m]) + rate(ifHCOutOctets[5m])) / (ifSpeed) * 8 > 0.85 for: 5m labels: severity: warning annotations: summary: "接口{{ $labels.ifDescr }} 利用率高".
- 高优先级阈值:>0.95 for: 1m -> severity: critical。
- 报警抑制(hysteresis):使用for字段并设置恢复条件(利用率<0.75 for 3m)。
7.
在Zabbix/Nagios上实现告警策略(步骤)
- Zabbix:Host导入 SNMP 模板(Template Net Cisco IOS),配置 Items(接口流量、错误、丢包)、Triggers(示例:{host:ifInRate.avg(300)}>0.85*ifSpeed)。
- Action配置:Trigger severity -> Operations(发邮件/短信/执行脚本),添加依次执行(初级通知 -> 10分钟未恢复 -> 电话)。
- 测试:手动模拟接口流量或downlink,观察Trigger触发并接收通知。
8.
告警分级与通知渠道设计
- 级别:info / warning / critical / emergency。
- 通道:邮件(告警汇总)、SMS/电话(critical)、Slack/WeChat(团队通知)、PagerDuty(值班)。
- 运行操作:在Alertmanager配置routes根据severity路由到不同receiver,并设置恢复通知与重复抑制(group_wait、group_interval)。
9.
测试与演练:如何验证报警有效性
- 单点测试:使用snmptrap发送trap测试、Prometheus firing rule触发:curl -XPOST -d'[{...}]' http://alertmanager/api/v1/alerts。
- 恢复测试:确认恢复消息能清除报警并触发告警结束通知。
- 演练:每季度做一次事故演练(网络切换/链路断开),记录RCA与改进项。
10.
本地化注意事项(柬埔寨机房特殊考虑)
- 国际链路:监控海缆/ISP出口延迟与丢包,设置到新加坡/香港的专门延迟阈值。
- 多运营商策略:对不同ISP设置不同阈值与BGP监控(BGP session down立即告警)。
- 运维联系:在告警中包含本地团队与国际支援联系方式、权限及应急切换步骤。
11.
常见报警规则示例汇总(便于复制)
- 接口利用率:>85% for 5m(warning),>95% for 1m(critical)。
- 丢包率:ICMP丢包>1% for 5m 或接口ifInErrors/ifInUcastPkts>0.5%(warning)。
- 设备资源:CPU>85% for 10m,磁盘使用>90%。
12.
运维手册与故障处理清单
- 编写runbook:每个alert包含检查步骤(ping/traceroute/ssh/snmpwalk)、快速缓解(重启接口/路由切换)、升级路径(谁负责)。
- 监控SLA报表:每日/每周生成availability报表并存档,作为与客户或管理层沟通的依据。
13.
问:在柬埔寨机房部署监控,首要做什么?
问:首要做什么? 答:先做设备与链路清单并定义SLA,确认可访问管理IP与权限(SNMP/v3、SSH、API),然后分批部署agent或snmp_exporter,逐步导入Prometheus或Zabbix并建立基础报警规则,先覆盖核心交换、边界路由与UPS。
14.
问:如何避免告警风暴(重复/抖动)?
问:如何避免告警风暴? 答:设置合理的for/hysteresis(例如连续5分钟才报警),使用grouping与dedup(Alertmanager),对抖动指标使用平均值或percentile(5m avg或95th),并在Trigger中加入抑制规则只对持续故障报警。
15.
问:常见工具选型建议是什么?
问:常见工具选型? 答:小规模或混合环境建议Prometheus+Alertmanager+Grafana+snmp_exporter,企业级可用Zabbix或SolarWinds;结合Syslog/NetFlow分析工具可提升可视性,选择时考虑本地带宽、维护能力与合规性。
来源:柬埔寨机房网络监控指标与报警规则设置详解