十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于CactiEZ的跨品牌网络设备监控模板整合实践

基于CactiEZ的跨品牌网络设备监控模板整合实践 简介面向网络运维与监控管理人员这份 CactiEZ 10.1 模板包收录了华为、H3C、Juniper、博科、中兴等主流品牌数十种设备的监控模板涵盖盒式交换机、框式交换机、路由器、防火墙、UPS、网络打印机及硬盘录像机等常见场景可直接导入 CactiEZ 平台快速实现对 CPU、内存、光功率、流量乃至打印机墨量的图形化监控。压缩包共 27 个文件以 24 个 XML 主机模板为主附带说明文档与一个 Juniper EX 交换机模板子压缩包整体仅 543KB便于下载和入库。已有 430 人学习使用模板经过实际测试例如 SRX240 防火墙与华为 S7706 无线控制器场景均已验证可用可减少手工编写 OID 与采集脚本的重复工作适合需要快速扩展监控范围的运维工程师参考选用。1. 项目背景与监控需求拆解干网络运维这些年最头疼的事之一就是设备品牌太杂。机房里有华为的汇聚交换机、H3C的接入设备、Juniper的防火墙、博科的光纤交换机、中兴的路由器如果每一家都上一套网管系统光维护这些管理平台就得专门安排一个人。这也是我当初决定在CactiEZ 10.1基础上整合一套跨品牌监控模板的初衷。CactiEZ 10.1是目前很主流的开源监控发行版底层是CentOS Cacti RRDtool的经典组合默认内置了SNMP探测、图形化数据采集、阈值告警等功能。它的优势在于部署简单、模板机制灵活、社区生态成熟尤其适合中小规模网络环境做统一监控。这次项目要覆盖的硬件范围是设备类型品牌型号监控重点核心/汇聚交换机华为 S5720、S7706CPU、内存、端口流量、光模块状态中低端交换机H3C S系列端口流量、错误包、CPU使用率防火墙Juniper SRX240会话数、接口流量、CPU/内存光纤交换机博科 BR-6505FC端口状态、吞吐量、温度路由器/交换机中兴 ZXR10系列接口流量、CPU、内存核心需求其实就一句话用一套Cacti平台通过SNMP协议把不同厂商设备的监控数据统一采集上来再用统一的图形界面展示和告警。听起来简单真正落地时却有不少坑后面我会逐个说。2. 模板设计与SNMP采集原理2.1 为什么Cacti能同时兼容这么多品牌Cacti之所以能跨品牌监控根源在于绝大多数网络设备都支持SNMP协议。SNMP简单网络管理协议通过OID对象标识符来标识设备上的每一个可监控对象比如CPU使用率、接口流量、内存占用等。华为、H3C的设备遵循标准的RFC 1213MIB-II接口定义同时附带各自私有MIB库。Juniper SRX系列用的是JUNOS虽然私有MIB很多但基础的interface、CPU、内存都符合标准OID。博科光纤交换机比较特殊用的是FCMGMT-MIB和SW-MIBOID体系跟以太网交换机完全不同需要单独写模板。中兴ZXR10系列基本走标准MIB部分设备兼容性强跟华为的OID有些相似。Cacti的模板机制解决的就是这个OID差异化问题。每个模板本质上是一个“采集器”告诉Cacti要读取哪些OID、用什么方式计算比如流量要按字节增量换算成bits/s、图形怎么画。模板建好之后只要设备能通过SNMP联通数据就能采回来。2.2 模板文件的核心结构Cacti模板由三部分组成数据模板Data Template、图形模板Graph Template和数据查询Data Query。用的时候先建好这三样再在设备上关联对应的模板即可。数据模板定义采集什么数据、用哪个OID、数据类型是整数还是计数器。比如华为S5720的CPU利用率OID一般是1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5这个OID在华为的私有MIB里具体版本略有差异。图形模板定义图形怎么画用Line线图还是Area面积图GPRINT怎么格式化。比如端口流量惯例是用bits/s单位需要把接口计数器差值乘以8再除以采集间隔。数据查询通过SNMP walk动态发现设备的接口列表、CPU索引等把设备上的多个实例自动映射到模板上。比如华为S5720有24个端口数据查询会自动把所有端口都拉出来生成对应的流量图不需要手动一条条加。我实际做模板时最省力的办法是先用snmpwalk命令把设备的MIB树导出来对照着找OID和返回值类型。比如要监控华为S7706的内存使用率snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.4.1.2011.5.25.31.1.1.1.1返回结果会包含内存总大小、已用内存、空闲内存等字段这些字段对应的OID直接填进数据模板里当数据源再在图形模板里用CDEF计算公式(used/total)*100算出百分比。3. 各品牌模板的实操配置过程3.1 华为S5720、S7706模板制作华为设备是我在实际部署中最先搞定的。S5720是三层盒式交换机S7706是框式核心交换机两者的监控逻辑其实差不多区别主要在于S7706的板卡多、OID层次更深需要额外注意索引。华为设备SNMP配置先在设备侧开启system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read cipher public snmp-agent trap enable然后在Cacti里添加设备并导入模板。网上能下到的华为模板很多但普遍存在一个问题老模板的OID对应的是VRP5平台的设备遇到VRP8平台的新设备会采集不到数据。我踩过这个坑之后建议你们在导入模板后先做一次snmpwalk验证确认OID返回的数据是真实值。华为S5720的CPU监控OID参考VRP8平台监控项OID备注CPU使用率1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5返回百分比数值内存使用率1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7返回百分比数值温度1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11单位是摄氏度华为S7706由于是框式设备上述OID后面还要加板卡索引比如...1.1.5.1是主控板、...1.1.5.2是业务板。为了不丢监控数据我在数据查询里用了索引自动发现通过snmpwalk获取所有板卡的索引号然后批量生成图形。3.2 H3C设备模板配置H3C设备的MIB基础跟华为同源因为两者技术同源很多OID结构相似。但H3C设备有个特点中低端产品比如S5130、S5560默认的SNMP community是只读的而且要手动开SNMP v3或v2c。设备侧配置如下system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read cipher monitor123H3C的CPU监控OID一般是1.3.6.1.4.1.25506.2.6.1.1.1.1.6Comware 7平台和老版本Comware 5有所不同。如果你用的H3C设备是Comware 5比如S5500老款OID则是1.3.6.1.4.1.25506.2.6.1.1.1.1.8一定要根据设备版本选择对应模板。端口流量这块H3C其实跟标准MIB一致直接用Cacti自带的Interface Traffic模板就能监控。我当时主要额外做的是错误包统计模板因为H3C的百兆/千兆端口在跳线质量不好的时候会出现大量CRC错误包这个能提前发现链路隐患。3.3 Juniper SRX240模板配置Juniper SRX240在监控里比较特殊因为它是防火墙除了要监控接口流量之外更重要的是看会话数Session和策略命中情况。JUNOS系统对SNMP的支持很好唯一要注意的是SRX在默认配置下不开启SNMP需要到配置模式下设置。set snmp community public authorization read-only set snmp interface fxp0.0 set snmp location DataCenter commitJuniper的接口流量OID走的是标准IF-MIB可以直接用Cacti自带的接口模板。但CPU和内存需要单独注意监控项Juniper专用OID说明CPU利用率1.3.6.1.4.1.2636.3.1.13.1.8对应Routing Engine负载内存总量1.3.6.1.4.1.2636.3.1.16.1.1对应JUNOS内存总大小当前会话数1.3.6.1.4.1.2636.3.39.1.5.0需要支持Juniper私有MIB会话数这个OID在部分SRX版本上可能隐藏需要在JUNOS里开启snmp mib的扩展权限。实测下来SRX240的会话数监控对排障很有用比如内网有终端中了病毒疯狂发起TCP连接时会话数会突然暴涨比看CPU更早发现问题。3.4 博科BR-6505光纤交换机模板博科这种FC光纤交换机是全网里最挑剔的监控对象。原本我抱着试试看的心态没想到Cacti还真能把它纳入监控体系核心OID走的是FCMGMT-MIB。博科设备侧SNMP配置通常是默认开启的默认community是public只读但如果改过管理IP和通信配置需要确认能ping通。博科BR-6505需要重点监控这几个指标监控项OID说明FC端口状态1.3.6.1.4.1.1588.2.2.1.1.1.6返回online(2)/offline(3)端口接收字节数1.3.6.1.4.1.1588.2.2.1.1.1.10字节计数器端口发送字节数1.3.6.1.4.1.1588.2.2.1.1.1.20字节计数器交换机温度1.3.6.1.4.1.1588.2.1.1.1.1.22单位是摄氏度博科模板最大的坑在数据类型的处理上。FC端口流量不是按以太网接口那种方式计算的它的字节计数器是Counter64类型但如果Cacti里误设成了Counter32当数据超过4GB后会出现回绕图形上就是流量突然掉到0再涨起来看着像链路中断。我处理这个问题时把数据模板类型改成Counter6464-bit counter就好多了前提是Cacti的SNMP轮询器要支持64位计数CactiEZ 10.1内置的SNMP版本是支持的。3.5 中兴ZXR10系列模板中兴路由交换设备在企业网里不如华为H3C常见但在运营商接入和政企项目里出现的频率不低。ZXR10的MIB跟标准MIB基本兼容用Cacti自带的通用模板就能采到大部分数据。不过有些细节要提醒中兴的老设备比如ZXR10 3928在SNMP兼容性上有问题sysORTable系统OR表返回不完整导致Cacti的自动发现功能会把设备识别成Unknown类型。解决办法是手动指定设备型号不依赖自动识别直接把打好包的模板导进去关联。中兴ZXR10的CPU OID没有统一标准不同版本变来变去我是通过snmpwalk逐步抓出来的。比如有的版本CPU利用率在1.3.6.1.4.1.3902.1.3.1.1.1.8有的在1.3.6.1.4.1.3902.101.1.1.1.1.5。建议你们直接根据手里的设备抓MIB树来验证别直接套用网上的模板。4. CactiEZ 10.1部署与调优实录4.1 安装CactiEZ 10.1CactiEZ 10.1本质是一个封装好的CentOS系统安装流程跟装普通Linux差不多。ISO烧到U盘后启动选择硬盘分区大概20分钟能装完。装好之后默认IP是192.168.100.1需要在安装向导里改成你规划好的管理地址。提示CactiEZ 10.1默认root密码是cactiezWeb登录Cacti的初始账号密码是admin/admin。安全起见装完第一件事就是改密码并且建议把SSH端口改掉别暴露在办公网以外的地方。装完系统后确认核心服务状态正常systemctl status snmpd systemctl status httpd systemctl status mysqld systemctl status crond这4个服务是SNMP轮询、Web展示、数据存储、定时采集的关键。任何一个挂了都会导致监控数据中断。4.2 SNMP轮询配置与并发优化监控设备多了之后Cacti的默认轮询配置会出问题。CactiEZ 10.1默认的轮询间隔是300秒5分钟每次轮询用/usr/bin/php /var/www/html/poller.php来执行。当被监控设备超过200台时默认的轮询机制可能会超时。我这边管理大概120台设备轮询时间稳定在60秒左右距离超时还有不少余量。但如果你有几百台设备建议做这几个优化调整/etc/crontab里的轮询频率*/1 * * * * root php /var/www/html/poller.php /dev/null 21CactiEZ默认是5分钟执行一次改成1分钟后图形分辨率能细到分钟级别排查瞬时拥塞时好用得多。调整config.php里的轮询设置$config[poller_interval] 60; $config[cacti_session_timeout] 3600;开启并发轮询CactiEZ 10.1内置了poller_interval为1分钟的spine支持但默认没有启用。如果设备量大建议安装spine它是C语言写的高性能轮询器比内置的PHP轮询器快5-10倍。/usr/local/spine/bin/spine --version实测下来PHP轮询器在200台设备时CPU占用接近60%换成spine后降到10%左右效果很明显。4.3 模板导入与设备关联流程模板制作完成后具体操作流程是在Cacti管理界面进入Console Import Templates上传XML格式的模板文件。进入Console Devices添加设备填写IP、SNMP community、版本。设备添加成功后点击右上角的Create Graphs for this Host选择要创建的图形模板。每个模板会列出该设备上发现的实例比如接口列表、CPU索引勾选后创建图形。进入Graphs页面把图形关联到对应的Graph Tree目录下方便统一查看。整个过程中最容易出问题的是设备SNMP联通性。添加设备时Cacti会返回SNMP信息如果显示SNMP error多半是设备侧没开SNMP或者community不匹配。这时可以用命令行直接测snmpget -v2c -c public 192.168.1.1 sysDescr.0如果能返回设备的系统描述说明SNMP是通的问题出在Cacti配置上。如果返回超时检查设备侧SNMP配置和防火墙放行UDP 161端口。5. 常见问题与排障心得5.1 模板导入后图形为空这是我最常遇到的问题。导入模板后创建了图形但等了几个轮询周期还是没有数据。排查步骤先确认设备状态是Up在Devices页面看SNMP信息是否正常。查看RRD文件是否生成ls -lh /var/www/html/rra/如果RRD文件没有生成说明数据模板里的数据源没有采集到数据。在Cacti的Data Sources页面点开对应数据源右侧会显示SNMP Error或者具体的OID值。手动用命令行确认OID是否返回正确数据snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5最常见的原因是OID写错了尤其是华为和H3C的私有MIB OID在不同版本上差异很大。还有个日常容易忽略的问题模板里的Data Source Type数据源类型和Data Source Item的顺序错了导致RRDtool创建的数据文件格式不对。5.2 端口流量图出现锯齿或归零流量图形上出现锯齿一般是采集间隔和设备流量统计方式不一致导致的。比如设备侧用5分钟平均Cacti用1分钟采样画出来的图就会有毛刺。解决方法是让采集间隔统一要么都5分钟要么都1分钟。流量图形突然归零多数是Counter类型的问题。如果接口速率超过1Gbps并且Cacti用的是32位计数器那4GB的阈值会在约32秒内被冲破。换成64位计数器就解决问题。5.3 SNMP超时导致轮询器卡死当设备数量多了以后个别设备SNMP无响应会导致整个轮询进程卡住。我在一次故障中发现一台失联的博科交换机让Cacti的轮询时间从40秒飙升到280秒严重超时。解决措施有三个在设备配置里加Max OIDs Per Get Request限制默认是10但某些老设备会直接拒绝一次返回太多OID。开启Downed Device Detection把失联设备的轮询频率降到最低。在Settings Poller里设置Poller Timeout为2000ms避免单个设备占用太长时间。5.4 关于Cacti模板的备份和版本管理模板一旦调好一定要做版本管理。我的做法是模板文件集中存放在/opt/cacti_templates/目录下每次调整后用Console Import Templates Export导出文件名带上日期和备注。这样即使Cacti系统崩溃重装也能在半小时内把模板全部恢复。另外提醒一个容易犯的错CactiEZ 10.1自带的Cacti版本比较老大约是0.8.8系列从社区下载的新模板可能是为Cacti 1.x设计的导入时会有兼容性报错。遇到这个问题要么升级Cacti主程序要么找旧版本模板我自己是直接升级到了Cacti 1.2.x兼容性好了很多。6. 使用心得与后续扩展这套CactiEZ 10.1 多品牌模板方案上线运行半年多整体效果稳定。最大的收益是把5个品牌的网管入口统一成了单一平台不用每天在多个管理系统之间来回切换。告警方面Cacti配合thold插件实现了CPU超阈值和端口down的邮件通知很多故障在用户发现之前就已经处理了。有个经验想单独讲一下监控模板的维护比监控本身更重要。设备固件升级、新增板卡、更换业务类型都可能导致OID变化或监控指标失效。我现在的习惯是每个季度做一次模板巡检用脚本批量比对所有设备的SNMP返回值和模板配置有差异的及时修正。后续准备往这两个方向扩展把监控数据接入Elasticsearch Grafana做更灵活的历史数据分析和可视化报表Cacti保留实时监控职能Grafana做季度运营报告。在部分设备上尝试NETCONF协议替换SNMP采集尤其是H3C和Juniper设备NETCONF能拿到比SNMP更细的配置級指标比如VRRP状态、OSPF邻居状态这对核心网络的稳定性监控有更大价值。说白了Cacti虽然年头不短但在一线网络运维里它靠灵活模板成熟生态依然是很靠谱的监控底座。如果你也要在混合品牌环境里做统一监控这套方案可以直接参考落地。本文还有配套的精品资源点击获取
返回列表