
简介CactiEZ 10.1用户如需监控华为、中兴、H3C等网络设备可直接导入这套主机监控模板。资源共16个文件15个XML模板与1个使用说明TXT压缩包仅314KB覆盖APC UPS、H3C AR/S2000系列、华为S2300/S2700/S3700及S7703/S9000/S5700、中兴ZXR2609、海康威视硬盘录像机、惠普网络打印机支持墨量监控等场景部分模板还能采集CPU、内存、光功率和流量数据。每份XML按Cacti主机模板格式封装导入后即可出现对应监控项省去手工编写OID与图像模板的重复工作。目前已有2053人学习下载适合机房运维或网管人员快速补齐多厂商设备监控视图提升巡检效率。1. CactiEZ 10.1 监控模板让华为、中兴、H3C 交换机在同一张图上现形CactiEZ 是不少网管机房里“压箱底”的集成监控盘10.1 这套版本把 MySQL、RRDtool、Spine 都预装好了但真正让人头疼的是拿到新交换机后模板得自己画CPU、内存、端口流量的 OID 得一条条查。这份华为、中兴、H3C 三厂商的现成主机监控模板正好把“从零配置监控项”这一段砍掉导入后绑定设备就能出图。适合正在维护混合品牌交换机、又不想在 Zabbix 和 Prometheus 里重造轮子的朋友。下面我按自己的落地流程把这套模板怎么用、参数怎么调、会踩哪些坑讲清楚。2. 模板落地前的地基数据链路、文件结构与选型理由2.1 数据链路SNMP 采数到 RRD 绘图的完整路径监控一张端口流量图后台其实有一条固定链路交换机上的 SNMP Agent 被动响应请求Cacti 的 Poller 定时发起 UDP 161 端口查询拿到数值后交给 RRDtool 写入环形数据库最后通过 Graph 模板把 rrd 文件渲染成 PNG。这套 CactiEZ 模板优化的正是“查询什么”和“怎么画”这两段而不是重新搭一套采集框架。我在实际使用中会把轮询器从默认的 cmd.php 换成 Spine因为模板里涉及多条私有 OID 查询cmd.php 在设备多时 CPU 会跑满。切换位置在 Cacti 后台的 Settings - Paths填好 Spine 路径后到 Poller 里选 spine。如果发现图形断断续续先看 Cacti 日志里有没有 poller 超时的记录grep -i spine /var/log/cacti/cacti.log | tail -20注意日志路径不固定取决于你装 CactiEZ 时的目录约定。上面是常见位置找不到就用find / -name cacti.log定位。这一段日志能直接反映是 SNMP 不通还是轮询超时。Spine 与 cmd.php 的核心差别在于并发机制cmd.php 每个设备起一个 PHP 进程Spine 用 C 语言多线程轮询对 30 台以上的交换机场景优势明显。2.2 模板文件拆解三类模板与脚本抽数的关系从这套模板包里解压后你会看到若干 XML 文件和一些 PHP/Perl 脚本。Cacti 的模板体系分三层搞清楚之后出问题才知道去哪改。第一层是 Data Template它定义了“采集什么数据”“多久采一次”“存几个 RRA 点”。模板里针对 CPU 使用率、内存利用率、接口流量分别建了 Data Template轮询间隔默认 300 秒也就是 5 分钟一个点。第二层是 Data Query它告诉 Cacti 用哪个脚本或 SNMP 查询去抓数据。第三层是 Graph Template决定曲线颜色、图例名称、Y 轴单位。接口流量这种多实例数据模板里通常会配一个索引查询把交换机的每个物理端口列出来。你要注意区分 32 位计数器ifInOctets和 64 位计数器ifHCInOctets前者在千兆口上几十分钟就翻转一次数值会突然归零。模板里已经按设备类型给了推荐配置但如果你接手的是老设备可能需要手动改。2.3 为什么还在选 CactiEZ横向比较后的取舍我知道现在一提到监控大家第一反应是 Zabbix 或 Prometheus。但 CactiEZ 至今没被替换掉是因为它有几个特定场景下的硬优势。首先是 rrd 图形样式非常适合网管做日报其次Cacti 对 SNMP v1/v2c/v3 的支持最成熟华为老交换机默认开 v2c模板导入后基本不用额外装 MIB 文件。另一个很实际的原因是运维惯性。机房里的老工程师习惯看 Cacti 那种“一块图里带流量、错误包、丢弃包”的展现方式换成 Zabbix 得重新培训。CactiEZ 10.1 自带中文界面、预装插件最省事的路径就是直接把模板导入进去。不过它的短板也很明显告警策略弱历史数据清理要自己定时任务。所以我的用法是 CactiEZ 负责“看得见”告警交给另一套系统。你如果对告警要求不高完全可以让它一站承担。3. 导入模板到 CactiEZ从 XML 导入到图表可用的完整流程3.1 导入前的备份与版本核对我习惯在动任何模板前先把 Cacti 数据库备份一次。模板导入会往 data_template、graph_template、host_template 这几张表里写入数据一旦出现重复唯一键或外键冲突回滚比逐个删记录省心得多。mysqldump -u cacti -p cacti /root/cacti_backup_$(date %F).sql参数说明-u 指定数据库用户-p 是密码参数回车后会提示输入。备份文件名带日期方便区分多个版本。恢复时用mysql -u cacti -p cacti 备份文件.sql。版本核对同样重要。模板是基于 CactiEZ 10.1 打包的理论上适用于 Cacti 1.x 系列但如果你之前手动改过数据库表结构导入时会报字段不存在。我会先看一眼当前版本php -r include(/var/www/html/include/config.php); echo CACTI_VERSION;3.2 控制台导入与模板变更登录 Cacti 控制台后依次进入 Console - Import Templates把下载到的模板 XML 文件选中上传。这里有一个隐藏坑Cacti 导入模板时会要求你先选择导入类型选错的话图形模板会进到数据模板列表里导致后面绑定主机时找不到对应项。导入完成后到 Device Templates 里确认出现“华为交换机”“中兴交换机”“H3C 交换机”等条目。如果导入过程报告了几条“CDP”或“Poller”相关警告不用太紧张那通常意味着模板引用了你没装的插件。但如果报Invalid XML说明文件下载不完整重新上传一次即可。这一步我不建议在页面上批量导入多个 XML而是逐个导。原因是 Cacti 导入过程会对每个模板做依赖检查多个文件一起导时图形模板引用关系容易错乱后期排查麻烦。3.3 建设备、绑定模板、验证 OID模板导入只是第一步接下来把真实交换机加进来。在 Console - Devices 里点 Add填好 IP 地址、SNMP 版本、社区字符串。这里的关键操作是在 Device Template 下拉框里选对厂商模板。选完后 Cacti 会自动列出模板里包含的 Data Query 和 Graph Template。我每次都会先用 snmpwalk 验证设备侧是否响应模板里的 OID而不是直接建图然后等 5 分钟看空白。snmpwalk -v 2c -c public 192.0.2.10 1.3.6.1.2.1.1.1参数说明-v 2c 表示使用 SNMP v2c-c public 是社区字符串192.0.2.10 是设备地址最后的 OID 是系统描述节点。如果能返回设备型号字符串说明 SNMP 基本通路没问题。如果超时先检查交换机 ACL 是否放行了管理网段这个坑比想象中频繁。验证完系统描述再从模板里挑一个 CPU 相关的 OID 测试比如华为设备私有 MIB 下的 CPU 使用率节点。这时你会看到模板的价值不用自己猜 OID直接用模板里写好的值去 walk设备有返回就说明模板适用。3.4 让图形数据活起来轮询器与日志排查设备添加完成后Cacti 默认会在下一个轮询周期创建图形和数据源。如果你想立刻看到效果可以手动跑一次轮询/usr/bin/php /var/www/html/poller.php --force参数说明--force 会无视轮询时间表立刻执行一次完整采集。首次执行建议盯着终端输出看到每台设备的 SNMP 查询结果后再离开。如果输出里出现ERROR: SNMP说明设备里有部分 OID 返回超时。跑完后到 Graphs 里打开刚才创建的图形如果内容为空多半是数据源建立后还没写入数据。再等 5 到 10 分钟让 RRDtool 积累两个数据点图形就会开始出现曲线。实在不出来就看日志tail -100 /var/log/cacti/cacti.log | grep -i host我在这套流程上给新人带过很多次最常见的错误是模板导入顺利、设备显示正常但用户把轮询器路径配错导致数据根本没有落到 rrd 文件里。所以第 3.4 节虽然短但值得你在现场多盯一轮。4. 华为、中兴、H3C 的 OID 差异同是交换机监控点不在同一棵树上4.1 三家私有 MIB 的设计差异很多刚接触监控的朋友会问同样是交换机CPU 使用率为什么不能用一个通用 OID原因在于各厂商向 IANA 申请的企业私有编号不同MIB 树结构也各有各的规划。标准的 IF-MIB、ENTITY-MIB 可以统一监控接口流量和温度但 CPU、内存、丢包率这类深度指标通常都放在私有节点下不同厂商的层次差异很大。这也是这份模板最大的价值点它把三家设备私有 OID 的“方言”翻译好了。你不需要记每款设备的 MIB 路径模板在 Data Query 里已经做了映射。4.2 华为模板VRP 下的 CPU 与内存读取华为交换机跑的是 VRP 平台官方 MIB 里 CPU 使用率一般挂在企业私有子树下内存项则在另一个分支。模板默认查询的是 VRP 新版本常见节点的数值如果你遇到 VRP 老版本返回值可能为空需要手动调整成备选节点。我遇到过一台上线多年的汇聚交换机用模板默认 OID 能查到 CPU但内存项一直显示 0。后来手动 walk 了一下才发现老固件把内存数值放在一个不同的父节点下面模板里没有覆盖。解决办法是在 Data Template 里复制原有项改掉 OID 后重新建立图形数据源。4.3 H3C 模板同源不同树的 ComwareH3C 的大部分代码源自华为早期版本但其企业私有 OID 段与华为完全不同。使用模板时务必不要拿华为的 OID 硬套 H3C 设备否则 snmpwalk 返回的要么是 No Such Instance要么是数据错位。H3C 交换机通常能在实体扩展节点里同时取到 CPU 和内存比较方便。模板里把两者放在同一个 OID 段下用索引区分实体槽位。对于框式交换机你会在图里看到多块板卡的独立曲线这正是模板细心的地方。4.4 中兴模板分层 MIB 下的选择中兴设备的 MIB 设计更偏分层式不同产品系列的 CPU OID 差异较大。模板里默认覆盖了常见系列但碰到较新的型号时建议先用中兴官方的 MIB 浏览器工具加载设备固件里的 MIB 文件搜索 CPU utilization 关键词拿到实际 OID 后改模板。中兴设备有一个容易混淆的点部分型号把 CPU 使用率放在秒级采样的临时表里曲线会呈现剧烈锯齿。这种情况下我一般会在模板里把采集间隔调大或者在 Data Template 里让 Cacti 对多次采样做平均值计算图形会平滑很多。4.5 差异对照表厂商企业私有 OID 段CPU/内存监控项特点适配注意事项华为1.3.6.1.4.1.2011VRP 新旧版本节点有差异内存项位置不固定老固件需手动 walk 确认节点H3C1.3.6.1.4.1.25506CPU 和内存常在同一实体索引下框式设备多板卡需按索引区分中兴1.3.6.1.4.1.3902分层 MIB产品系列差异较大新型号建议用官方 MIB 工具核对这张表只做定位用具体到每款设备的节点值以模板内的 Data Query 为准。模板的好处是已经筛掉了大多数无效路径你只需要在你的设备上验证即可。5. 避坑指南模板导入后常见的五个高频问题5.1 问题一设备被标记 Down图形全空白现象设备列表里显示红色 Down图形区域一个数据点都没有。原因模板和设备之间 SNMP 版本或社区字符串不匹配。华为设备默认可能开的是 v3模板里写的是 v2c或者社区字符串含特殊字符导致 Cacti 解析错误。解决先在 Cacti 设备编辑页改成SNMP Version: 2c社区字符串确认填对后保存。然后用 snmpwalk 复测一次如果命令行能通而 Cacti 不通检查 Cacti 所在服务器能否路由到设备地址部分网络里监控网段与业务网段隔离。5.2 问题二CPU 曲线剧烈跳变数值不规律现象华为交换机的 CPU 图像锯齿一样上下跳动整体趋势看不清。原因CPU 采集点返回的是瞬时快照不是平均值。交换机在轮询瞬间正好处理突发流量时数值就会飙升。解决在 Data Template 的 Round Robin Archive 里增加一条平均 RRA并让图形模板默认读取该 RRA 的数据。具体操作是把/path/to/rrdtool graph里的 CDEF 调整为AVERAGE而不是LAST。5.3 问题三接口流量计数值偶尔归零或跳变现象端口流量图每隔一段时间出现一次断崖像接口被 shutdown 再拉起。原因32 位计数器翻转。百兆口不明显千兆口的 ifInOctets 在大流量下会快速回绕。解决确认图形模板里用的是 ifHCInOctets64 位计数器而非 ifInOctets。同时注意设备接口是否支持 64 位计数部分老模块不支持只能接受 32 位翻转并在图上降低峰值阈值。5.4 问题四图形时间与本地时间差了 8 小时现象所有图都正常但 X 轴时间比真实时间慢 8 小时。原因PHP 时区配置与系统时区不一致RRD 文件里存的是 UTC 时间出图时按 PHP 时区转换。解决修改/etc/php.ini里的date.timezone为Asia/Shanghai重启 Apache 或 PHP-FPM 后删除并重建数据源。这里强调一点光改系统时区没用PHP 必须一起改否则问题会继续。5.5 问题五导入模板时报 SQL 错误现象导入 XML 过程中页面弹出字段不存在或主键冲突的报错。原因目标 Cacti 数据库版本比模板预期的旧缺少某个字段。Cacti 模板导入不会自动升级数据库结构。解决先跑一遍 Cacti 的数据库升级脚本确认表结构与模板兼容后再导入。如果升级后依然报错检查是否装过其他插件修改了同名表这样的情况只能手工插入缺失字段操作前先备份。6. 把模板移植到非标设备OID 探测与两步改造这套模板覆盖的是华为、中兴、H3C 的常见型号但你兜里很可能还有一批杂牌交换机比如某款贴牌设备。把它塞进 H3C 模板里多数时候能用因为部分贴牌机型就是 H3C 代工的但如果是完全独立的厂商图会一直空白。这里分享一个我常用的两步改造法。第一步探测这台设备的 MIB 根节点。先用标准 IF-MIB 确认接口层数据能通再向企业私有子树方向走找出 CPU 和内存所在的节点snmpwalk -v 2c -c public 192.0.2.20 .1.3.6.1.4.1 | grep -i -E cpu|memory|utilization | head -20参数说明最后命令会把设备私有子树下的所有节点名抓出来用 grep 过滤 CPU、内存相关字样。如果关键词匹配不到就改用snmpwalk -v 2c -c public 192.0.2.20 .1.3.6.1.4.1 | more逐屏翻重点看各节点的注释文本。第二步复制一份现有模板的 XML把里面涉及 CPU、内存的 OID 替换成刚探测到的节点。注意保留原 XML 里的逻辑结构只改数值和名称再重新导入即可。这个操作比直接在页面里手改省事因为 XML 里还保存着数据源与图形模板的关联关系。如果探测到的 OID 在模板里找不到对应逻辑那就退回到最基本的做法在 Cacti 里新建 Data Template用 SNMP Generic OID 模板手动填节点再自建图形模板。这是兜底方案速度慢但总能搞定。从那以后我每次给新设备配监控都强制先走一遍snmpwalk确认 OID 基址再谈导入模板和出图不再让“先建图再看结果”的坏习惯折腾到半夜。希望这套流程和坑位记录能帮你把交换机监控这件事一次做顺。本文还有配套的精品资源点击获取