简介:面向使用 CactiEZ 10.1 搭建网络监控平台的运维人员,这份模板合集聚焦华为、中兴、H3C 等交换机及常见网络设备的主机监控配置,可减少逐项编写数据查询与图形模板的重复工作,适合机房、校园网和企业内网中需要快速上线监控项的日常运维场景。压缩包共 16 个文件,以 15 个 XML 主机模板和 1 个 TXT 说明为主,体积约 314KB;XML 可直接导入 Cacti 使用,TXT 便于查看模板清单与导入提示。模板覆盖华为 S2300/S2700/S3700、S5700、S7703、S9000,中兴 ZXR2609,H3C AR2811 与 S2000 系列,并补充 APC 智能 UPS、惠普 SNMP 打印机墨量、海康威视硬盘录像机、Windows 主机及非 SNMP 主机等场景,部分华为模板可监控 CPU、内存、光功率和流量,方便按设备类型套用并统一图形与阈值设置。已有 2059 人学习,适合需要快速补齐监控项、减少手工建模板并保持配置统一的网络管理员参考。
1. 三台交换机 SNMP 都能通,模板导完却没图:CactiEZ 10.1 的第一次翻车
去年在一间只有半个机柜的机房,我把 CactiEZ 10.1 装进一台退役的 1U 服务器,目的很朴素——把华为、中兴、H3C 三台交换机的 CPU、内存、端口流量画到同一个 Console 里。snmpwalk 手动取数全通,华为、中兴、H3C 的交换机主机监控模板也一口气导进了 Cacti,设备列表一片绿。第二天早上打开图形树,空白。这套组合在中小机房太常见了,常见到很多人以为「导入即完成」。CactiEZ 10.1 加三家厂商交换机主机监控模板这件事,装不好不会报错,只会安静地不出图,等真出故障要查历史流量时,才发现 RRD 文件根本没长起来。这篇写给准备自己搭一套的运维和开发,从虚拟机规格一路写到图跑起来。
2. 装机前把底子打好:CactiEZ 10.1 的虚拟机规格与 SNMP 前置
CactiEZ 10.1 是那种「一个 ISO 装完就带 Cacti + MariaDB + RRDtool + spine + 一堆插件」的一体化镜像,好处是不用自己拼 LNMP,坏处是默认参数按小规模调优,你如果直接拿它去接几十台交换机,往往在第三天才开始暴露问题。所以在点安装之前,先把规格和前置条件定下来,比装完再回头调要省事得多。
2.1 给多少 CPU、内存、磁盘才算够
Cacti 的性能瓶颈几乎从来不在 Web 端,而在两件事:每 5 分钟一轮的轮询能不能跑完,以及 RRDtool 的随机小 IO 磁盘扛不扛得住。RRD 文件是定长的环形数据库,每次更新都是一次随机写,几千个数据源落在机械盘上,iowait 会直接把轮询时间拖过 300 秒,然后图形开始断点——这是最典型的「配置没错但看起来就是有病」的场景。
我给过一个按设备规模粗估的规格表,实际部署时按数据源数量往上取一档更稳妥:
| 被监控设备数 | 数据源(Data Source)数量级 | vCPU | 内存 | 系统盘 | 备注 |
|---|---|---|---|---|---|
| ≤ 20 台 | 2000 以内 | 2 核 | 4 GB | 60 GB | 单机跑 cmd.php 也能撑住 |
| 20 ~ 80 台 | 2000 ~ 8000 | 4 核 | 8 GB | 120 GB | 必须切 spine,建议 SSD |
| 80 ~ 200 台 | 8000 ~ 20000 | 4 ~ 8 核 | 16 GB | 200 GB | SSD 基本是硬要求 |
数据源数量不等于端口数,一台 48 口的接入交换机如果全勾端口流量图,再叠加 CPU、内存、温度、风扇、电源,数据源轻松破百。所以第二件事是先想清楚「哪些端口值得画」,上行口、互联口、服务器接入口优先,access 口按段抽检即可。我一般会让端口图形模板只对 ifOperStatus 为 up 且 ifSpeed 大于等于 1G 的接口批量生成,这一步在后面的「Create Graphs for this Host」里操作,能省掉一半以上的无效数据源。
磁盘还有一个容易被忽略的点:/var/www/html/rra目录所在的文件系统。CactiEZ 默认可能把根分区给得不大,几百台设备跑半年后 RRD 文件能吃掉几十 GB,装之前把/var/www/html单独挂一个分区,后面扩容不用停机搬数据。
2.2 装完头十分钟要做的三件事
系统装完、网线插上、能 ping 通之后,先别急着开浏览器。下面三件事我每次都会在十分钟内做完,顺序不要换:
# 1. 定死时区。Cacti 的图形横轴按本地时区渲染,时区错了峰谷会整体平移 timedatectl set-timezone Asia/Shanghai timedatectl status # 2. 校时。轮询周期是 5 分钟,系统时间飘了图形会出现错位和空洞 systemctl enable --now chronyd chronyc sources -v # 3. 确认轮询器和 cron 任务在 which spine || ls -l /usr/local/spine/bin/spine crontab -l | grep -i poller第一件事的原因值得多说两句。RRD 里存的是 Unix 时间戳,展示时才换算成本地时间,时区一旦设成 UTC,你在 Console 上看到的高峰时段会比实际晚 8 小时,排障时对着业务日志找峰值,能找一下午。第二件事,交换机和应用服务器的时间如果和 Cacti 差出几分钟,SNMP 数据本身不会有问题,但你拿 Cacti 的图去和交换机自己的日志对时间,就对不上了。第三件事是确认 spine 二进制存在、cron 里那条*/5 * * * *的 poller 任务在跑,CactiEZ 一般都配好了,但升级或恢复快照后经常丢。
接着进浏览器,访问http://<服务器IP>/,用默认账号登录后第一件事是改密码,第二件事是把 root、数据库 root 的口令全换掉。一体化镜像的初始口令是公开信息,放在内网也不该留着。改完密码顺手在 Console 的 Settings → General 里核一遍时区,Web 侧和系统侧保持一致。
2.3 交换机侧开 SNMP:华为、中兴、H3C 三家命令对照
模板能不能出图,一半取决于设备侧给没给够。三家厂商的命令风格差异很大,但要求是同一个:只读社区串、绑定源地址 ACL、开启 v2c(或 v3),并且确保 64 位计数器可读。
# 华为 VRP:进入系统视图配置 SNMP v2c 只读 system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read cipher Nms@Read2024 snmp-agent sys-info contact netops snmp-agent sys-info location idc-a-rack03 # 仅允许 Cacti 服务器地址访问,最小权限 acl number 2000 rule 5 permit source 10.10.10.20 0 quit snmp-agent community read cipher Nms@Read2024 acl 2000# H3C Comware V7:注意 read 后面跟 simple 还是 cipher,跟口令是否已加密有关 system-view snmp-agent snmp-agent sys-info version v2c snmp-agent community read simple Nms@Read2024 snmp-agent sys-info contact netops snmp-agent sys-info location idc-a-rack03# 中兴 ZXR10:走 snmp-server 系列命令,view 用默认只读视图 configure terminal snmp-server community Nms@Read2024 view defaultview ro snmp-server host 10.10.10.20 version 2c Nms@Read2024 end write三家的命令看着不一样,落到 Cacti 侧其实只有四个参数要对齐:协议版本 v2c、社区串、端口 161、源地址。华为和 H3C 的community read后面到底写simple还是cipher,取决于你输入的是明文还是密文,写成cipher后面跟明文,设备会把它当密文解析,结果就是 Cacti 侧一直超时而设备侧看不出任何异常,这个坑后面还会专门提。
配置完在 Cacti 服务器上用 snmpwalk 验证,三条命令分别对应「设备活着」「接口表能取」「64 位计数器能取」:
# 1. 最基本的连通性验证,能取到设备描述说明社区串和 ACL 都没问题 snmpwalk -v2c -c 'Nms@Read2024' -t 3 -r 1 10.10.10.31 sysDescr.0 # 2. 接口表,模板自动生成端口图靠的就是这份索引 snmpwalk -v2c -c 'Nms@Read2024' 10.10.10.31 ifDescr | head -n 20 # 3. 64 位高速计数器,千兆以上端口必须走这个,否则流量图会周期性回绕 snmpwalk -v2c -c 'Nms@Read2024' 10.10.10.31 1.3.6.1.2.1.31.1.1.1.6 | head -n 5-t 3是单次超时 3 秒,-r 1是重试 1 次,这两个参数在排查慢设备时很有用,默认的 1 秒超时容易被误判成不通。第三条命令如果返回No Such Object,说明设备不支持 IF-MIB 的 64 位计数器或者被 view 挡住了,这种情况下端口流量模板要么降级用 32 位计数器,要么干脆不画——硬上 32 位计数器在万兆口上,流量图的尖峰会被削掉,看着像被限速。
3. 模板导入:四类对象、导入顺序与勾选项
模板包拿到手,别急着往 Console 里拖。Cacti 的模板体系是四层引用关系,顺序错了会一路报「找不到引用的数据模板」,而且报错信息往往指向的不是真正出错的那个文件。
3.1 模板包里到底有哪几样东西
按 Cacti 的数据模型,一份完整的厂商监控模板包,解开之后通常包含下面四类对象,各自的作用和导入顺序如下:
| 对象类型 | 在 Cacti 里的位置 | 作用 | 导入顺序 |
|---|---|---|---|
| Data Input Method(数据输入方法) | Console → Data Collection → Data Input Methods | 定义「怎么取数」,如 Get SNMP Data、SNMP - Interface Statistics | 0(一般已内置,缺失才要补) |
| Data Template(数据模板) | Console → Data Collection → Data Templates | 定义 RRD 文件结构、采集的 OID、最大最小值 | 1 |
| Graph Template(图形模板) | Console → Graph Templates | 定义画哪条曲线、用什么颜色、单位换算 | 2 |
| Host Template(主机模板) | Console → Host Templates | 把若干图形模板打包,添设备时一键套用 | 3 |
真正的依赖链条是:Host Template 引用 Graph Template,Graph Template 引用 Data Template,Data Template 引用 Data Input Method。所以导入时的实际顺序必须是数据输入方法 → 数据模板 → 图形模板 → 主机模板。Cacti 的导入页面会自动处理其中的依赖,但如果你分两次导入、中间漏了一批,就会出现「主机模板里勾不上某个图」的情况。
顺带说一句版本差异:Cacti 1.x 的导入入口在 Console → Import/Export → Import Templates,0.8.x 时代是 Console 顶层的 Import Templates。CactiEZ 10.1 里跑的是 Cacti 1.x,按前者找。老模板包从 0.8 导出来的,通常会带一个版本头,1.x 导入时会提示兼容性,处理方式在第五条踩坑里细说。
3.2 在 Console 里导入 XML 的完整操作
导入是纯 Web 操作,没有命令行,所以这里用步骤清单代替代码块。整个流程我建议先预览一遍再落库,尤其是第一次导某个厂商的模板包:
- 进 Console → Import/Export → Import Templates。
- 点「浏览」选模板包里的
.xml.gz文件。如果包里是多个文件,一个个导,一次一个,不要图快全选。 - 勾选「Import Data Templates」「Import Graph Templates」「Import Host Templates」三个框。只勾第一个,后面两层就不会落库。
- 先点「Preview Import」,页面会列出「将新增」「将覆盖」「将跳过」三类条目。新增条目数量应该和模板包里的对象数对得上,如果显示全是「跳过」,多半是这些模板之前已经导过、hash 一致。
- 确认无误后点「Import」,等页面返回结果。
- 重复第 2 到 5 步,把华为、中兴、H3C 三个包依次导完。
导入完成后不要只看页面提示的「成功」,用一条 SQL 把三类模板都数一遍,比翻页面快:
-- 连到 Cacti 库,确认三家模板是否真的落库 -- 库名一般是 cacti,CactiEZ 默认就是它 SELECT id, name, hash FROM data_template WHERE name LIKE '%Huawei%' OR name LIKE '%ZTE%' OR name LIKE '%H3C%'; SELECT id, name, hash FROM graph_template WHERE name LIKE '%Huawei%' OR name LIKE '%ZTE%' OR name LIKE '%H3C%'; SELECT id, name FROM host_template WHERE name LIKE '%Huawei%' OR name LIKE '%ZTE%' OR name LIKE '%H3C%';这里的hash字段是模板内容的校验值,Cacti 靠它判断「这个模板是不是同一份」。同一个模板导两次、内容没变,hash 相同,第二次会被跳过;内容改过(比如你手动调了 OID),hash 变了,就会新建一条同名记录并在名字后面加_1,于是你会有两套长得一模一样的模板,后面添加设备时极易勾错。查询结果里出现带后缀的重复项,就该停下来清理了。
3.3 导入后必须做的三处核对
模板导进去了不代表能用,有三处必须人工核一遍,这三处也是后面出图失败的三个高发点。
第一处是主机模板里到底勾了哪些图形模板。进 Console → Host Templates,点开「H3C 交换机」这类模板,看下方的 Associated Graph Templates 列表。如果列表是空的,说明导入时图形模板那层没勾上,套这个主机模板添设备,一张图也不会出。
第二处是图形模板和数据模板的关联。进 Console → Graph Templates,随便点开一个端口流量图,看 Graph Template Items 里每条曲线对应的 Data Source 下拉框指向的是哪个数据模板。指向错了,画出来的曲线会用错误的 OID 取数,表现为图有线但数值离谱。
第三处是数据模板里的索引类型。端口类模板的 Data Source Item 一定有一个索引项,取值来自 ifIndex、ifDescr 或 ifName 三选一。这一项决定了「Create Graphs for this Host」时能不能自动把 48 个端口展开成 48 张图。我一般统一选 ifIndex,因为它是纯数字、跨设备稳定,ifDescr 带厂商前缀和空格,生成 RRD 文件名时容易出问题。
核对完这三处,模板这一层就算干净了。接下来是把它套到具体设备上。
4. 加设备:主机模板勾选与 SNMP 参数填写
添设备这一步,界面上一共十来个字段,但真正决定成败的只有五六个。新手最容易犯的错是把该勾的全勾上,觉得「多监控总没坏处」,结果数据源翻倍、轮询超时、图形重复。
4.1 添加主机那十来个字段,哪些必须改
进 Console → Devices → Add,字段含义和填写建议如下:
| 字段 | 建议值 | 不改的后果 |
|---|---|---|
| Description | 设备别名,如hw-core-sw01 | 图例全是 IP,出图后分不清哪台 |
| Hostname | 设备管理 IP | 空着直接存不了 |
| Host Template | 选对应厂商那一套,只选一套 | 不选则无图;多选则重复出图 |
| SNMP Version | v2c(或 v3,见下) | 默认值可能就是 v1,取不到 64 位计数器 |
| SNMP Community | 与设备侧完全一致,含大小写和特殊字符 | 大小写差一个字母就超时,且设备侧无日志 |
| SNMP Port | 161 | 改过端口的要同步改 |
| SNMP Timeout | 500 ms 起步,跨网段调到 1000 ms | 跨网段默认值容易随机超时 |
| Downed Host Detection | SNMP 或 Ping,别选 Disabled | 网络抖动不会告警 |
| Device Threads | 1 | 调大反而让单设备并发过高被限速 |
| Disable Host | 不勾 | 勾了就完全停止轮询 |
社区串那一行值得单独说。华为、H3C 的命令行里,community read cipher后面的内容会被当作密文处理,而simple后面才是明文。如果你在设备侧写的是cipher却填了明文口令,设备不会报错,只是默默地不认这个社区串,表现就是 Cacti 侧一直超时、设备侧没有任何异常日志。这种「玄学」问题我遇到过不止一次,排查办法是在 Cacti 服务器上直接 snmpwalk,一次就能定位是设备侧还是 Cacti 侧。
SNMP v3 的取舍也说一句:v2c 是明文传输,内网同网段够用;如果 Cacti 和交换机要跨网段、或者有机房合规要求,就上 v3 的 authPriv。v3 三个参数——用户名、认证协议与口令、加密协议与口令——必须四处完全一致,其中加密协议 SHA 和 AES 的搭配最常出问题,设备侧默认可能是 MD5/DES。
4.2 主机模板为什么不能全勾
Cacti 的 Host Template 支持多选,多选之后设备会同时套用几套模板的图形。这在一种情况下有用:你想让同一台设备既出厂商的 CPU 图,又出标准的接口流量图。但把华为、中兴、H3C 三套模板全勾在一台设备上,就属于自己给自己埋雷。
原因在于,三家模板里往往都带了「端口流量」类的图形模板,而这些图形模板最终都指向同一个数据输入方法(SNMP - Interface Statistics)。设备一旦同时套三套,同一条曲线会有三份数据源在写,RRD 文件被重复更新,图上数值会成倍跳,轮询时间也翻三倍。
更关键的一点是:端口流量图根本不靠 Host Template 出来。Cacti 里端口图的正确入口是 Data Query——在设备页面的 Associated Data Queries 区域找到「SNMP - Interface Statistics」,点「Create Graphs for this Host」,页面会列出这台设备所有接口,你勾选需要的那些,Cacti 才按接口逐个生成图和数据源。Host Template 里的端口模板只是给了默认配置,真正决定「画哪几个口」的是这一步。
我的习惯是:主机模板只勾一套厂商模板,负责 CPU、内存、温度、电源、风扇这类固定指标;端口图全部走 Data Query 手动勾选,只勾上行口和互联口,一次成型。
4.3 让第一张图出来:数据源、轮询器与权限
设备保存之后,Cacti 不会立刻出图,要等下一轮轮询跑完才有数据点。想快点看到结果,手动触发一次轮询:
# 手动跑一次轮询,验证数据源配置是否可用 # 用 Web 服务用户执行,避免 rra 目录写权限问题 sudo -u apache php /var/www/html/poller.php # 如果系统用的是 spine(CactiEZ 默认),可以单独跑 spine 看输出 # 路径以 which spine 的结果为准 sudo -u apache $(which spine) 2>&1 | tail -n 20第一条命令跑完会打印本轮处理了多少数据源、耗时多少秒。正常情况下,二十来台设备、两千个数据源,spine 应该在 20 秒内结束;如果命令行显示跑了 200 秒以上,说明数据源太多或者磁盘太慢,得回头调规格。
sudo -u apache这段不能省。Cacti 的 rra 目录、log 目录属主是 Web 服务用户,用 root 跑一次 poller,会生成一批属主为 root 的 RRD 文件,之后 Web 侧就再也写不进去了,图全部停在手动跑的那一刻。这个坑很隐蔽,因为表面上「图有了」,第二天才发现不更新。
轮询器本身的配置也要看一眼:Console → Configuration → Settings → Poller,Poller Interval 保持 5 分钟,Poller Type 选 spine,Cron 方式。改动之后记得回命令行确认 crontab 里那条任务存在且未被注释。
5. 避坑:模板导进去了图不出数据的五个典型现场
前四章都是「按步骤应该能成」的部分,这一章全是「按步骤做了但没成」的部分。下面五条是我在实际环境里反复遇到的,每条按现象、原因、解决三段写,遇到问题时按顺序对照着查,绝大多数情况能在十分钟内定位。
5.1 现象:设备状态 Up,图形树里一片空白
现象很典型:Devices 列表里设备是绿色,SNMP 测试按钮点下去也返回成功,但 Graphs 树里对应的设备节点展开是空的,或者有节点没图。
原因通常有三个,按出现频率排:一是 Host Template 里根本没关联图形模板(第 3.3 节第一处核对没做);二是关联了图形模板,但设备的「Create Graphs for this Host」那一步没做,数据查询没展开;三是图生成了,但数据源对应的 RRD 文件不存在,Cacti 显示为「Not updated」。
解决办法是顺着链路倒查。先进 Console → Graph Management,用设备名过滤,看有没有图记录。有记录但显示 Not updated,说明 RRD 文件没建起来,进 Console → Data Sources 找到对应数据源,看 Data Source Path 指向的文件在/var/www/html/rra下是否存在;不存在就手动选中数据源,点「Create」旁边的「Refresh」重建。如果没有图记录,回到设备页面看 Associated Graph Templates 是否为空,空的话就是模板没套上,重新编辑设备勾选主机模板;不为空但没生成,就去 Create Graphs for this Host 把接口勾上。
5.2 现象:SNMP 超时但 ping 通
设备 ping 得通,从 Cacti 服务器 telnet 161 端口也通,但 Cacti 里设备状态是红色,snmpwalk 报 Timeout。
原因排第一的永远是 ACL:华为的snmp-agent community ... acl、H3C 的snmp-agent community read ... acl,很多设备出厂或者前任配置里绑了一条只允许特定网段访问的 ACL,你从新的 Cacti 服务器去取,报文直接被设备丢掉,设备侧连一条 SNMP 认证失败日志都不会留。第二常见的是社区串加密方式写错,就是前面说的cipher后面跟明文。第三是 Cacti 服务器多网卡、去往设备网段的路由走了另一张网卡,设备侧的 ACL 只放行了其中一张卡的地址。第四是设备侧对 SNMP 请求做了限速,snmpwalk 连续取表时会被丢包,表现为前面几个 OID 能取到、后面全超时。
解决顺序是:先在 Cacti 服务器上用snmpwalk -v2c -c 口令 -t 3 -r 1 IP sysDescr.0复现,确认是全网不通还是大表才超时;不通就在设备侧display snmp-agent community(华为)、display snmp-agent community read(H3C)看实际生效的配置和 ACL;同时在设备上抓一次报文或者看 SNMP 统计计数,确认请求有没有到达设备。大表才超时的话,把 Cacti 里该设备的 SNMP Timeout 调到 1000 ms,或者接受它、只监控关键 OID。
5.3 现象:导入报 XML 版本不兼容,或者导入后出现一堆重名模板
页面提示导入失败、错误信息里带版本号,或者导入成功了但 Host Templates 列表里出现「华为交换机」和「华为交换机_1」两条。
原因是模板包的来源版本和当前 Cacti 版本不匹配。0.8.x 时代导出的模板包,XML 结构、hash 算法和 1.x 有差异,直接导会报兼容性错误;而重复导入同一个包,只要 hash 变了(哪怕只是 XML 里的注释改了),Cacti 就会当成新模板插入并加后缀。
正确的处理方式有两步。导入前先mysqldump -u root -p cacti > /root/cacti_$(date +%F).sql备份,这一步是后悔药,任何时候都别省。然后用 Preview Import 先看会新增什么、跳过什么,发现全是「新增」且对象数和预期翻倍,就取消。已经产生重复项了,进对应的模板列表页删掉带_1后缀的那条,删之前确认没有设备在用它——Cacti 删除模板时会提示「有 N 个对象引用」,看到非零就先去设备页把这些设备改成正确的模板。
5.4 现象:图出来了,但流量恒为 0,或者数值成倍跳
图有曲线、有时间轴,但曲线贴着 0 走,或者尖峰值明显是实际带宽的两三倍,还周期性归零。
恒为 0 通常是 OID 选错或索引对不上:模板里写的是ifHCInOctets,但数据源里的接口索引和设备的 ifIndex 错位,取的永远是一个不存在的接口。成倍跳则是另一回事:数据源配置和实际流量单位不匹配,比如曲线画的是 bps,数据源取的是 Bytes,中间没乘 8;或者最大值设成了 100M 而实际是万兆口,超出部分被截断后又被 RRD 当成回绕处理,图上就会出现规律性的锯齿。
还有一种是 32 位计数器回绕。ifInOctets是 32 位,千兆口满速跑不到 5 分钟就会溢出一次,图上表现是每隔一个轮询周期掉到 0,看着像瞬间断流。解决办法是把模板里的 OID 统一换成1.3.6.1.2.1.31.1.1.1.6(ifHCInOctets)和1.3.6.1.2.1.31.1.1.1.10(ifHCOutOctets),同时确认设备的 SNMP 版本是 v2c 以上——v1 取不到 64 位计数器。改完之后已有的数据源不会自动更新 OID,要在 Data Sources 里逐个确认,或者直接重新生成这部分图。
5.5 现象:poller 跑不完,图形上出现规律的断点
前一天的图还完整,某天开始每隔几小时出现一段空白,或者顶部的时间戳显示「Last Run: 12 分钟前」。
原因是轮询周期超时。默认 5 分钟的窗口里跑不完所有数据源,Cacti 会等到下一轮继续,中间那段就没数据。常见诱因有三个:数据源数量超过了这台机器的处理能力(回到第 2.1 节看规格表);还在用 cmd.php 而不是 spine;rra 目录在机械盘上,随机 IO 撑不住。
处理方式按代价从小到大:先在 Settings → Poller 里把 Poller Type 切到 spine,Maximum Threads 设成 CPU 核数的 2 倍;再清理无用数据源,把早就下线的设备、没人看的 access 口图删掉;最后才是加规格。清理这一步收益很直观,我见过一个环境光是把已下架设备的图清掉,轮询时间从 400 秒降到 60 秒。判断当前压力,进 Console → Utilities → Technical Support 看轮询耗时统计,或者直接time sudo -u apache php /var/www/html/poller.php手动测一轮。
6. 装完怎么验证:三层核对让模板真正跑起来
图出来了不等于装对了。Cacti 这类监控装上之后最怕的是「看起来在跑」——曲线有、颜色有、时间轴在动,但数值是错的,直到某天要在图上定位一次流量异常才发现对不上。所以最后这一步验证,我一般分三层做,从命令行到图形界面到轮询日志,每层都有一个明确的合格标准。
6.1 三层核对法
第一层在命令行。挑一台被监控的交换机,对模板里用到的关键 OID 逐个 snmpwalk,把数值记下来,尤其是 CPU 和内存这两类。华为的 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;H3C 的 CPU 和内存则在1.3.6.1.4.1.25506.2.6.1.1.1.1.6和...1.8附近。中兴的实现差异较大,以模板包里实际写的 OID 为准。取到的数值和 Cacti 图上最后一个数据点应该在同一量级,如果图上显示 3% 而命令行是 67%,说明模板取错了 OID,改数据模板而不是改图。
第二层在单图页面。进 Graph Management,随便点开一张图,页面上会显示这张图对应的 RRD 文件路径和更新状态。点「Debug」能看到 Cacti 实际执行的 rrdtool 命令和返回结果,这一步能直接暴露「数据源存在但取数为空」的情况——rrdtool update 的参数里如果没有数字,就是 SNMP 取数失败了。
第三层看轮询日志。Console → Utilities → View Poller Cache,能看到每个数据源的执行命令、上次运行时间、下次运行时间。任何一个数据源的「Last Run」比当前时间早出十分钟以上,就是轮询没覆盖到它。再配合 Technical Support 页面的轮询时长统计,判断整体压力。
| 验证层 | 入口或命令 | 合格标准 |
|---|---|---|
| 数据正确性 | snmpwalk 关键 OID | 与图上最后一个点同量级 |
| 图形可用性 | Graph Management → Debug | rrdtool update 参数含有效数字 |
| 轮询健康度 | View Poller Cache / Technical Support | 全部数据源 Last Run 在 5 分钟内,单轮耗时 < 240 秒 |
三层都过了一遍,这套 CactiEZ 10.1 加华为、中兴、H3C 交换机主机监控模板的环境才算真正落地。往后再加设备,走的还是同一套流程:确认规格余量、导入模板先预览、主机模板只勾一套、端口图走 Data Query 手动勾、手动跑一次 poller 看耗时。
从那以后我每次装完 Cacti,都会在新环境里留一台设备跑满 24 小时再交付,第二天早上第一件事就是打开 Graph Management 看有没有 Not updated,再翻一遍 poller 耗时。这个习惯救过我两次——一次是发现磁盘写满导致 RRD 全挂,另一次是发现某个厂商模板的 OID 在新型号上已经废弃。希望帮到你。
本文还有配套的精品资源,点击获取