多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

CactiEZ 10.1多厂商网络设备监控模板实战指南

CactiEZ 10.1多厂商网络设备监控模板实战指南 简介CactiEZ 10.1用户可直接导入的跨厂商网络设备监控模板合集主要面向网络运维与监控工程师适用于园区网、数据中心及广域网设备的统一监控解决Cacti/CactiEZ平台下多厂商设备监控模板缺失、手工配置MIB复杂的问题。资源共27个文件以24个XML模板为主另含2个TXT使用说明和1个Juniper EX交换机模板ZIP附件整体仅543KB已有430人学习下载。模板覆盖华为S5700/S7703/S7706/S9000/USG防火墙、H3C交换机与AR路由器、Juniper SRX240、博科6505及NetIron、中兴ZXR2609、爱快、海康威视硬盘录像机、APC UPS、惠普网络打印机等并为华为盒式交换机提供CPU、内存、光功率、流量等关键指标监控。其中Juniper SRX240、S7706无线控制器等模板经测试可直接导入说明文件可辅助快速部署适合需要快速搭建多厂商统一监控视图的运维团队可显著缩短模板调试周期。 做了这么多年网络运维每次看到机房里面华为S5720、华为7706、H3C、Juniper SRX240、博科6505、中兴混着跑头就大。设备品牌五花八门厂商网管系统又贵又重最后发现还是CactiEZ 10.1这套模板监控方案最实在。这套方案用SNMP统一采集把各种设备的CPU、内存、端口流量、光功率、温度都收敛到一张张图里不用装厂商控制器也不用给每台设备单独配一套网管一台CactiEZ服务器就能撑起整个机房的监控底座。本篇就围绕CactiEZ 10.1模板把从设备SNMP配置、模板导入、设备关联到出图验证的完整链路梳理一遍给正在做多厂商网络设备监控的朋友做一个可直接抄作业的参考。1. 项目背景与方案选型思路1.1 为什么要用CactiEZ 10.1做多厂商设备监控刚接手这个项目的时候机房里的设备状态基本靠命令行一条一条敲要么就是登录设备看display cpu要么就是去交换机上翻端口统计。设备多了以后这种模式根本不现实尤其是接入层几十台华为5720加核心7706再混上一批H3C交换机、一个Juniper SRX240防火墙、两台博科6505光纤交换机还有零星几台中兴设备人工巡检根本忙不过来。也考虑过Zabbix和Prometheus但说实话对纯网络设备监控来说CactiEZ 10.1有它独特的优势。Zabbix强在主机监控和告警规则Prometheus强在云原生场景而网络设备监控的核心诉求是SNMP轮询图形化展示Cacti的RRDtool画图能力在这块非常成熟。更关键的是CactiEZ 10.1是一个打包好的发行版自带Cacti、Spine轮询器、RRDtool以及大量现成模板装完就能用不像Zabbix那样需要配一堆自定义键值。还有一点是运维团队的接受度。Cacti的图形界面非常直观领导和同事都能一眼看懂流量趋势出图给协作部门看也方便。网络设备报警的实时性要求没那么苛刻5分钟一个轮询周期完全够用。所以最终选型就定在了CactiEZ 10.1把现有的多厂商设备全部纳管进来。1.2 模板化监控的核心设计思路既然设备品牌这么多思路就不能是每台设备单独去添加图形而是把监控对象抽象成模板一套模板管一类设备。CactiEZ 10.1里的模板分几种Host Template设备类型模板、Graph Template图形模板、Data Query数据查询核心逻辑是Host Template下面挂多个Graph Template和Data Query设备添加时只要选对Host Template图形和数据源会自动带出来。针对这批设备我按设备类型拆成了5套模板组合华为VRP系列5720、7706共用一个模板族、H3C设备、Juniper SRX240、博科6505、中兴ZXR10。这样拆的好处是同品牌设备的CPU和内存OID往往是同一套体系模板复用率高后续如果再加一台华为S5720的兄弟型号直接套模板就行不用重新配置。模板化的另一个关键是搞清楚指标类型。网络设备监控最常见的三类指标接口流量通过IF-MIB抓端口In/Out字节、CPU和内存使用率不同厂商Vendor MIB各不相同得单独写Data Query或Graph Template、光模块状态博科6505这类光纤交换机比较关注光功率和温度。想清楚这三类指标后面做模板就不会乱。2. 各设备SNMP配置与模板匹配要点2.1 华为S5720与S7706VRP系统SNMP配置与OID对应华为设备S5720接入交换机、S7706核心交换机走的都是VRP系统SNMP配置命令基本一致。我用的是VRP V200R0xx版本配置如下system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read cacti2024 snmp-agent sys-info contact networkexample.com snmp-agent sys-info location Shanghai-IDC quit save这里注意几个细节。第一snmp-agent必须显式启用有些版本不敲这条命令SNMP不生效。第二sys-info version要指定v2cCactiEZ默认用SNMP v2c采集如果设备只开了v3模板配置起来会麻烦好几倍。第三只读社区串cacti2024要统一规划好不要用public这种默认值安全审计的时候过不去。华为VRP的CPU和内存OID有个特点不同版本差异较大。S5720和S7706实测常用的CPU使用率OID是.1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5内存利用率OID是.1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7但我在S5720-52X-SI上遇到过OID偏移的情况。所以模板里配置好之后一定要先用snmpwalk确认返回值再导入Cacti不然图上全是空曲线。接口流量这块不用写厂商OIDCacti自带的SNMP - Interface Statistics模板走的IF-MIB华为设备全系列都支持直接复用默认模板就行。2.2 H3C系列配置命令与常见差异H3C设备我这边主要是一批S5130和一台MSR5660路由器命令风格和华为VRP比较接近但细节上有差异。核心配置命令system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read cacti2024 snmp-agent sys-info contact networkexample.com snmp-agent sys-info location Shanghai-IDC save forceH3C和华为配置命令最大的区别是保存命令华为用saveH3C用save force中间交互方式不一样。另外H3C老版本上snmp-agent sys-info version如果不带参数可能会把SNMP v3也一起关掉建议明确写v2c。H3C的CPU和内存OID走的是hh3c私有MIB企业号25506CPU利用率常用.1.3.6.1.4.1.25506.2.6.1.1.1.1.6内存利用率是.1.3.6.1.4.1.25506.2.6.1.1.1.1.8。不过这套OID在Comware V5和V7上表现不太一样V7设备上有时候需要走entityExt表建议先实测。接口流量同样是走IF-MIB兼容性没问题。2.3 Juniper SRX240set方式的配置习惯Juniper SRX240是里面最特殊的一台因为Juniper的命令行是set风格不是华为/H3C那种视图风格。第一台设备排错时我同事还按华为的习惯去敲命令结果全是不认识的语法。SRX240的SNMP配置configure set snmp community cacti2024 set snmp community public read-only set snmp location Shanghai-IDC set snmp contact networkexample.com commitJuniper的SNMP社区串默认就是只读的所以不用专门指定访问权限。Juniper设备的CPU和内存OID走的是juniperMIB企业号2636具体OID在不同Junos版本上差异不小我的做法是直接在设备上执行show snmp mib walk把相关表项导出来再填到Cacti模板里。SRX240做防火墙用端口流量监控只关心实际启用的安全域接口不建议把所有接口都拉进Cacti否则图形列表里会混入一堆管理口和内部接口观感很差。我在模板里只关联了ge-0/0/0到ge-0/0/7这8个业务接口。2.4 博科6505光纤交换机FOS的SNMP配置与特殊指标博科6505是FC光纤交换机走的是Brocade FOS系统监控逻辑和以太网交换机完全不一样。FOS启用SNMP建议直接进snmpconfig交互界面操作命令行方式配置容易漏参snmpconfig # 在交互菜单中选择 Set SNMP v1/v2c Community # 输入社区名称 cacti2024 # 设置访问权限为 Read-Only博科6505除了常见的端口流量最重要的是光模块状态。FC交换机的光模块温度、发射功率、接收功率都是关键指标光模块劣化往往先体现在这些数值的漂移上。FOS里这些数据在swSfp表企业号1588下面需要单独做一个Graph Template把光功率和温度画成趋势图这样既能及时发现问题又不用每次登录交换机的Web界面手动查看。操作中要特别留意博科交换机上通过SNMP读取光模块信息的OID路径很长而且不同FOS版本对SFP表的索引方式有差异模板配置完成后必须用snmpwalk对比sfpShow命令的输出结果。2.5 中兴交换机ZXR10的SNMP配置中兴设备我这块是一台ZXR10 5928相对冷门配置命令介于华为和思科风格之间。有意思的是中兴有一部分命令居然支持缩写比如snmp-agent community read cacti2024可以缩写成snmp-agent community ro cacti2024但为了可读性我还是建议写全。enable config snmp-agent snmp-agent community read cacti2024 snmp-agent sys-info version v2c write中兴ZXR10的CPU和内存OID在模板库里不太常见我是通过snmpwalk设备后自行定位的。方法就是walk.1.3.6.1.4.1.3902中兴企业号下的关键表项找到CPU占用率和内存占用率对应的OID然后手工建Data Template。这台设备的监控价值主要在端口流量CPU内存的OID反而不太稳定升级过一次固件后OID就变了需要重新绑定。3. 模板导入与出图实操流程3.1 CactiEZ 10.1部署与初始准备CactiEZ 10.1本身就是个CentOS-based系统镜像装到一台2核4G的虚拟机或物理机上就行。安装过程不复杂就是普通的Linux系统安装装完之后默认已经在跑Apache、MariaDB、Cacti、Spine在浏览器里访问服务器IP就能看到Cacti登录页默认账号admin/admin首次登录会强制改密码。真正要准备的是轮询器的配置。CactiEZ默认使用cmd.php做轮询设备多了以后cmd.php效率明显下降建议切成Spine。在Cacti的Console - Settings - Poller选项卡里把Poller Type改成Spine然后配置Spine路径CactiEZ里一般是/usr/local/spine/bin/spine。改完之后执行systemctl restart httpd crond确认cron任务里poller.php每5分钟跑一次。还有个容易被忽略的点CactiEZ服务器本身的系统时间要和监控设备尽量同步时间偏差大时RRD图会出现锯齿或整条曲线偏移。我直接在CactiEZ上配置了NTP同步设备侧也做了NTP客户端配置后面出图就干净多了。3.2 模板导入的完整步骤拿到现成的华为/H3C/Juniper/博科/中兴模板文件.xml格式后在Cacti后台进入Console - Import Templates上传XML文件即可。CactiEZ 10.1用的是Cacti 1.x系列导入接口兼容性比老版本好很多基本不会出现导入失败的提示。导入之后建议做一次模板依赖检查。有时候模板文件引用了某些Data Query或Data Template但这些依赖没有一并导入结果创建图形时报错。检查路径是Console - Device Templates逐个打开模板看Graph Templates和Data Queries列表里有没有带红叉或警告标记的项。有红叉就得回过头重新补齐模板文件或者手动修改Data Template。这里想多说一句很多网上的模板文件是给Cacti 0.8.x老版本做的导入Cacti 1.x后经常出现字段不匹配。我的处理经验是用模板文件里的核心OID做参考在CactiEZ 10.1上手动重建Data Template。虽然多花半小时但数据源是干净且可控的后面排查问题也会容易很多。3.3 添加设备并关联模板在Cacti后台进入Console - Devices - Add一台一台把设备加进来。关键填项Description: 例如 S5720-IDC-Access-01 Hostname: 设备管理IP SNMP Community: cacti2024 SNMP Version: Version 2c SNMP Port: 161 Associated Template: 选对应的Host Template这里有个非常容易踩的坑Downed Device Detection选项。Cacti默认通过ICMP ping来判断设备存活但有些网络设备禁ping或者防火墙策略挡掉了ICMP会导致Cacti认为设备离线SNMP轮询直接跳过。我这边华为7706上跑了VRRP、ACL策略复杂就是Ping不通但SNMP正常后来把这台设备的Downed Device Detection改成SNMP方式或No Ping才正常出图。关联模板之后先别急着创建图形。先在设备页面上点一下Verbose Query按钮手动触发一次SNMP检查页面会返回设备上实际扫描到的接口、CPU、内存信息这样能确认Cacti和设备的SNMP通信是否正常。要是这里就报超时或者无数据那后面图形必然为空得先排查设备侧的SNMP配置。3.4 图形创建与轮询数据验证设备添加成功且Verbose Query有返回后进入Console - Create Graphs选择设备会列出该设备所有可用的Graph Templates。根据需求勾选需要出图的项接口流量选择Interface - Traffic (bits/sec)用Ctrl/Shift多选批量创建所有业务接口CPU/内存选择华为/S5720、H3C、Juniper、中兴对应的CPU和内存图形模板博科激光器状态选择Brocade SFP光功率/温度模板创建图形之后要等一个轮询周期5分钟左右然后到Graphs页面刷新查看。如果图像还是空的可以到Console - Utilities - View Poller Cache看Spine实际执行的SNMP语句和返回结果。这一招非常有用能直接看到哪个OID超时、哪个OID返回了空值排查效率翻倍。rrdtool fetch命令也可以用来快速验证数据文件里有没有落盘数值rrdtool fetch /var/www/html/cacti/rra/xxx.rrd AVERAGE如果返回的数值全是nan说明轮询没采集到数据如果有正常数值但图像不显示那就是图形模板的显示配置有问题。4. 常见问题与排查技巧实录4.1 图形为空SNMP不通与数据源问题的定位这是日常运维中最常见的问题设备加进去了、图形也创建了但曲线就是出不来。按我的经验优先查三件事第一网络连通性。在CactiEZ服务器上执行snmpwalk -v2c -c cacti2024 设备IP .1.3.6.1.2.1.1.5.0确认能返回设备名。这一步能直接把SNMP问题从整个链路里剥离出来。返回超时就要检查设备管理口的ACL很多交换机默认管理口只放行了特定网段。第二轮询日志。Cacti的/var/log/cacti/cacti.log会记录每次轮询的错误。如果看到Host did not respond to SNMP基本就是SNMP参数或网络不通如果看到OID not found则是模板里的OID和设备实际支持的不一致。第三数据源是否创建。设备添加时如果Host Template没有正确关联Graph TemplateCacti可能只创建了设备记录而没有生成Graph Data Sources直接导致RRD文件不存在。在Console - Graph Management里筛选该设备的图形看底层数据源列表是否完好。4.2 OID不匹配与固件差异的处理设备固件升级后私有MIB里的OID发生变化是最让人头疼的问题。我遇到过最典型的是华为S5720升级VRP版本后CPU和内存OID从.1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5偏移到了另一个分支原有图形全部变成空线排查了整整一上午才锁定原因。这类问题没有捷径只能用snmpwalk遍历厂商MIB分支逐层找到当前固件下真正的CPU和内存OID。找到新OID后在Cacti后台修改对应的Data Template里的OID字段保存后数据就会自动恢复。需要注意的是修改Data Template会影响所有引用该模板的设备如果只有某一台设备固件不同更合理的做法是给这台设备单独复制一套模板避免影响其他正常设备。4.3 轮询性能与图像断点优化设备数量上到三四十台以后Cacti默认的cmd.php轮询就开始吃力了尤其是网络设备接口数量多每台设备几十个端口的流量采集量很大。cmd.php是串行执行一个设备SNMP响应慢后面设备全部阻塞图形上就会出现周期性断点。换Spine是首选方案Spine支持多线程并发轮询我在三十多台设备的环境下实测轮询时间从cmd.php的900秒压缩到了80秒左右。Spine配置文件在/usr/local/spine/etc/spine.conf重点要核对数据库连接信息是否和Cacti配置一致。如果Spine换了之后仍然有设备轮询超时就得检查是不是个别设备响应太慢。在Console - Settings - Poller里把Maximum SNMP OID Get调低一些或者把多台慢设备拆到不同的轮询间隔里避免在同一轮询周期内集中碰撞。4.4 模板文件导入失败的兼容性处理CactiEZ 10.1基于Cacti 1.x和网上流通的老版本模板文件经常不兼容。导入时如果提示SQL错误或者模板字段缺失我的处理方案是拆解XML文件只导入Data Template部分Graph Template用Cacti自带的图形风格重新组装。虽然麻烦一点但结果是完全可控的。还有一个比较隐蔽的问题同一个模板文件重复导入多次会把模板里的图形和数据源重复挂到设备上导致一张设备出现两张重复的图。所以每次导入前建议在Console - Template里先搜索模板名称如果存在就选覆盖更新不要直接再传一次。写在最后的几点经验CactiEZ 10.1这套模板方案真正跑起来之后机房设备的运行状态就变得透明了。华为5720和7706的CPU使用率、H3C交换机的端口拥塞、Juniper SRX240的会话数趋势、博科6505光模块的温度漂移全部能在一套平台上直观看到。个人最深的体会是模板监控这件事七分在前期建设三分在运行维护。所谓前期建设不是指模板导入有多复杂而是要想清楚每台设备需要监控什么指标、用哪个OID、谁来负责维护这套模板基线。模板一旦固化下来后续新设备上线就是加一台、套一套模板的事成本非常低。最后分享一个排障小技巧在Cacti里遇到任何不明所以的图形异常先跑一次snmpwalk -v2c -c 社区名 设备IP | grep -i cpu对比模板里的OID和实际返回值大部分问题都能在这一步定位清楚。别光盯着Cacti页面看空图猜原因底层数据到底通没通永远是第一排查方向。这套组合用到现在已经是团队里最省心的监控工具了。本文还有配套的精品资源点击获取
返回列表