文章总结: 本文介绍了基于夜莺架构适配监控500台主流网络设备的方案,解决了思科Nexus系列与其他品牌设备的SNMP采集差异。通过Categraf配置及记录规则标准化,统一了多品牌交换机、路由器及防火墙的指标。文章提供了具体采集配置文件及从Categraf到VictoriaMetrics、Grafana的数据链路,助力构建统一的基础设施监控告警体系。 综合评分: 85 文章分类: 安全运营,网络安全,解决方案,安全工具
网络监控:夜莺架构模版适配 500 台国内主流品牌网络设备(包含交换机、路由器、防火墙)
原创
小斐Lab 小斐Lab
网络小斐
2026年1月15日 14:58 浙江
大家好,我是小斐呀。
在思科( Cisco )的产品线中 Catalyst 和 Nexus 是两大家族,这两个系列的交换机核心定位与应用场景就有如下本质区别:
-
Catalyst系列:园区网(Campus Network)的王者 -
主要用于企业办公楼、校园、医院等环境。
-
Nexus系列:数据中心(Data Center)的基石 -
主要用于服务器机房、云计算中心。
前面一篇文章已经说明在夜莺生态上监控网络设备的最佳实践,都是标准化之后的操作,可以直接套用该 Catalyst 系列所有类型的交换机。
但是 Nexus 系列交换机和 Catalyst 系列交换机基于 SNMP 协议采集本质上的 oid 是有所变化的,故整体的采集配置文件都需要做变化。
最终还是为了统一指标名称和监控告警,在采集侧做文章,采集侧的配置文件根据实际情况不同而调整,最终采集的指标也会因指标的单位和类型的不同而有差异,但终归还是需要通过记录规则回归到标准统一才行,这样从采集侧和时序库侧就完全统一化,上层的可视化和告警等等动作就可以统一。
至此思科交换机系列告一段落,标准化已经完成如下品牌:
- 思科交换机系列(
Catalyst和Nexus系列 ) - 华为交换机系列(
S园区系列 和CE数据中心系列 ) - 华三交换机系列 (
S园区和数据中心系列 ) - 华为路由器系列(
AR系列 ) - 华三路由器系列(
MSR系列 ) - 华为防火墙系列(
USG系列 ) - 华三防火墙系列(
SecPath F系列 ) - 飞塔防火墙系列(
FortiGate系列 ) - 奇安信防火墙系列(
NSG系列 ) - 深信服系列(
AD/AF/AC系列 )
更多配置适配在完善之中,后续可以根据交换机、防火墙、上网行为管理、负载均衡、存储、物理机等类型统一查看面板。
指标架构
交换机类型的指标统一在上一篇文章展开说明了,可以查看该篇文章预览交换机基础指标信息:
网络监控:一套适配超1000台主流品牌交换机的Grafana监控仪表板
这里我列出一下防火墙相关的统一指标,可能不同的防火墙有不同的指标,但是我尽量抽取共性和核心关注的性能指标,抽象统一起来:
上面是一些防火墙的基础共性关注指标,其他基于不同防火墙需要采集不同的自定义核心指标可以具体问题具体分析。
如果环境中有防火墙、交换机、路由器、以及其他一些硬件设备,那么如果统一走 SNMP 协议,可以使用如下架构:
统一走这个架构后 Categraf 采集暴露的指标就通过夜莺转储到 VictoriaMetrics 时序库之中,然后在通过夜莺控制台中导入对应品牌的记录规则,把指标名称以及单位换算标准统一即可,比如如下记录规则所示:
统一单位换算记录规则
某个品牌设备的记录规则
把采集配置加载起来,采集到指标后,导入对应的记录规则,然后在导入 Grafana 模版就完成可视化,最后导入对应的统一的告警规则也就完成闭环。
采集配置
这里就还是以思科 Nexus 系列交换机为例,看看 Categraf 是如何采集配置的:
思科 Nexus 系列指标标准化后,还是有以下几个模块:
- snmp_cisco_system.toml
- snmp_cisco_optical.toml
- snmp_cisco_interface.toml
- snmp_mapping.toml
这是四个采集模块文件是放在 Categraf 采集器下的 SNMP 插件配置之中,如下所示:
我们把 Categraf 部署在 /opt/categraf/ 目录下:
# /opt/categraf/conf/input.snmp 目录
# 删除改目录下所有的配置文件
rm -rf *
把四个采集模块文件放入对应的采集目录下,这个采集模块文件相当于 zabbix 的采集模版。在使用之前需要对 agents 的 IP 信息修改为你需要监控的设备 IP ,相关的 SNMP 认证信息以及 mib 文件所在的 path 路径设置好即可,还有自定义的 labels 需要修改之外,其他就不需要过多干预。
在正式采集之前我建议是复制一份测试的
categraf进程,进行重命名,然后把验证你修改的配置文件采集输出是否正常。
# 单一测试配置文件输出指标是否正常
# 这里复制一份 categraf-test 单独进程
# 把还未完全测试好的配置放在该目录下测试输出
# 等每个模版的数据测试好后,在统一导入正式的采集进程中
/opt/categraf-test/categraf --test --debug --inputs snmp
思科 Nexus 系列的 OID 是完全有所变化的,特别是在 CPU 、 内存 、 电源状态 、 风扇状态 等等都有所异同,下面是关于思科 Nexus 系列系统资源类( snmp_cisco_system.toml )指标采集配置:
# 思科 Nexus 数据中心交换机
[[instances]]
agents = [
"udp://192.168.10.10",
"udp://192.168.10.11"
]
# metrics_name_prefix = "cisco_"
interval_times = 2
labels = { region = "shanghai", role = "switch", layer = "core" }
timeout = "3s"
version = 2
community = "public"
path = ["/opt/categraf/mibs/cisco"]
translator = "gosmi"
agent_host_tag = "ident"
retries = 2
max_repetitions = 15
health_check_interval = "60s"
health_check_timeout = "5s"
max_fail_count = 3
recovery_interval = "5m"
[[instances.field]]
oid = "SNMP-FRAMEWORK-MIB::snmpEngineTime.0"
name = "uptime_seconds"
[[instances.field]]
oid = "SNMPv2-MIB::sysName.0"
name = "device_name"
is_tag = true
[[instances.field]]
oid = "CISCO-SYSTEM-EXT-MIB::cseSysCPUUtilization.0"
name = "system_cpu_usage_percent"
[[instances.field]]
oid = "CISCO-SYSTEM-EXT-MIB::cseSysMemoryUtilization.0"
name = "system_mem_usage_percent"
[[instances.table]]
name = "system"
index_as_tag = true
inherit_tags = ["device_name"]
[[instances.table.field]]
oid = "CISCO-ENTITY-FRU-CONTROL-MIB::cefcModuleOperStatus"
name = "entity_oper_status"
[[instances.table.field]]
oid = "CISCO-ENTITY-FRU-CONTROL-MIB::cefcModuleUpTime"
name = "entity_uptime_seconds"
[[instances.table]]
name = "system"
index_as_tag = true
inherit_tags = ["device_name"]
[[instances.table.field]]
oid = "ENTITY-MIB::entPhysicalName"
name = "entity_name"
is_tag = true
[[instances.table.field]]
oid = "CISCO-ENTITY-FRU-CONTROL-MIB::cefcFanTrayOperStatus"
name = "fan_status"
[[instances.table]]
name = "system"
inherit_tags = ["device_name"]
index_as_tag = true
[[instances.table.field]]
oid = "ENTITY-MIB::entPhysicalName"
name = "entity_name"
is_tag = true
[[instances.table.field]]
oid = "CISCO-ENTITY-FRU-CONTROL-MIB::cefcFRUPowerOperStatus"
name = "power_status"
[[instances.processor_enum]]
metrics = ["*status"]
[instances.processor_enum.value_mappings]
1 = 2
2 = 1
这里我需要把值含义保持一致,就通过 instances.processor_enum 配置把指标值转换一下。更多配置信息请到星球网盘中领取。
数据看板
打开 Grafana 导入 grafana_vm.json 即可看到指标数据:
这些是基于标准化配置采集的指标呈现出来的基础面板,还可以根据自己的需求进行自定义修改。
网盘中采集配置和模版路线有三类:
Categraf-->VictoriaMetrics-->GrafanaCategraf-->Nightingale-->VictoriaMetrics-->GrafanaSNMP Exporter-->vmagent-->VictoriaMetrics-->Grafana
在使用的时候请注意这些架构对应的模版和配置,不然会出错,新手很容易懵逼的状态,现在我主要推的是第二个和第三个路线,主要看你选择什么采集器,以及内部基于什么考量来做选择。
end
如果您的环境下也有多个品牌的网络设备需要统一化采集和监控,也想构建一套比较合适的网络基础设施统一监控告警系统,可以试试这套开源架构,有深入需求可以加我沟通。
我建立了一些对关于网络和基础设施等相关的监控告警群,针对这块的有需求或者想沟通交流,可以加入到群里交流即可,可公众号后台私信加我,我拉你进群。
📣欢迎朋友们关注公众号📢📢:【网络小斐】!
🙋♂️有想法的朋友也可以加我沟通,朋友🔘做个点赞之交!😂😂
欢迎点赞 👍、收藏 💗、关注 💡 三连支持一下,我们下期见~✨
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络小斐 小斐Lab 小斐Lab《网络监控:夜莺架构模版适配 500 台国内主流品牌网络设备(包含交换机、路由器、防火墙)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论