Cacti 1.2.31 介绍与选型指南

Cacti 1.2.31 介绍与选型指南:基于 RRDtool 的网络监控图形化平台的定位、LAMP+spine 核心架构、分布式轮询与模板化特性、适用场景限制,以及与 Zabbix/LibreNMS/Prometheus 等同类系统的量化选型对比,数据源均联网溯源(2026-10-20)。

CactiCacti2026/10/20

Cacti 1.2.31 介绍与选型指南

目标:面向准备搭建开源网络监控与图形化平台的工程师,系统介绍 Cacti 的定位、架构、功能与选型方法;本篇所有版本、社区与生态数据均来自官方渠道联网溯源(查询日期 2026-10-20),部署与命令细节见同专栏实测篇。

一、环境信息

本篇为认知与选型篇,全部数据来源联网取证,未引入本地实验结论:

  • 官方网站:https://www.cacti.net/ (首页明确 "Release 1.2.31",新闻列表 "Jun 15, 2026 Cacti 1.2.31 released!")
  • 源码仓库:https://github.com/cacti/cacti (GitHub Releases 最新 tag 为 release/1.2.31,releases.atom 订阅源确认 1.2.30 于 2025-03-23 发布、1.2.29 于 2025-02-02 发布)
  • 社区热度:GitHub stars 1.9k、forks 448(shields.io 徽章数据,查询日期 2026-10-20);官方论坛超过 160,000 帖子、20,000 注册用户(cacti.net 首页自述)
  • 许可证:GNU General Public License(GPLv2,源码包 LICENSE 文件与官网 Licensing 一节一致)
  • 版本线现状:1.2.x 为长期维护线(LTS),1.2.31 为当前最新稳定版;1.3 系列仍处于开发分支、尚未发布稳定版(截至 2026-10-20,GitHub Releases 无 1.3.x 条目)

二、软件概述

Cacti 是一套基于 RRDtool 的完整网络图形化(graphing)解决方案,官方定位为 "The Complete RRDtool-based Graphing Solution"。按官网自述,它提供一个健壮、可扩展的运行监控与故障管理框架:

💡 引用(cacti.net "About Cacti",查询日期 2026-10-20):Cacti 提供健壮且可扩展的运行监控与故障管理框架,利用 RRDtool 的数据存储与绘图能力构建;内置完全分布式、容错的数据采集框架,面向设备、图形与树的模板化自动配置,多种数据采集方式,可通过插件扩展,内置基于角色的用户/组/域管理、主题引擎与多语言支持,覆盖从局域网规模到数万台设备的复杂网络。

一句话概括:Cacti 把 SNMP/脚本采集到的时序数据落进 RRDtool 的环形数据库,再按需渲染成趋势图,并围绕这一核心提供了模板、自动发现、权限与插件等企业化能力。它诞生于 2000 年代初的 LAMP 时代,至今仍由 The Cacti Group 持续维护,2026 年仍在发布安全修复版本(1.2.31)。

💡 技术拓展:时序监控数据的存储方案不止 RRDtool 环形库一种。常见方案对比——

存储方案原理/特点适用场景
RRDtool 环形库(Cacti 采用)固定大小环形文件,旧数据自动聚合淘汰,磁盘占用恒定以趋势图为主、不需要长期细粒度回溯
Whisper/TSDB 文件(Graphite 采用)与 RRD 类似的预聚合文件,但更灵活自定义精度保留策略
时序数据库(Prometheus/VictoriaMetrics/InfluxDB)通用 TSDB,支持任意标签查询与长保留多维标签查询、长期原始数据保留
关系型数据库直存数据进 MySQL 等关系库小规模、需要与业务数据联查

Cacti 选择 RRDtool:单文件自管理、读写开销低、图形渲染原生集成,代价是数据粒度与保留策略在创建时固定。这也是它与 Prometheus 系最本质的架构差异。

三、核心架构

3.1 组件构成

Cacti 是典型的 LAMP 形态 Web 应用,核心组件分工如下:

