Zabbix监控Juniper EX交换机:从OID到完整模板的实战指南
2026/9/7 7:03:49 网站建设 项目流程

简介:面向Zabbix运维工程师与网络管理员,这份Zabbix模板为Juniper EX系列交换机提供开箱即用的监控方案,解决SNMP手工配置繁琐、告警不直观的痛点。包内共有3个文件,包含可导入的XML模板(定义了接口状态、CPU利用率、内存使用、端口流量等监控项及触发器、图形、屏幕)、配套的README说明文档(涵盖导入步骤与阈值调整指引)以及License授权说明,压缩包整体仅10KB,轻量易部署。模板基于SNMP协议与设备通信,用户可根据实际网络环境快速调整监控阈值和告警动作。目前已有418人学习下载,适用于需要快速建立Juniper EX系列交换机监控体系的中级运维人员,导入即可获得关键性能指标可视化与故障告警能力,显著降低配置成本。 搞网络运维的人应该都有这种感受:核心设备不缺监控,缺的是能让监控真正“看懂”设备、并且可落地的模板。我之前一直在用Zabbix自带的通用SNMP模板盯Juniper EX系列交换机,结果不是CPU数值半天不刷新,就是温度传感器一个都出不来,接口状态倒是正常,可一旦设备型号换到EX3300或者EX4300,表现又不一致。后来基于Zabbix-Template-Juniper-Ex-Series-Switch这套思路,把EX系列整机、板卡、接口、Poe、风扇电源的监控梳理成一套完整模板,才算真正把这个型号的监控痛点解决掉。这篇就记录一下我搭建这套模板的全部过程、关键OID和踩过的坑,给同样被网络硬件监控折磨的人一个可直接参考的版本。

1. 为什么需要单独给Juniper EX系列做一套模板

1.1 通用模板在EX系列上的水土不服

Zabbix自带的Template Network Juniper SNMPv2模板可以自动发现接口,也能把流量、错误包、丢包数拉出来,但也就止步于此了。交换机最关键的硬件状态,比如CPU占有率、内存余量、机箱温度、风扇转速、电源状态、Poe供电情况,通用模板基本无能为力。原因很简单:这些数据不是标准IF-MIB里定义的东西,而是各厂商通过私有MIB暴露出来的。

Juniper EX系列走的是jnxOperatingTable这套体系,OID基址在1.3.6.1.4.1.2636.3.1.13.1,跟Cisco的思科私有MIB、华为的HUAWEI-ENTITY-MIB完全是两套词汇。你用通用模板去读,Zabbix根本不知道哪个OID代表CPU,哪个代表温度,自然什么都监控不到。更麻烦的是EX系列不同型号、不同Junos版本对描述字段的命名方式有细微差别,即使你手动加了一个监控项,换台设备可能又失效。所以最省心的做法,是基于Juniper的MIB结构单独做一套模板,把“读哪些OID、怎么解析数据、什么时候告警”提前固化下来。

1.2 这套模板能监控什么

我搭好的这套Zabbix-Template-Juniper-Ex-Series-Switch模板,主要覆盖四类数据:

  • 系统级状态:设备名称、运行时间、SNMP联通性、Junos版本信息。
  • 硬件健康:CPU使用率、内存使用率、机箱温度、风扇状态、电源状态。
  • 接口链路:接口状态、入向/出向流量、单播/非单播包、错误包和丢弃包,支持LLD自动发现。
  • PoE供电:Poe接口供电状态、功率、电流、告警阈值,适合做接入交换机的场景。

模板里包含大约60个普通监控项、6个自动发现规则、15个触发器,外加2个自定义图形。这套东西不追求监控所有指标,而是按运维实际需要做取舍,能让你一眼看出交换机是不是“热了”“堵了”“挂了”。

2. 模板整体架构与指标选型

2.1 数据采集方式选SNMP v2c还是v3

Juniper EX系列默认开启SNMP v2c就够用,配置简单,Zabbix侧只需要填好community字符串。我在内网环境用的是v2c,原因有两条:一是EX系列默认配置里v2c的CPU消耗比v3低,性能有限的EX2200/EX3300在v3加密轮询下偶尔会拉高CPU;二是模板里的OID大多属于只读节点,不需要走复杂的SNMPv3用户认证和加密配置,v2c加ACL限制源IP就能把安全风险控制住。

如果你有合规要求必须上v3,模板里也已经预留了{$SNMP_SECNAME}、{$SNMP_AUTHPASS}、{$SNMP_PRIVPASS}这几个宏,在Zabbix主机配置里切换SNMP接口版本为SNMPv3,再把宏填上就行。需要注意Junos的SNMPv3配置里,如果开启了认证加密,Zabbix侧“Security level”必须选“authPriv”,不要选“authNoPriv”,不然Zabbix会一直报SNMP timeout。

