ARTICLE DETAIL

资讯详情

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

CactiEZ 10.1 补齐华为、中兴、H3C 交换机监控模板实战

CactiEZ 10.1 补齐华为、中兴、H3C 交换机监控模板实战 简介这份资源面向使用 CactiEZ 10.1 搭建网络监控平台的运维人员提供一批可直接导入的主机监控模板解决华为、中兴、H3C 等品牌设备在默认模板库中缺失、需手工编写数据查询与图形规则的问题。包内共 16 个文件以 15 个 xml 模板文件和 1 个 txt 说明文件为主xml 用于在 Cacti 中导入主机模板txt 可辅助了解模板清单与用途压缩包整体约 314KB体积轻便、导入即用。模板覆盖范围较广既有华为 S2300/S2700/S3700、S5700、S7703、S9000 等交换机也有中兴 ZXR2609、H3C AR2811 与 S2000 系列、三元达 WPB5000 等设备还包含 APC 智能 UPS、惠普网络打印机、海康威视硬盘录像机、Windows 主机及通用 SNMP、非 SNMP 主机模板其中华为盒式交换机模板可监控 CPU、内存、光功率与流量等指标打印机模板可读取墨量。目前已有 2050 人学习下载适合需要快速补齐多厂商设备监控项、减少手工调试成本的网管与运维工程师参考使用。1. CactiEZ 10.1 上补齐华为、中兴、H3C 交换机监控为什么模板总对不上机房上架一批华为 S 系列、中兴 5900 系列、H3C S 系列交换机CactiEZ 10.1 装好之后你会发现一个很尴尬的事设备能 ping 通SNMP 也能走通但图形界面里要么只有一张 Ping 延迟图要么 CPU、内存、温度、端口流量全是空白。原因不是 Cacti 不行而是 CactiEZ 10.1 自带的host_template里思科、Linux 主机的模板最全国产交换机的 OID 树基本没覆盖。华为、中兴、H3C 三家的私有 MIB 各写各的同一个「CPU 利用率」华为在1.3.6.1.4.1.2011下H3C 在1.3.6.1.4.1.25506下中兴在1.3.6.1.4.1.3902下OID 完全对不上所以套用默认模板必然翻车。这篇笔记讲的就是怎么在 CactiEZ 10.1 上把这三家交换机的主机监控模板补齐让 CPU、内存、温度、端口流量、风扇状态这些关键指标真正出图。适合手里有 CactiEZ 环境、需要批量纳管国产交换机、又不想一台台手写 Data Query 的运维。读完你能自己导出 OID、建模板、绑设备、验证出图也能判断哪些指标值得监控、哪些纯属浪费轮询。2. 先搞清楚三家交换机的 OID 差异模板为什么不能通用2.1 华为、中兴、H3C 的私有 MIB 入口Cacti 监控交换机本质是两件事一是用 SNMP 把值取回来Data Input Method Data Source二是把值画成图Graph Template。取值的核心是 OID。标准 MIB-II 里1.3.6.1.2.1下有接口流量、系统信息这部分三家都兼容所以端口流量图通常能直接出。但 CPU、内存、温度这些「设备健康」指标全在厂商私有 MIB 里。厂商私有 MIB 根 OID典型 CPU OID典型内存 OID华为1.3.6.1.4.1.2011hwEntityCpuUsagehwEntityMemUsageH3C1.3.6.1.4.1.25506hh3cEntityExtCpuUsagehh3cEntityExtMemUsage中兴1.3.6.1.4.1.3902zxAnCpuUtilizationzxAnMemUtilization注意表里给的是「典型」而不是「唯一」。同一厂商不同系列OID 也可能不一样。华为 CE 系列和 S 系列在实体索引上就有差别H3C 的hh3cEntityExtCpuUsage在部分老型号上返回的是整机值新型号按 slot 返回多行。所以第一步不是抄 OID而是先确认你手上这台设备到底吐什么。2.2 用 snmpwalk 确认设备真实返回在 CactiEZ 服务器上先装好net-snmp-utilsCactiEZ 一般自带然后对目标交换机做一次 walk。假设交换机管理地址是192.168.10.21SNMP v2c 团体字是public# 先确认基础连通性和 sysDescr确认 SNMP 通 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.2.1.1.1.0 # 华为walk 实体 CPU 和内存 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7 # H3Cwalk 实体扩展 CPU 和内存 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.25506.2.6.1.1.1.1.6 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.25506.2.6.1.1.1.1.8 # 中兴walk CPU 和内存 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.3902.1015.2.1.1.1.1.1.4 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.4.1.3902.1015.2.1.1.1.1.1.5命令含义-v 2c指定 SNMP 版本-c public是团体字最后是 OID。如果返回No Such Object或No Such Instance说明这个 OID 在这台设备上不存在别硬套。如果返回一串带索引的值比如...1.5.1 12、...1.5.2 8说明设备按实体板卡/槽位返回多行模板里就要用索引遍历而不是取单值。参数说明团体字不要用public上线改成复杂字符串并在交换机上配 ACL 只允许 Cacti 服务器访问。SNMP v3 更安全但 CactiEZ 10.1 配 v3 要在 Devices 里填 auth/priv 协议和密码模板本身不区分 v2c/v3OID 一样。2.3 为什么不能直接套思科模板有人图省事把思科的Cisco Router模板套到华为交换机上结果 CPU 图永远是 0 或者断线。原因是思科模板里写死了1.3.6.1.4.1.9开头的 OID华为设备在这个 OID 下什么都不返回Cacti 取到空值就画 0。更隐蔽的坑是有些 OID 在两家都「存在」但语义不同比如接口 ifType 的枚举值套错模板会导致端口识别混乱。所以正确做法是给每家单独建 Host Template而不是改思科模板。3. 在 CactiEZ 10.1 里建主机模板从 Data Template 到 Graph Template3.1 建 Data Template 和 Data SourceCacti 的模板体系是三层Data Template 定义「怎么取数」Graph Template 定义「怎么画图」Host Template 把两者绑到设备上。先建 Data Template。登录 CactiEZ Web默认http://你的IP/cacti进Console → Templates → Data Templates → Add。以华为 CPU 为例NameHuawei - CPU UsageData Input Method选Get SNMP Data单值或Get SNMP Data (Indexed)多行如果 snmpwalk 返回单值用Get SNMP Data返回多行按实体索引用Get SNMP Data (Indexed)在Custom Data里加字段FieldValueNamecpu_usageSourceSNMP OIDOID1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5然后建 Data Source。Cacti 里 Data Source 通常由 Data Template 自动生成但你要在 Data Template 的Data Source Items里定义Internal Data Source Namecpu_usageMaximum Value100Data Source TypeGAUGEHeartbeat600参数说明GAUGE表示取瞬时值CPU 百分比就用它如果是累计流量计数器用COUNTER。Maximum Value设 100 是为了防止异常值把 Y 轴拉爆。Heartbeat是两次轮询之间允许的最大间隔600 秒意味着 10 分钟没取到就断图按你的轮询周期一般 5 分钟设 2 倍即可。3.2 建 Graph Template 并绑定进Templates → Graph Templates → AddName 填Huawei - CPU Usage。在Graph Template Items里加一个 Graph ItemGraph Item TypeLINE1折线Data Source选刚才的cpu_usageColor选个显眼的Text FormatCPU Usage关键一步在 Graph Template 的Graph Item Inputs里把 Data Source 和 Graph Item 关联起来。Cacti 的模板变量机制靠|host_id|、|data_source|这类占位符建 Host Template 时会自动替换。然后建 Host TemplateTemplates → Host Templates → AddName 填Huawei S Series Switch。在Associated Graph Templates里勾上Huawei - CPU Usage、Huawei - Memory Usage、Interface - Traffic (bits/sec)等。这样新加华为交换机时选这个 Host TemplateCacti 自动生成所有 Data Source 和 Graph。3.3 用 CLI 脚本批量导入模板手工点 Web 界面建十几台设备的模板很痛苦Cacti 支持 CLI 导入 XML 模板。CactiEZ 的 CLI 在/usr/share/cacti/cli/下# 导出已有模板为 XML先手工建一个再导出当模板 cd /usr/share/cacti/cli php export_template.php --template_id123 --outputhuawei_cpu.xml # 批量导入 XML 模板 php import_template.php --importhuawei_cpu.xml # 查看导入结果 php import_template.php --importhuawei_cpu.xml --debug逻辑说明export_template.php把指定 template_id 的 Data Template、Graph Template、Host Template 打包成 XMLimport_template.php反向导入。参数--debug会打印每个对象的导入状态失败时能看到是 hash 冲突还是依赖缺失。注意导入前先确认 Cacti 版本一致10.1 的 XML schema 和 0.8.x 不兼容跨版本导入会报hash mismatch。4. 端口流量、温度、风扇哪些指标值得监控哪些是浪费4.1 端口流量用标准 MIB 就够端口流量不需要私有 MIB标准IF-MIB里的ifHCInOctets1.3.6.1.2.1.31.1.1.1.6和ifHCOutOctets1.3.6.1.2.1.31.1.1.1.10三家都支持。Cacti 自带的Interface - Traffic (bits/sec, 64bit)模板直接能用关键是建设备时把SNMP Interface Type选对。# 确认接口索引和描述 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.2.1.2.2.1.2 # 确认 64 位计数器 snmpwalk -v 2c -c public 192.168.10.21 1.3.6.1.2.1.31.1.1.1.6参数说明ifHCInOctets是 64 位计数器千兆/万兆口必须用它32 位的ifInOctets在高速率下会快速回绕图会周期性掉到 0。Cacti 建图时选64bit模板Data Source Type用COUNTERMaximum Value留空或设接口速率的 1.25 倍。4.2 温度、风扇、电源按需监控温度 OID 各家差异更大而且不是所有型号都支持。华为在1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11附近有温度H3C 在1.3.6.1.4.1.25506.2.6.1.1.1.1.12附近中兴在1.3.6.1.4.1.3902.1015.2.1.1.1.1.1.6附近。但很多接入层交换机根本没有温度传感器walk 出来是空的。我的建议核心/汇聚交换机监控温度、风扇、电源接入层只监控 CPU、内存、端口流量。理由很简单接入层设备量大每个多 3 个 Data Source轮询压力翻倍而接入层温度异常的概率远低于核心。CactiEZ 默认 5 分钟轮询300 台接入交换机 × 每台 48 口 × 2 个方向 28800 个 Data Source不加筛选会把 poller 拖垮。4.3 用 Data Query 自动发现接口手工给每个口建图不现实Cacti 的Data Query能自动发现接口。进Data Queries → Add选SNMP - Interface Statistics然后建 Host Template 时勾上这个 Data Query。加设备时 Cacti 会 walk 接口表列出所有口让你勾选。# 手动触发一次 Data Query 调试 php /usr/share/cacti/cli/poller_reindex_hosts.php --idall --qid1参数说明--idall对所有设备重新索引--qid1是 Data Query ID。设备多的时候别频繁跑索引一次几百台要几分钟。如果发现接口列表不全检查交换机的 SNMP 是否限制了接口表返回有些设备默认只返回 up 的接口。5. 避坑与排查模板不生效时先看这五条5.1 现象图出来了但永远是 0原因OID 取到空值Cacti 把空当 0 画。最常见的是 OID 写错一位或者设备不支持这个 OID。解决在 Cacti 里进Utilities → SNMP Cache或直接用snmpget验证snmpget -v 2c -c public 192.168.10.21 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5.1注意末尾的.1是实体索引单值 OID 可能不需要。如果snmpget返回No Such Instance说明索引不对用snmpwalk看实际返回的索引。5.2 现象Data Source 建了但 Graph 不生成原因Host Template 里没关联 Graph Template或者 Graph Template 的 Graph Item Inputs 没绑定 Data Source。解决进Graph Management筛选Not Templated看有没有孤立图。再检查 Host Template 的Associated Graph Templates是否勾全。Cacti 的模板关联是单向的改了 Graph Template 不会自动更新已建设备要进设备点Reload Template。5.3 现象poller 跑不动图大面积断线原因Data Source 太多单次轮询超时。CactiEZ 默认poller是 cmd.php性能差设备超过 50 台就该换spine。解决CactiEZ 10.1 自带 spine进Settings → Poller把Poller Type改成spineMaximum Threads per Process设 4~8Number of PHP Script Servers设 2~4。然后调大SNMP Timeout到 2000msSNMP Retries到 2。5.4 现象华为交换机 CPU 图有多个值图很乱原因华为按实体返回多行模板用了单值 Data InputCacti 把第一行当全部。解决改用Get SNMP Data (Indexed)在 Data Template 里定义索引字段Graph Template 里用AGGREGATE或按索引分图。如果只想看整机 CPU用hwEntityCpuUsage的整机索引通常是主控板索引在 OID 末尾写死索引值。5.5 现象SNMP v3 配了但取不到数原因CactiEZ 10.1 的 v3 配置在 Devices 里但模板里的 OID 不变问题多半出在 auth/priv 协议不匹配。解决先在命令行验证 v3snmpwalk -v 3 -l authPriv -u cacti -a SHA -A authpass -x AES -X privpass 192.168.10.21 1.3.6.1.2.1.1.1.0-l authPriv是安全级别-a SHA是认证协议-x AES是加密协议。命令行通了Cacti 里照填即可。注意 Cacti 的 v3 密码字段有时对特殊字符处理有问题密码里别用$和#。6. 把模板做成可复用包导出、版本管理和批量下发模板建好之后真正省事的是把它做成可复用包。我一般会建一个 Git 仓库把导出的 XML 按厂商分目录# 导出三家模板 cd /usr/share/cacti/cli php export_template.php --template_id101 --output/root/cacti-templates/huawei_cpu.xml php export_template.php --template_id102 --output/root/cacti-templates/h3c_cpu.xml php export_template.php --template_id103 --output/root/cacti-templates/zte_cpu.xml # 批量导入到新环境 for f in /root/cacti-templates/*.xml; do php import_template.php --import$f --debug done逻辑说明export_template.php的--template_id可以在 Web 界面的模板列表里看到鼠标悬停链接就能拿到。导出后 XML 里包含 Data Template、Graph Template、Host Template 和它们的依赖关系导入时 Cacti 会自动解析依赖顺序。--debug会打印Imported或Skipped如果某个模板已存在会跳过不会重复建。参数说明导入前建议先备份 Cacti 数据库mysqldump -u cacti -p cacti cacti_backup.sql。Cacti 的模板导入不是事务性的中途失败可能留下半截模板回滚只能靠数据库备份。另外XML 里的hash是 Cacti 用来判重的如果你改了模板内容但没改 hash导入会被跳过这时要手动改 XML 里的 hash 或删掉旧模板再导。版本管理上我习惯给每个 XML 加一个CHANGELOG.md记录改了哪个 OID、适配了哪个型号。比如「2024-06 华为 S5720 的 CPU OID 从 .5 改成 .6因为新固件改了实体索引」。这样下次遇到同型号设备直接看 changelog 就知道该用哪个版本。最后一个技巧Cacti 的Automation功能Console → Automation → Rules可以按 SNMP sysDescr 自动匹配 Host Template。建一条规则如果sysDescr包含Huawei自动套Huawei S Series Switch模板。这样新设备上线Cacti 自动发现、自动建图不用手工点。规则里匹配字符串要写准华为的 sysDescr 一般是Huawei Versatile Routing Platform SoftwareH3C 是H3C Comware中兴是ZTE。匹配错了会把设备套错模板反而更乱。我自己踩过最深的坑是早期图省事把三家 OID 混在一个模板里结果华为设备取到 H3C 的 OID 返回空图全是 0排查了一下午才发现是模板套错。后来养成习惯每建一个模板先在命令行snmpwalk验证再进 Cacti 建建完立刻看Graph Debug确认取到值。这个顺序能省掉 80% 的返工。希望帮到你。本文还有配套的精品资源点击获取
返回列表