组件技术实现职责
Web 控制台PHP + Apache/Nginx图形查看、模板管理、用户权限、设备与图形 CRUD
数据库MySQL 5.7+/MariaDB 10.x存设备、图形、模板、用户与轮询器配置等元数据
主轮询器poller.php(PHP CLI)每 5 分钟(可配 1 分钟)调度一次采集与后处理
数据采集器spine(C 多线程)或 cmd.php(PHP 遗留)SNMP Get/Walk、ping 探测、脚本数据采集
数据存储RRDtool 1.7+rra/ 目录下的 .rrd 环形文件,按 RRA 预聚合
计划调度cron / systemd timer定时触发 poller.php
辅助进程poller_automation.php、poller_maintenance.php 等自动发现、维护任务、报表、尖峰清理等

💡 技术拓展:数据采集器不止 spine 一种。主流选项对比——

采集器实现语言特点适用场景
spineC(多线程)官方推荐,单进程多线程,支持每设备多线程生产环境、数百台以上设备
cmd.phpPHP遗留采集器,按进程批量派生小规模、调试用
脚本数据输入PHP/Shell/Python与 SNMP 并存的数据输入方式自定义指标

Cacti 1.2 默认优先使用 spine;cmd.php 仍在源码树中保留作为兼容与兜底。本专栏部署篇均配置 spine。

3.2 数据流

一次完整轮询的数据流为:

  1. cron 每 5 分钟触发 php poller.php;
  2. poller.php 按 poller 分片派发设备列表给 spine(或 cmd.php);
  3. spine 对每台设备执行 SNMP 采集与 ping 探测,将结果写入数据库轮询输出表,并调用 RRDtool update 写入 rra/ 下的 .rrd 文件;
  4. 轮询收尾后,poller.php 依次运行 automation、maintenance、reports 等子进程完成自动发现、维护与报表;
  5. 用户在 Web 控制台查看图形时,PHP 按 graph 定义实时调用 RRDtool 渲染 PNG/JSON,图形为"按需生成",不占磁盘。

3.3 分布式能力

Cacti 1.2 内置 "Remote Data Collector"(远程轮询器)架构:中心节点持有主库,远程轮询器仅同步所需配置并在本地采集,配合 on-demand RRD 更新与双向复制,可支撑跨机房、数万设备规模的部署。官网将其描述为 "fully distributed and fault tolerant data collection framework"。

四、功能特性

按官网 About 与 1.2 源码树(cli/、plugins 机制、CHANGELOG)归纳,Cacti 1.2.x 主要特性:

  • 设备/图形/树三级模板化配置,内置数十种厂商设备模板(ACME、APC、Aruba、Cisco、Synology、Windows 等,add_device.php --list-host-templates 可枚举);
  • Automation 自动发现:按网段扫描、按规则自动建设备/图形/入树;
  • 数据查询(SNMP Query/Script Query/Script Server)与数据输入方法,扩展采集能力;
  • 聚合图形(Aggregate)、多主机图形、VDEF 等高级绘图能力;
  • 插件体系:Threshold(告警阈值)、Monitor、Weathermap、Syslog 等社区插件按包导入即装;
  • RBAC:用户/用户组/用户域三级权限,图形树按权限过滤;
  • 多语言(含简体中文)与多主题(Solar/Paw/dark 等主题引擎);
  • 数据源剖面(Data Source Profile):按 5 秒到 1 小时粒度定义采集与保留策略;
  • 报表(Reports)、尖峰清理(Spinekill)、RRD 审计与修复等运维工具链;
  • 远程轮询器与在线/离线数据同步(spine --mode=online/offline/recovery)。

五、快速开始(最小可用示例)

最小可用路径是 Ubuntu 仓库直装(以 Ubuntu 22.04 为例,命令要点来自 Ubuntu 官方软件源,完整逐命令实测流程见《Ubuntu 22.04 安装 Cacti 1.2.31 指南》):

sudo apt update
sudo apt install -y cacti
# 安装过程经 dbconfig-common 自动完成数据库建库与 Web 集成
# 随后浏览器访问 http://<服务器IP>/cacti/,默认账号 admin/admin,首登强制改密