2.2 核心监控项拆解

模板的核心数据来源是Juniper的jnxOperatingTable。这张表会把机箱里所有可管理的“运行单元”都枚举出来,包括主控板(Routing Engine)、线卡/交换芯片、风扇、电源、温度传感器。关键OID大致如下:

数据项OID说明
硬件描述1.3.6.1.4.1.2636.3.1.13.1.5jnxOperatingDescr,标识这个运行单元是什么
硬件状态1.3.6.1.4.1.2636.3.1.13.1.6jnxOperatingState,1为正常,2为故障
硬件温度1.3.6.1.4.1.2636.3.1.13.1.7jnxOperatingTemp,单位是摄氏度
CPU使用率1.3.6.1.4.1.2636.3.1.13.1.8jnxOperatingCPU,单位是百分比
内存使用率1.3.6.1.4.1.2636.3.1.13.1.9jnxOperatingMem,单位是百分比

这里有个关键点:jnxOperatingTable不是“一个OID代表一个具体部件”,而是整张表返回所有部件的数据,你需要根据jnxOperatingDescr里的字符串去区分谁是谁。比如description字段是“Routing Engine 0”,那它的CPU和内存就是主控板的;description字段是“FPC 0”或者直接显示“EX 4300 48P”,那对应的温度就是交换芯片的。

我用预处理“SNMP OID”里配置多项数据,再配合“正则表达式”匹配descr字段,把“RE 0”和“FPC 0”的数据分别拆成独立的监控项。如果你不想搞那么复杂,也可以只监控第一个返回值,但那样会出现主控板CPU和线卡CPU混在一起的问题,告警阈值没法精确设置。

2.3 自动发现规则(LLD)的价值

EX系列常见的接口数量从48口到上百口不等,还有一堆堆叠口、上行口,不可能手动一条条加监控项。模板里用了三个LLD规则:

  • 接口发现:基于IF-MIB的ifTable,过滤掉不用的子接口和down掉的虚拟接口,自动生成流量监控项。
  • 硬件单元发现:基于jnxOperatingTable,结合descr正则过滤,自动发现所有板卡、电源、风扇。
  • PoE接口发现:基于Juniper的POE MIB,只发现启用了PoE的接口,避免普通接口也挂上没意义的功率监控项。

LLD的好处不只是省事,更重要的是接口变化时能自动同步。比如设备从48口换成96口,或者新插了一个堆叠模块,Zabbix下次刷新时自动就把新接口监控项创建出来了,不需要人工干预。这是我坚持不用“模板+手动监控项”方案的根本原因。

3. 模板实操部署与配置

3.1 设备侧必须确认的三个前提

导入模板之前,先确认Juniper EX交换机这几项配置是齐的:

set snmp community public version v2c set snmp community public clients 10.0.0.0/8 set snmp community public view all set snmp location "DC-3F-RACK-A"

第一行是启用SNMP,第二行是限制只允许监控服务器所在的网段来采集,不要嫌麻烦直接配成0.0.0.0/0,否则整个内网都能读交换机状态,等于白给权限。第三行是确保community能读到全部MIB树,如果你用了更严格的view,有可能Zabbix读到一半就被拒绝,表现为部分监控项有数据、部分一直显示“不支持”。第四行可有可无,但建议写上,方便Zabbix资产记录里直接显示物理位置。

如果你用Junos的最新版本,可能还需要确认SNMP的MIB目录已经加载。一般默认都有,但排除问题时可以用这条命令快速验证:

show snmp mib get 1.3.6.1.4.1.2636.3.1.13.1.8.1.1.0

能返回具体数值,说明OID可读;如果返回“no such object”,大概率是MIB视图或OID路径写错了。

3.2 Zabbix侧导入模板与主机配置

模板文件是标准的XML格式,在Zabbix Web界面左侧菜单打开“数据采集 → 模板”,点“导入”,选择下载好的Zabbix-Template-Juniper-Ex-Series-Switch模板文件,导入完成后会看到模板列表里多出一条包含“Juniper EX”字样的记录。

接着给交换机创建主机,关键配置如下:

  • 主机名称:建议用完整的FQDN,比如sw-ex3300-01.example.local,方便资产识别。
  • 可见名称:写上机柜位置,比如“EX3300-接入-3F-A01”,方便大屏显示。
  • 模板:链接刚导入的Junipe EX模板。
  • SNMP接口:IP填写设备管理地址,端口保持161,版本选SNMPv2c,community写设备上配置的字符串。
  • 宏:确认{$SNMP_COMMUNITY}已经自动从模板里带过来,如果设备单独用了不同的只读字符串,在主机这一层覆盖即可。

