本文目录导读:

Cacti 是一个基于 RRDtool 的经典网络监控与绘图工具,它通过 SNMP(简单网络管理协议,Simple Network Management Protocol)轮询网络设备,并将数据存储在循环数据库中,最终生成可视化图表。
以下是使用 Cacti 进行网络绘图的完整工作流程和核心步骤:
核心逻辑与数据流
理解 Cacti 的绘图逻辑是配置成功的基础:
- 数据收集:Cacti 的
poller(轮询器)通过 SNMP 定期(默认5分钟)向目标设备请求数据(如接口流量、CPU负载)。 - 数据存储:获取到的原始数据被存入
RRD文件(轮循数据库文件,Round Robin Database),RRDtool 会自动进行数据合并(如将秒级数据汇总为小时、天、周、月、年数据),以节省磁盘空间。 - 数据呈现:当你打开 Cacti 网页时,它会调用 RRDtool 的
graph或graphv命令,从 RRD 文件中读取数据,动态生成 PNG 图片并返回给浏览器。
前置准备
在开始绘图前,需要确保以下条件已满足:
-
安装 LAMP/LEMP 环境:Linux + Apache/Nginx + MySQL/MariaDB + PHP,Cacti 需要数据库和 PHP 环境。
-
安装依赖组件:SNMP 客户端、RRDtool 和 PHP-SNMP 扩展。
# Debian/Ubuntu 示例 sudo apt-get install apache2 mysql-server php php-mysql php-snmp rrdtool snmp snmpd libapache2-mod-php # RHEL/CentOS 示例 sudo yum install httpd mariadb-server php php-mysql php-snmp rrdtool net-snmp net-snmp-utils
-
安装 Cacti 本体:从官网下载或使用包管理器安装。
sudo apt-get install cacti # 或从官网下载源码编译
配置 SNMP 被监控设备
确保待监控的网络设备(路由器、交换机、服务器)已开启 SNMP 服务。
设备端配置示例(以 Cisco 交换机为例):
enable configure terminal snmp-server community public RO # 设置只读团体名(默认是 public,建议修改为强密码) snmp-server location "机房A" # 可选,设置位置信息 snmp-server contact "admin@example.com" # 可选,设置联系人 exit write memory
Linux 服务器端配置(通过 net-snmp 守护进程):
编辑 /etc/snmp/snmpd.conf,添加或修改:
# 允许所有来源访问(生产环境应限制IP) com2sec notConfigUser default public group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.25.1 view systemview included .1.3.6.1.2.1.2 # 包含网络接口信息 access notConfigGroup "" any noauth exact systemview none none
重启服务:systemctl restart snmpd。
Cacti 中的核心配置步骤
登录 Cacti 网页界面(通常是 http://your-server-ip/cacti),初始用户名密码均为 admin。
添加设备(Devices)
- 路径:Console -> Management -> Devices -> Add。
- General Host Options:
- Description:输入设备名称(如“核心交换机01”)。
- Hostname:输入设备的 IP 地址或 FQDN。
- Host Template:选择设备类型,这是一个非常重要的步骤!选择正确的模板(如
Cisco Router或Generic SNMP Enabled Host)会自动创建相关的图形模板。
- SNMP Options:
- SNMP Version:选择对应版本(常用 v1 或 v2c)。
- SNMP Community:输入之前在设备上设置的只读团体名(如
public)。 - SNMP Port:默认 161。
- SNMP Timeout:建议设为 1000-1500 毫秒,避免超时。
- Downed Device Detection:选择检测方式(如SNMP、Ping)。
- Availability/Reachability Options:保留默认或按需修改。
- 点击 Create 按钮。
如果设备配置正确,页面顶部会出现绿色的 SNMP Information 图标(表示成功获取到 SNMP 信息),点击该图标可以查看设备详细信息。
创建图形(Create Graphs for this Host)
- 添加设备成功后,点击设备名称进入编辑页面,或直接点击 Create Graphs for this Host 链接。
- Graph Template Selection:Cacti 会根据你选择的设备模板列出可用的图形模板(如接口流量
Interface - Traffic、CPU负载、内存使用等)。 - Data Query:选择你要监控的具体数据源,对于接口流量,需要勾选对应的接口(如
Gi0/1)。 - 点击 Create 按钮,Cacti 会创建对应的数据源(Data Sources)和图形(Graphs)。
将图形添加到图形树(Graph Trees)
创建好的图形默认不会直接显示在“图形(Graphs)”页面,需要将它们组织到“图形树”中。
- 路径:Console -> Management -> Graph Trees -> Default Tree。
- 点击 Add 以添加分支(如“核心层”),然后在该分支下添加 Graph 或 Host。
- 选择刚才创建好的设备或图形,点击 Add。
- 这样做的好处是:在“图形”页面可以按层级浏览所有图表。
启动轮询器
Cacti 的核心工作依赖于定时执行的 poller 脚本,默认是 poller.php。
- 配置 Cron 任务:确保系统有一个 Cron 任务,每5分钟执行一次采集,通常安装包会自动配置,检查
/etc/cron.d/cacti文件。 - 手动测试:可以手动运行命令来立即触发一次轮询:
php /var/www/html/cacti/poller.php --force
查看是否有数据采集成功的信息,以及是否有错误提示。
查看图表
- 登录 Cacti 网页界面 -> Graphs 标签页。
- 在左侧的 Graph Tree 中选择你刚才创建的树和分支,右侧就会显示最新的图表。
- 在图表右上角可以选择时间范围(1小时、1天、1周、1个月、1年),以及图表样式(注释、时间线等)。
进阶优化与常见问题
-
优化数据库:
- 定期执行
php /var/www/html/cacti/poller_maintenance.php清理过期数据(可加入 Cron 任务)。 - 定期备份
/var/www/html/cacti/rra/目录(RRD 文件)和 Cacti 数据库。
- 定期执行
-
调整 RRD 存储策略:
- 默认的 RRD 存储周期可能太短(如只保留2年数据)。
- 编辑
/usr/share/cacti/cli/下的脚本或直接修改数据源定义,可以调整RRA:AVERAGE:0.5:1:600等参数,增加存储量。
-
常见问题排查:
- 图像不显示:检查
cacti.log(通常在/var/log/cacti/)中的错误,最常见的原因是:Cacti 没有权限创建 RRD 文件(检查rra/目录权限)、PHP 执行超时、SNMP 不通。 - SNMP 超时:测试命令
snmpwalk -v 2c -c public <设备IP> .1.3.6.1.2.1.2能否正常返回接口信息。 - 时间偏移:确保 Cacti 服务器的时间是准确的(使用 NTP 同步),时间不准会导致图表数据混乱。
- 大量设备导致性能问题:可开启 Spine(Cacti 的高速轮询引擎),或使用多个 Poller 分担负载。
- 图像不显示:检查
Cacti 绘图的最佳实践
- 先验证 SNMP:在 Cacti 配置前,一定要先用
snmpwalk或snmpget工具手动测试设备的 SNMP 响应。 - 选择合适的模板:利用已有的设备模板和图形模板可以大幅减少重复工作。
- 合理的图形树结构:按地理位置、功能分区、业务线等维度建立清晰的树形目录。
- 定期维护:及时清理无效设备、优化数据库、管理 RRD 文件的存储周期。
希望这份指南能帮助你顺利使用 Cacti 搭建网络监控系统!如果有具体的错误信息或更具体的需求,欢迎继续提问。