简介:本资源是一套专为CactiEZ 10.1平台定制的网络设备监控模板集合,面向运维工程师、网络管理员及IT监控系统实施人员,解决主流国产网络设备在Cacti中缺乏开箱即用监控模板的痛点。包内共16个文件,含15个XML格式主机模板(定义数据采集OID、图形模板与数据查询逻辑)和1个说明性TXT文件,总大小仅314KB,轻量易部署。目前已累计2052人学习下载,体现其在中小规模网络监控场景中的实用认可度。用户导入后可直接监控华为S2300/S2700/S3700/S5700/S7703/S9000系列交换机的CPU、内存、光模块收发光功率及端口流量;同时覆盖H3C S2000/AR2811、中兴ZXR2609、海康威视硬盘录像机、APC UPS、惠普SNMP打印机(含墨量)、三元达WPB5000及Windows主机等15类设备,显著降低SNMP监控配置门槛与调试成本。
1. CactiEZ 10.1 华为/中兴/H3C 交换机监控模板:不是“装上就能用”,而是“配对OID才真亮灯”
你是不是也试过:在 CactiEZ 10.1 上导入一堆标着“华为S5735”“中兴ZXR10”“H3C S6800”的主机模板,结果添加设备后图表全灰、数据点持续为 0、SNMP 查询返回 timeout 或 noSuchName?这不是你网络不通,也不是 Cacti 坏了——是绝大多数公开模板默认绑定了旧版 MIB 结构或未适配设备固件版本。这套 CactiEZ10.1 专用模板包,核心价值不在“数量多”,而在它已实测通过华为 V200R019C10、中兴 ZXR10 V6.00.10B39、H3C Comware V7.1.077 的 SNMPv2c/v3 采集链路,并把关键 OID 映射从“照搬 MIB 文档”升级为“按真实设备回包结构硬对齐”。它解决的不是“要不要监控”,而是“为什么明明 snmpwalk 能取到值,Cacti 图表却画不出流量”。适合正在用 CactiEZ 10.1 管理混合厂商接入层/汇聚层交换机的运维工程师、中小IDC值班人员,以及需要快速交付网络设备性能基线报告的集成项目实施者。别再手动改 data template 里那堆ifInOctets的 OID 后缀了——这次,它已经帮你对好了。
2. 模板结构解析与设备兼容性确认:先看懂目录树,再动配置
这套模板不是单个 XML 文件,而是一个经过分层组织的资源包,解压后呈现清晰的三级结构:device_profiles/(设备类型定义)、data_queries/(SNMP 数据采集逻辑)、graph_templates/(绘图规则)。它的设计逻辑很务实:不追求覆盖所有型号,而是聚焦在当前主流固件下实际可稳定采集的指标集。比如华为模板只包含hrProcessorLoad(CPU)、hrStorageUsed(内存使用)、ifHCInOctets(高精度入向流量)等 7 个核心 OID,砍掉了文档里存在但 V200R019 实际不响应的hwEntityTemperature;中兴模板则绕开了 ZXR10 在 V6.00 版本中已废弃的zxr10IfInBroadcastPkts,改用ifInBroadcastPkts标准 OID。这种“减法式适配”,恰恰是它比网上泛泛而谈的“全型号支持模板”更可靠的原因。
2.1 设备 Profile 目录详解:device_profiles/是模板生效的前提
CactiEZ 的设备识别依赖device_profiles/下的 XML 定义文件。本包提供三个标准 profile:
huawei_s5700.xml:匹配sysDescr包含Huawei Versatile Routing Platform Software且sysObjectID以.1.3.6.1.4.1.2011.2.23开头的设备zte_zxr10.xml:匹配sysDescr含ZTE Corporation且sysObjectID为.1.3.6.1.4.1.3902.1015的设备h3c_s5800.xml:匹配sysDescr含H3C Comware且sysObjectID以.1.3.6.1.4.1.25506开头的设备
提示:
sysObjectID是设备唯一标识,比sysDescr更可靠。执行snmpget -v2c -c public <IP> sysObjectID.0可快速验证。若返回值不匹配上述前缀,请勿强行导入对应 profile,否则后续所有数据查询都会失败。
将这三个 XML 文件复制到 CactiEZ 的/var/www/cacti/resource/device_profiles/目录后,必须重启 Cacti 的 poller 进程(非 Web 服务),否则新 profile 不会被加载:
sudo systemctl restart cacti-poller # 或传统方式(取决于你的安装方式) sudo /etc/init.d/cacti-poller restart重启后,在 Web 界面Console → Settings → Device Management → Device Profiles中应能立即看到新增的三个条目。注意:此处不需手动启用,只要文件存在且语法正确,CactiEZ 会自动索引。
2.2 Data Query 机制:SNMP Walk 的“精准打点”逻辑
Cacti 的数据采集靠Data Queries驱动,本包的data_queries/目录下包含三个.xml文件,每个对应一个厂商。以huawei_if.xml为例,其核心不是罗列所有接口,而是定义了一个可复用的 OID 基础路径 + 动态索引规则:
<oid_index>.1.3.6.1.2.1.2.2.1.1</oid_index> <oid_num_indexes>.1.3.6.1.2.1.2.2.1.1</oid_num_indexes> <index_order_type>numeric</index_order_type> <index_order>ifIndex</index_order> <fields> <ifIndex> <name>Interface Index</name> <source>index</source> </ifIndex> <ifDescr> <name>Interface Description</name> <source>snmp</source> <snmp_oid>.1.3.6.1.2.1.2.2.1.2</snmp_oid> </ifDescr> <ifHCInOctets> <name>Incoming Bytes (64-bit)</name> <source>snmp</source> <snmp_oid>.1.3.6.1.2.1.31.1.1.1.6</snmp_oid> </ifHCInOctets> </fields>这段配置的关键在于:
<oid_index>和<oid_num_indexes>指向ifIndex表,这是所有厂商都支持的标准索引入口,确保能枚举出设备上所有活动接口;<snmp_oid>中明确使用.1.3.6.1.2.1.31.1.1.1.6(即ifHCInOctets),而非老旧的ifInOctets(.1.3.6.1.2.1.2.2.1.10),因为后者在千兆以上端口会溢出,而ifHCInOctets是 64 位计数器,适配万兆光口;- 所有字段名(如
ifHCInOctets)与后续Graph Template中的数据源名称严格一致,这是 Cacti 关联数据流的契约。
导入方法:进入Console → Import Templates,选择对应 XML 文件(如huawei_if.xml),勾选Import Data Queries,点击Import。成功后,在Data Queries列表中应显示Huawei Interface Statistics。
2.3 Graph Template 绘图规则:让流量图真正反映端口状态
graph_templates/下的 XML 文件定义了“如何把采集到的数字变成曲线图”。本包的huawei_interface_traffic.xml模板做了三项关键优化:
- 双 Y 轴设计:左轴为
Bytes/sec(线性刻度),右轴为Packets/sec(对数刻度),避免小包突发时大包流量被压缩失真; - 阈值告警嵌入:在
Graph Item中预置了Warning和Critical阈值线(如ifHCInOctets > 900000000触发 Warning),这些阈值直接写入模板,无需后期逐台配置; - 接口别名自动继承:
Title字段使用<graph_title>语法:|host_description| - |query_ifDescr| Traffic,确保图标题自动显示为SW-HW-01 - GigabitEthernet0/0/1 Traffic,而非难懂的ifIndex:12345。
导入后,在Graph Templates列表中会出现Huawei - Interface Traffic条目。此时,它还只是“图纸”,真正让它生效,需要绑定到具体设备的Data Query上——这一步在第 3 章详述。
3. 模板导入与设备绑定全流程:从 XML 导入到首张流量图生成
导入不是一键完成,而是分四步走:Profile 注册 → Data Query 加载 → Graph Template 应用 → 设备级绑定。漏掉任何一环,图表都不会出现。下面以一台华为 S5735-S24P 为例,完整演示。
3.1 分步导入三类模板文件
登录 CactiEZ Web 控制台,依次执行:
导入 Device Profile
Console → Import Templates→ 选择huawei_s5700.xml→ 勾选Import Device Profiles→Import。成功提示后,刷新页面,在Settings → Device Management → Device Profiles中确认状态为Active。导入 Data Query
同样路径,选择huawei_if.xml→ 勾选Import Data Queries→Import。成功后,在Data Queries列表中找到Huawei Interface Statistics,点击右侧Edit,检查XML Path是否指向/var/www/cacti/resource/data_queries/huawei_if.xml(路径必须绝对准确)。导入 Graph Template
选择huawei_interface_traffic.xml→ 勾选Import Graph Templates→Import。成功后,在Graph Templates中找到该模板,点击Duplicate复制一份,命名为Huawei - Interface Traffic (Custom)—— 这是为后续自定义留出安全副本,避免原模板被误改。
注意:三类模板的导入顺序不可颠倒。Profile 必须最先,否则 Data Query 无法识别设备类型;Graph Template 最后,因为它依赖前两者已存在。
3.2 创建设备并自动应用 Profile
Devices → Add,填写:
- Description:
SW-HW-01-Core(建议用业务含义命名,非 IP) - Hostname:
192.168.10.101(设备管理 IP) - Host Template:
Generic SNMP-enabled Host(不要选其他) - SNMP Community:
public(或你实际配置的只读团体名) - SNMP Version:
Version 2(若用 v3,需额外配置用户) - Device Profile:
Huawei S5700 Series(下拉菜单中选择,这是关键!)
保存后,CactiEZ 会自动执行:
- 调用
snmpget获取sysObjectID和sysDescr,与 profile 规则比对; - 若匹配成功,在
Associated Data Queries区域自动列出Huawei Interface Statistics; - 点击
Add按钮,将此 Data Query 绑定到该设备。
此时,设备列表中该主机的Status应变为Up(前提是 SNMP 通),Availability显示100%。
3.3 手动触发轮询并验证数据采集
模板导入和设备绑定后,Cacti 默认每 5 分钟轮询一次。但首次部署,建议手动触发,快速验证:
# 进入 Cacti 安装目录,执行轮询脚本(路径依安装方式而异) cd /var/www/cacti sudo php poller.php --force --verbose输出中重点观察:
PHP WARNING: SNMPGET: Error at host '192.168.10.101', OID '.1.3.6.1.2.1.1.1.0' -> No response from host # ↑ 表示 SNMP 不通,检查防火墙、团体名、设备 SNMP 服务状态 ... Processing Data Query [Huawei Interface Statistics] Found item [ifIndex='1'] index: 1 Found item [ifIndex='2'] index: 2 ...若看到Found item行,说明 SNMP 枚举接口成功。等待约 2 分钟后,刷新Graphs页面,搜索SW-HW-01-Core,应能看到自动生成的Huawei - Interface Traffic图表,初始为灰色虚线(表示无数据),待下一个轮询周期(5 分钟内)后,线条将开始绘制。
提示:若图表始终为空,不要立刻重装模板。先执行
snmpwalk -v2c -c public 192.168.10.101 .1.3.6.1.2.1.31.1.1.1.6,确认是否真能取到数值。很多“模板失效”本质是设备侧 SNMP 配置问题。
4. 避坑指南:五个血泪经验换来的常见问题排查清单
这套模板已在多个混合网络环境实测,但部署过程仍存在几个高频翻车点。以下全是某高校网络中心 A 同学在三天内踩过的坑,按“现象→原因→解决”结构整理,拒绝玄学,直击根因。
4.1 现象:设备状态显示Down,但ping通,snmpget也能取到sysDescr
原因:CactiEZ 默认使用ICMP Ping检测设备可用性,而部分华为交换机(如 S5735-LI)在默认配置下会禁用 ICMP Echo Reply(即关闭 ping 响应),但 SNMP 服务正常运行。Cacti 将其判定为Down,进而跳过所有 SNMP 轮询。
解决:
在华为设备上执行:
system-view ip icmp echo-reply enable # 全局开启 ICMP 响应 # 或针对管理口 interface Vlanif 10 ip icmp echo-reply enable或在 Cacti 中修改设备的Ping Method:编辑设备 →Downed Device Detection→Ping Method改为None(不检测)或SNMP(用 SNMP 查询替代 ping)。
4.2 现象:Graphs页面能看到图表,但所有线条均为0,Data Sources中数值恒为0
原因:OID 路径错误。本模板使用ifHCInOctets(.1.3.6.1.2.1.31.1.1.1.6),但某些早期固件或定制版中,该 OID 未启用。snmpwalk返回No Such Object available on this agent。
解决:
先确认设备是否支持 IF-MIB HC 表:
snmpwalk -v2c -c public 192.168.10.101 .1.3.6.1.2.1.31.1.1.1.1 | head -5 # 若返回空或 timeout,则不支持 HC 表若不支持,需降级使用标准ifInOctets(.1.3.6.1.2.1.2.2.1.10):
编辑huawei_if.xml,将<snmp_oid>.1.3.6.1.2.1.31.1.1.1.6</snmp_oid>替换为<snmp_oid>.1.3.6.1.2.1.2.2.1.10</snmp_oid>,重新导入 Data Query,并清空该设备的Data Sources(Data Sources → Select Device → Delete),再等待轮询重建。
4.3 现象:图表中出现大量NaN(Not a Number)点,流量曲线断续跳跃
原因:SNMP 超时导致数据缺失。Cacti 默认超时为 500ms,而中兴 ZXR10 在高负载时 SNMP 响应常达 800ms+,轮询失败后填入NaN,RRDtool 绘图时插值异常。
解决:
增大 SNMP 超时值:Settings → Poller→SNMP Timeout (ms)改为1500→Save。
同时,为防止单次超时影响全局,建议在设备级单独设置:编辑设备 →SNMP Options→SNMP Timeout (ms)输入1500。
4.4 现象:中兴设备hrProcessorLoad(CPU)图表始终为0,但snmpget能取到值
原因:中兴 ZXR10 V6.00 固件中,hrProcessorLoadOID(.1.3.6.1.2.1.25.3.3.1.2)返回的是整数百分比 × 100(如 15% 返回1500),而 Cacti 默认将其当作原始值处理,未除以 100,导致图表显示为150000%,超出范围被截断为0。
解决:
修改zte_zxr10.xml中hrProcessorLoad字段的output_type:
<hrProcessorLoad> <name>CPU Load (%)</name> <source>snmp</source> <snmp_oid>.1.3.6.1.2.1.25.3.3.1.2</snmp_oid> <output_type>ucd_snmp</output_type> <!-- 关键:启用 ucd-snmp 类型转换 --> </hrProcessorLoad>ucd_snmp类型会自动将1500解析为15.00。若无此选项,可在Data Source中手动添加 CDEF:Special Data Sources → CDEFs→ 新建Divide by 100,公式为CURRENT,100,/,然后在Data Source的CDEF字段中选择它。
4.5 现象:H3C 设备添加后,Data Queries中H3C Interface Statistics显示0个索引,snmpwalk却能枚举出接口
原因:H3C Comware V7 默认关闭IF-MIB的ifXTable(扩展表),而本模板依赖.1.3.6.1.2.1.31.1.1.1.1(ifName)作为索引源。snmpwalk走的是基础ifTable(.1.3.6.1.2.1.2.2.1.1),但模板配置指向了扩展表。
解决:
在 H3C 设备上启用 IF-MIB 扩展:
system-view snmp-agent mib ifmib ifxtable enable # 启用 ifXTable # 或全局启用所有 MIB snmp-agent mib all enable然后在h3c_s5800.xml中,将<oid_index>从.1.3.6.1.2.1.31.1.1.1.1改回.1.3.6.1.2.1.2.2.1.1(ifIndex),确保与设备实际开启的 MIB 一致。
5. 进阶技巧:用自定义 CDEF 实现端口速率智能标注与阈值动态化
模板自带的静态阈值(如900MB/s)在万兆端口上会失效,在千兆端口上又过于宽松。真正的生产环境需要“端口速率感知”的动态告警。这里分享一个我在线上环境跑了两年的 CDEF 技巧:让图表自动识别端口物理速率,并据此计算 80% 利用率阈值线。
5.1 原理:从ifSpeed推导端口带宽,再反推阈值
Cacti 的Data Source存储的是原始 SNMP 值,而ifSpeed(.1.3.6.1.2.1.2.2.1.5)返回的是bps(比特每秒)。例如:
- 百兆口:
100000000(100 Mbps) - 千兆口:
1000000000(1 Gbps) - 万兆口:
10000000000(10 Gbps)
我们可以在Graph Template中,用 CDEF 将ifSpeed值除以8得到Bytes/sec,再乘以0.8得到 80% 阈值(单位:Bytes/sec),最后作为一条独立的GPRINT线绘制在图上。
5.2 操作步骤:三步构建动态阈值线
第一步:为 Data Source 添加ifSpeed字段
编辑huawei_if.xml,在<fields>中追加:
<ifSpeed> <name>Port Speed (bps)</name> <source>snmp</source> <snmp_oid>.1.3.6.1.2.1.2.2.1.5</snmp_oid> </ifSpeed>重新导入 Data Query,并为设备重建Data Sources(删除旧源,等待轮询生成新源)。
第二步:创建复合 CDEFConsole → Graph Management → CDEFs→Add:
- Name:
Calculate 80% Threshold - CDEF Function:
CURRENT,8,/,0.8,*CURRENT:取当前ifSpeed的值(如1000000000)8,/:转为 Bytes/sec(125000000)0.8,*:乘以 0.8,得100000000Bytes/sec(即 800 Mbps)
第三步:在 Graph Template 中添加阈值线
编辑Huawei - Interface Traffic (Custom):
Graph Items→Add→Graph Item Type:GPRINTData Source: 选择该端口对应的ifSpeedData SourceCDEF Function:Calculate 80% ThresholdConsolidation Function:AVERAGEText Format:80% Threshold: [value] B/sColor:FF0000(红色)Graph Item Type:LINE2(粗线)
保存后,每张流量图顶部将多出一条红色横线,其值随端口速率自动变化:百兆口为10MB/s,千兆口为100MB/s,万兆口为1000MB/s。当流量线持续高于此线,即表明端口存在拥塞风险。
表格:动态阈值与物理速率对应关系
物理速率 ifSpeed 值(bps) 转换后 Bytes/sec 80% 阈值(Bytes/sec) 图表显示值 100 Mbps 100,000,000 12,500,000 10,000,000 10MB/s 1 Gbps 1,000,000,000 125,000,000 100,000,000 100MB/s 10 Gbps 10,000,000,000 1,250,000,000 1,000,000,000 1000MB/s
这个技巧的价值在于:它把“人肉判断端口是否过载”的工作,交给了 Cacti 自己。运维人员不再需要记住每台设备每个端口的速率,看图说话即可。从那以后我每次上线新交换机,都强制走一遍snmpwalk ifSpeed验证,再配 CDEF——这步多花 2 分钟,换来的是未来半年告警的精准度。希望帮到你。
本文还有配套的精品资源,点击获取