保存之后,Zabbix会立刻开始一轮SNMP轮询。过几分钟去“检测 → 最新数据”里筛选这个主机,正常情况下就能看到大量CPU、内存、温度、接口流量的监控项陆续出数据。

3.3 宏参数与常见调整项

模板里我预置了几个宏,日常调整时不用改监控项表达式,直接改宏就行:

宏名称默认值作用
{$CPU_CRIT}90CPU使用率严重告警阈值
{$CPU_WARN}80CPU使用率警告阈值
{$TEMP_CRIT}60温度严重告警阈值
{$TEMP_WARN}50温度警告阈值
{$MEM_CRIT}90内存使用率严重告警阈值
{$POE_POWER_WARN}80PoE总功率警告百分比
{$SNMP_COMMUNITY}public只读团体名

宏的好处是同一套模板可以套到不同型号的EX设备上。比如EX4300堆叠后温度偏高,那我就在那台主机上把{$TEMP_WARN}覆盖成55,不影响其他设备;如果是办公区接入交换机,Poe功率预期不高,可以通过{$POE_POWER_WARN}单独压到70,更早发现问题。

3.4 图形与仪表盘配置

模板里带了两张图:一张是“EX硬件状态”,把主控CPU、内存、机箱温度画在同一个时间轴上,适合看整机健康度;另一张是“接口流量TOP”,把流量最大的几个口挑出来,适合看链路负载。如果你习惯用Zabbix新版仪表盘,可以手动把模板里的Graph放到仪表盘的“图形”组件里,再拖一个“问题”组件,实时告警一目了然。

实际部署时,我会再建一个“Juniper EX汇总”仪表盘,用“主机状态”组件把所有EX交换机列成一张表,再放一个“最近20条问题”视图。这样每天早上扫一眼就能发现有没有设备温度悄悄升高、接口有没有频繁闪断。

4. 常见问题与排查技巧实录

4.1 接口流量有数据,硬件监控全是“不支持”

这是最典型的问题。多半是Zabbix服务器的SNMP OID访问权限不对,或者设备侧MIB view只开放了部分OID树。先不用急着改模板,用snmpwalk手动测一下:

snmpwalk -v2c -c public <switch-ip> 1.3.6.1.4.1.2636.3.1.13.1

如果这条命令一条数据都返回不了,说明设备侧SNMP view没放行Juniper私有MIB。回到设备配置,确认community绑定的view是all,或者单独加一条:

set snmp community public view all

如果手动walk能出数据,但Zabbix还是不显示,检查Zabbix主机上SNMP接口是不是配了多个(比如同时又配了agent接口),Zabbix有时候会优先走错接口导致SNMP采集失败。把主机里除了SNMP接口以外的其他接口都删掉,重新测试。

4.2 jnxOperatingTable里同一类型数据有多个值

拿温度来说,EX4300可能同时返回FPC温度、中板温度、PSE温度,甚至堆叠后还有多台设备的槽位温度。如果模板里的监控项没有针对descr字段做区分,就会出现“温度”这个监控项在最新数据里反复跳,一会儿60一会儿30,告警率就很难看。

我的做法是给每个硬件实体单独建一个“主监控项”,走预处理“SNMP OID”抓整张表,然后通过“正则表达式”匹配descr中的关键字,把对应索引提取出来。比如提取“Routing Engine 0”对应索引的CPU值,就匹配Routing Engine 0,然后用“自定义倍数”或者“JavaScript”处理一下复杂逻辑。这里建议你在模板里就提前把这些预处理配置好,不要在每台设备上手动改,否则换了设备又得重来。

4.3 PoE监控数据一直为0

EX系列不是所有型号都能通过同一组OID读取PoE数据,EX2200、EX3300和EX4300的PoE MIB表结构并不完全一样。碰到数据为0,先用MIB浏览器查看Juniper的PoE MIB树,确认设备支持哪些表节点。很多时候问题是设备上没开启“poe telemetry”之类的扩展,导致SNMP返回空对象。

另一个容易被忽略的点:Zabbix的LLD过滤器里如果限制了only discover interfaces with operational status "up",而PoE接口本身物理状态正常但管理状态是shutdown,就永远不会被发现。建议PoE发现规则单独做,不要套用接口状态过滤,只看ifDescr是否包含ge-或xe-前缀就行。

4.4 触发器误报与阈值体系调优

模板刚上线时,最容易出现的是CPU尖峰误报。Junos在转发平面短暂拥塞时,主控CPU可能会瞬间冲到90%以上,但持续几秒就会降下来。所以触发器的表达式里不要用last(/host/jnxOperatingCPU)>85这种简单写法,至少要用min(/host/xxxx,5m)>85,取5分钟内的平均值再去比阈值,能滤掉大部分瞬时毛刺。

