用夜莺零配置监控交换机(Switch Legacy)
给一组 IP 就能自动识别设备型号,采 CPU、内存和每个端口的流量、错包与状态,只支持 SNMP v2c。
最后校对于
switch_legacy 插件 fork 自 swcollector,面向「只想把交换机快速接进来」的场景:配置里给 IP 列表(单个、网段或范围),插件自动探测设备型号,用通用 OID 采集 CPU、内存使用率以及每个网口的流量、包数、错包、丢包和 up/down 状态,不用自己写 OID。
只支持 SNMP v2c,认证就是一个 community 字符串。把 switch_id_label 设为 ident,交换机会以 IP 为标识自动出现在夜莺的监控对象列表里。需要自定义 OID 或 SNMP v3 时换 SNMP 集成。规则覆盖端口 down、流量逼近带宽、错包升高和设备不可达。
模板里有什么
- 1 张仪表盘,共 14 个面板
- 7 条告警规则,每条附处置步骤
- Categraf 采集配置:
input.switch_legacy
怎么接入
-
安装 Categraf,把下面的配置放到
conf/input.switch_legacy/switch_legacy.toml,按实际地址和凭据改好后重启 Categraf。启动日志里出现input: local.switch_legacy started就说明插件已加载。# # collect interval# interval = "300s"switch_id_label = "ip"[mappings]"192.168.88.160" = "switch001.bj""192.168.88.161" = "switch002.bj"[[instances]]# # interval = global.interval * interval_times# interval_times = 1# use global unique string to specify instance# labels = { region="beijing" }ips = [# "172.16.2.1",# "172.16.4/24",# "192.168.56.102-192.168.56.120"]community = "public"# whether use index tagindex_tag = falseignore_ifaces = ["Nu", "NU", "Vlan", "Vl"]concurrency_for_address = 1000concurrency_for_request = 4ping_enable = trueping_mode_fastping = trueping_timeout_ms = 300ping_retries = 4# true: use gosnmp, false: use snmpwalksnmp_mode_gosnmp = truesnmp_timeout_ms = 1000snmp_retries = 5gather_ping_metrics = truegather_flow_metrics = truegather_cpu_metrics = truegather_mem_metrics = truegather_oper_status = falsegather_pkt = falsegather_broadcast_pkt = falsegather_multicast_pkt = falsegather_discards = falsegather_errors = falsegather_unknown_protos = falsegather_out_qlen = false# ignore metrics if limit > 0 and collected value > limitspeed_limit = 0pkt_limit = 0broadcast_pkt_limit = 0multicast_pkt_limit = 0discards_pkt_limit = 0errors_pkt_limit = 0unknown_protos_pkt_limit = 0out_qlen_pkt_limit = 0# [[instances.customs]]# metric = "AnyconnectSession"# tags = {}# oid = "1.3.6.1.4.1.9.9.392.1.3.35.0"# [[instances.customs]]# metric = "ConnectionStat"# tags = {}# oid = "1.3.6.1.4.1.9.9.147.1.2.2.2.1.5.40.6"# [[instances.customs]]# metric = "TempStatus"# tags = {}# oid = "1.3.6.1.4.1.9.9.13.1.3.1.3.1004" -
在夜莺「集成中心」里找到 Switch (legacy),把仪表盘和告警规则导入到业务组。
-
导入的告警规则默认是停用的。先确认指标已经入库,再按自己环境的阈值逐条启用。
内置仪表盘
| 仪表盘 | 面板数 |
|---|---|
| 网络交换机 | 14 |
内置告警规则
共 7 条。每条给出触发条件(PromQL)和告警后的处置步骤,导入后可以直接改阈值。
交换机不可达
S1 紧急 · 持续 2 分钟 · 触发条件:
switch_legacy_ping_up == 0
处置步骤:
- 从告警标签取设备标识,从另一台机器执行 ping 与 traceroute 二次确认,排除采集端自身网络问题;
- 能 ping 通说明是采集端到设备的路径问题,检查中间链路与 ACL;
- ping 不通则联系机房确认设备电源与指示灯状态,并尝试通过 Console 口登录;
- 确认设备故障的立即切换到冗余链路(检查堆叠/VRRP 是否已自动切换),并安排备件更换。
交换机 CPU 使用率过高
S2 警告 · 持续 5 分钟 · 触发条件:
switch_legacy_cpu_util > 80
处置步骤:
- 登录设备执行 display cpu-usage(华为)或 show processes cpu sorted(Cisco)确认是哪个进程占用;
- 占用高的常见是 ARP/广播风暴或大量报文上送 CPU,执行 display cpu-defend statistics 查看上送情况;
- 广播风暴的定位源端口并配置风暴抑制(storm-control),同时检查是否存在环路(STP 状态);
- 协议进程占用高的检查路由表规模与邻居数量,必要时做路由聚合。
交换机内存使用率过高
S2 警告 · 持续 5 分钟 · 触发条件:
switch_legacy_mem_util > 80
处置步骤:
- 登录设备执行 display memory-usage 或 show memory statistics 确认占用分布;
- 检查 MAC 表、ARP 表、路由表规模是否已接近设备规格上限;
- 表项异常膨胀的排查是否存在 MAC 泛洪攻击,配置端口安全限制单端口 MAC 学习数量;
- 确属业务规模增长的,评估设备规格是否需要升级,并清理不再使用的配置与 ACL。
交换机端口状态频繁翻转
S2 警告 · 持续 1 分钟 · 触发条件:
changes(switch_legacy_if_oper_status[10m]) > 2
处置步骤:
- 从告警标签取端口标识,登录设备执行 display interface <端口> 查看 up/down 次数与最后一次翻转时间;
- 优先怀疑物理层:检查光模块收发光功率(display transceiver diagnosis)是否在门限内,以及光纤与接头是否松动;
- 电口翻转的检查网线质量与两端的速率/双工协商是否一致;
- 排除物理问题后检查对端设备是否在反复重启,必要时先 shutdown 该端口避免持续引发全网重收敛。
交换机端口入向错包
S2 警告 · 持续 5 分钟 · 触发条件:
rate(switch_legacy_if_in_errors[5m]) > 1
处置步骤:
- 从告警标签取端口标识,执行 display interface <端口> 查看 CRC、Frame、Giants 等错误计数明细;
- CRC 错误为主的基本是物理问题:更换网线/光纤、清洁光模块接头、确认线缆长度未超标;
- 检查两端速率与双工是否协商一致,半双工与全双工不匹配会产生大量冲突错包;
- 更换线缆后执行 reset counters interface <端口> 清零计数,观察是否不再增长。
交换机端口入向带宽利用率过高
S2 警告 · 持续 10 分钟 · 触发条件:
switch_legacy_if_in_speed_percent > 80
处置步骤:
- 从告警标签取端口标识,执行 display interface <端口> 确认实时速率与端口协商速率;
- 用 NetFlow/sFlow 或在服务器侧抓包,确认流量由哪些业务贡献,排除异常流量(备份任务、数据同步跑错时段);
- 确属正常业务增长的,评估做链路聚合(Eth-Trunk / port-channel)扩容;
- 短期可对非关键流量配置 QoS 限速,保障关键业务带宽。
交换机端口出向带宽利用率过高
S2 警告 · 持续 10 分钟 · 触发条件:
switch_legacy_if_out_speed_percent > 80
处置步骤:
- 从告警标签取端口标识,执行 display interface <端口> 查看出方向速率与队列丢弃计数;
- 上联口打满的优先做链路聚合扩容,这是最直接的解法;
- 用流量分析确认是否有大流量业务应该走其他路径,必要时调整路由或做流量工程;
- 扩容前可对次要业务配置 QoS 队列限速,先保住关键业务。
相关链接
- [Switch (legacy) 模板源文件](https://github.com/ccfos/nightingale/tree/main/integrations/Switch_Legacy):仪表盘、规则和采集配置的 JSON 原文,欢迎提 PR。
- Categraf
switch_legacy插件文档:完整配置项和指标列表。 - SNMP:按 OID 自定义采集
- 导入仪表盘和告警规则
- 核对指标是否入库
- 全部集成目录