装好并完成向导后,最小验证是访问登录页看到 "Login to Cacti" 标题,并在 Console → Devices 中看到默认的本机设备("Local Linux Machine")。若需要安装最新稳定版 1.2.31(Ubuntu 22.04 仓库内为较旧的 1.2.x 维护版),应走官方源码包路径,并在 Web 向导或 cli/install_cacti.php CLI 安装器中完成初始化——两条路径的完整命令与真实回显分别沉淀在同专栏的安装指南与部署指南中,此处不再重复。

六、适用场景与限制

6.1 适用场景

  • 网络设备为主(交换机、路由器、防火墙、AP、PDU、UPS)的流量与性能趋势监控;
  • 需要按模板批量纳管同类设备、按树组织图形的经典网管场景;
  • 中小规模(数十到数千台)且团队有 LAMP 运维基础的环境;
  • 需要离线部署、数据本地化(RRD 文件即数据,复制目录即迁移)的环境。

6.2 限制与注意

  • 图形维度固定:RRD 的 DS/RRA 在文件创建时确定,改粒度需重建文件(工具链有 structure_rra_paths、batchgapfix 等辅助);
  • 告警能力靠插件(如 Threshold 类插件)而非内置,告警语义弱于 Zabbix/Icinga 的触发器体系;
  • 1.2.31 属安全维护版本:官方 CHANGELOG 显示该版本集中修复了 30 项安全漏洞(含多条 CVE 的 SQL 注入、XSS、RCE 与鉴权绕过),因此从旧版升级到 1.2.31 是明确建议;也说明其 Web 面需按 D3 类加固实践维护;
  • PHP 8.1+ 与 MySQL 8/MariaDB 10.6+ 为当前版本线的基线要求,老系统升级需同步升依赖。

七、同类选型对比

7.1 量化对比

下表数据查询日期均为 2026-10-20(GitHub stars 来自 shields.io 徽章接口,取整展示):

系统定位采集方式存储GitHub stars上手成本
Cacti 1.2.31网络图形化与性能趋势SNMP/脚本 + spineRRDtool 环形库1.9k中(LAMP+模板)
Zabbix全栈监控与告警Agent/SNMP/代理自有 schema(MySQL 等)6.5k中高
LibreNMS自动发现型网络监控SNMPRRDtool/InfluxDB 等5k中
Nagios Core主机/服务状态检查插件脚本无时序库(状态文本)2.1k高(全手配)
Icinga 2Nagios 现代化分支插件/Agent自有+可选 TSDB2.2k中高
Munin极简趋势图插件脚本RRDtool2.1k低
Prometheus云原生指标与告警Pull/ExporterTSDB67k中(生态思维不同)
Checkmk企业级一体化监控Agent/SNMPRRDtool + 自有2.6k低中(商业版闭源)

关键差异:Cacti 与 Munin、LibreNMS 同属 RRDtool 系,图形与趋势是第一公民;Zabbix/Icinga/Nagios 是"状态检查+告警"系;Prometheus 是标签化 TSDB 系。Cacti 的相对优势在设备模板广度、图形组织(树/聚合/权限过滤)成熟,以及纯 Web 化的网管体验。

7.2 选型建议

  • 如果目标是"看网络设备的流量、带宽、CPU/内存趋势,并给网络团队分权限看图"→ Cacti 或 LibreNMS 首选;Cacti 模板化更保守稳定,LibreNMS 自动发现更激进;
  • 如果需要强告警编排、依赖拓扑、模板化触发器 → Zabbix;
  • 如果云原生/Kubernetes 指标 → Prometheus 体系,Cacti 不适合该场景;
  • 如果只想要几百个指标的极简趋势图 → Munin 更省事;
  • 已有 Nagios 状态监控、想补图形 → Cacti 可与之并存(Nagios 管状态、Cacti 管趋势是经典组合)。

社区与版本节奏方面:Cacti 1.2.x 从 1.2.22(2022-08)到 1.2.31(2026-06)保持约每年 1–3 次的安全维护节奏,社区论坛沉淀了 16 万+ 帖子,常见问题几乎都有历史答案;对内网隔离环境,官方源码包 + 本地 MariaDB 的离线部署路径成熟。

八、参考链接