温度告警也要区分设备型号。EX2200的标称工作温度上限和EX4300不同,堆叠设备的温度温度又更高。我实际用下来,EX4300在夏天机柜散热一般的情况下,中板温度到50℃很常见,但不会影响运行。所以模板里温度告警默认值我给的比较宽:WARN 55℃、CRIT 65℃,真到65℃再拉紧急工单,避免大半夜被无意义的温度告警吵醒。

4.5 轮询频率与性能开销

Zabbix默认对每个SNMP监控项独立轮询,如果你给60个监控项全部设1分钟间隔,那Zabbix服务器每台设备每分钟要发起几十次SNMP请求,不仅浪费网络包,EX2200这种入门级设备还会抱怨CPU升高。我在模板里把间隔分了三级:

  • 硬件健康相关(CPU、内存、温度):1分钟轮询,因为这些指标变化快,而且跟故障强相关。
  • 接口流量、错误包:3分钟轮询,流量趋势用途,1分钟太浪费,5分钟又不够灵敏。
  • 设备状态、运行时间、版本信息:10分钟轮询,属于低频资产数据,不参与告警。

如果设备数量上到几百台,建议再开启Zabbix“批量SNMP采集(SNMP bulk request)”,模板里的LLD规则会自动走批量请求,能明显减少网络往返次数。我自己管200台EX交换机,Zabbix服务器CPU在轮询高峰期也就多占5%左右,完全扛得住。

5. 模板的二次开发与后续扩展想法

5.1 把堆叠状态纳入监控

这套模板目前是把每台EX设备当作独立主机处理,但实际网络里你大概率会把几台EX4300做虚拟堆叠,管理IP是同一个。这种情况下,jnxOperatingTable里会同时出现多个Routing Engine和多个FPC,定义“当前谁是主控”就需要读虚拟槽信息。我还没完全把这个功能固化成模板,目前的临时方案是额外加一个监控项,读取jnxVirtualChassis的信息,再用触发器比对“主控槽位是否发生变化”来感知堆叠主备切换。

如果有条件拿到测试机,建议你先在一台堆叠设备上导出完整的MIB树,把跟Virtual Chassis相关的OID点记下来,再往模板里加LLD规则。这样能避免现网主备切换时,Zabbix突然丢了一片监控项。

5.2 结合网络流量做容量规划

模板里的接口流量数据时间长了之后,天然就是一份容量趋势数据。我一般会用Zabbix的“趋势”功能,按小时/天聚合保存,然后定期把TOP接口数据导出来,看看哪些接入交换机端口长期超过60%利用率,提前把链路扩容或负载均衡的方案做掉,而不是等真正拥塞了再救火。

这里有个提示:接口流量监控项的“存储周期”至少设置成“存储30天趋势+90天历史”,不然容量分析的数据很快就被清理了。我自己习惯把历史设置成7天(触发器和短期排障用),趋势设置成365天(容量规划用),既省数据库空间,又不耽误长线分析。

5.3 告警通知与值班联动

模板里的触发器都设置了对应的告警等级,我把它分成两类:P3一般告警(温度偏高、接口错误包增多)、P1紧急告警(设备down、电源故障、温度严重超限)。Zabbix告警媒介动作里按严重级别做分派,P3只发邮件,P1直接短信加电话,避免所有人被海量不痛不痒的告警轰炸。

还有一个小技巧:在告警消息里加上“模板名称+设备型号+告警项当前值”,值班人员收到消息不用登录Zabbix就能判断是不是误报,比如“EX4300 FPC 0温度当前值62℃”比“温度异常”有用得多。

6. 最后再分享一个我踩了几次坑才想明白的点

不要试图用一个模板覆盖Juniper所有型号的交换机。EX2200、EX3300、EX4300、EX4600虽然都属于EX系列,但硬件表项、pnxOperatingDescription字段写法、PoE MIB结构都有差异。我最早图省事,一份模板全公司通用,结果EX4600上温度传感器一直抓不到,排查了很久发现它的Temp OID不在标准jnxOperatingTemp位置,而是要走另一个表的扩展节点。

所以我的建议是:模板里先按“EX通用 + EX4300扩展 + PoE扩展”打三个分离的IT服务模板集,通用部分管所有EX,扩展部分只链接到对应型号的主机上。这样既不影响大部分设备,又方便针对特殊型号做精细化调整。监控这活儿,从来不是配完就跑,而是要在真实设备上反复打磨,才能真正降低半夜起来处理告警的频率。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询