传奇的Cacti与网络基础设施监控
如果你在十五年前做过系统管理工作,你可能还记得那些独特的绿色流量图。岁月流逝。Prometheus、Grafana、VictoriaMetrics以及许多其他系统相继出现。尽管如此,经典的Cacti项目仍然活跃。开发者们定期提交代码、为PHP 8适配代码、开发新的C语言轮询引擎,并准备发布1.3分支版本。
为什么一个来自2000年代的工具能够存续至今?答案很简单:网络设备的变化速度不像前端或云服务那么快。交换机、路由器、UPS设备和服务器机架仍然通过SNMP协议暴露指标数据。
平台组成
Cacti作为RRDtool轮询数据库顶层的可视化层工作。与传统时序数据库不同,RRDtool不会无限增长。文件大小在创建时就是固定的。旧数据会根据指定规则自动平均和压缩。
该项目由三个主要部分组成:
- 用于系统配置和图形查看的PHP Web界面
- 用于存储模板和用户的MySQL或MariaDB关系型数据库
- 按计划运行的设备轮询子系统
指标每隔几分钟收集一次。你可以使用基本的PHP轮询器或连接Spine。Spine引擎使用C语言编写,由于多线程支持运行速度更快。对于包含一千台设备的网络,这是唯一合适的解决方案,否则进程根本无法在时间内完成。
平台功能
为硬件工作创建模板。你不需要在供应商文档中手动搜索正确的OID。你只需获取一个现成的Cisco、Juniper、MikroTik或D-Link模板,将其附加到设备上,就能获得一组现成的图表。
网络扫描按计划运行。发现新设备?系统通过SNMP响应识别它并应用相应的自动化规则。
提供基于角色的访问控制以支持团队协作。你可以给值班工程师访问特定机架图表的权限,同时阻止其他部分的访问。
界面中的图表是交互式的。你可以用鼠标选择所需的时间间隔、切换比例、查看实时数据,并以CSV格式导出指标。
对IPv6和SNMPv3协议的支持为监控现代基础设施同时满足安全要求开辟了道路。
系统要求及源码编译
运行需要支持PHP 8.1的Web服务器。MariaDB 10.2或更高版本(或MySQL 8.0或更高版本)。系统工具需要RRDtool 1.8版本和Net-SNMP包。
项目依赖使用Composer部署:
使用开发分支 1.3 时,需要定期更新数据库表。为此,项目包含命令行工具:
内置审计功能帮助在每次更改后检查表结构完整性:
实际应用场景
网络通道监控仍然是该项目的主要领域。当你需要跟踪一百台交换机的端口利用率时,启动一套臃肿的采集器和导出器可能过于冗余。该系统半小时即可部署,消耗资源极少。
数据中心工程系统统计是另一个常见场景。监控机架温度、UPS相位负载和接口错误。该工具经过数十年的完善,正是为这类任务而生的。
架构支持插件。如果标准功能不够用,你可以安装用于发送通知或构建地理网络地图的模块。
Cacti并不试图在容器和动态Pod的世界里与Prometheus竞争。它是一个用于传统物理基础设施的工具。
如果你需要部署易于理解且对网络设备要求不高的监控,Cacti仍然是一个实用的选择。它节省内存,能够稳定运行多年,不需要不断修复配置文件。
相关项目