develop当 Cacti 在近 20 年前最初开发时,MySQL 还没有像现在这样成熟。当 The Cacti Group 着手设计 Cacti 1.x 时,决定强制用户对许多表使用 InnoDB 存储引擎。这是因为 InnoDB 存储引擎在您的网站有多个并发登录时能提供更好的用户体验。虽然速度稍慢,但它也为开发者提供了更强的韧性。
话虽如此,在升级之前,您必须对 MySQL/MariaDB 进行几项更改,并且需要重启服务。根据您的 MariaDB 或 MySQL 版本,以下设置可能是必需的,或者已经默认启用:
[mysqld]
# 多语言支持所必需
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 内存调优 - Cacti 会在升级时提供建议
max_heap_table_size = XXX
max_allowed_packet = 500M
tmp_table_size = XXX
join_buffer_size = XXX
sort_buffer_size = XXX
# 兼容性重要设置
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# innodb 设置 - Cacti 会在升级时提供建议
innodb_buffer_pool_instances = XXX
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = XXX
innodb_sort_buffer_size = XXX
innodb_doublewrite = ON
# 必需
innodb_file_per_table = ON
innodb_file_format = Barracuda
innodb_large_prefix = 1
# 并非所有版本都支持
innodb_flush_log_at_timeout = 3
# 适用于 SSD/NVMe
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 10000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
必需的设置非常重要。否则,您在升级时会遇到问题。带有 XXX 的设置,Cacti 会在升级时提供建议。在升级过程中重启 MySQL/MariaDB 来调整这些设置并不罕见。请在开始升级前特别注意这一点。
在升级之前,您应该先进行这些必需的更改,然后重启 MySQL/MariaDB。之后,您可以通过运行以下脚本(假设您使用 bash)来节省时间并避免潜在错误:
for table in `mysql -e "SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema='cacti' AND engine!='MEMORY'" cacti | grep -v TABLE_NAME`;
do
echo "Converting $table";
mysql -e "ALTER TABLE $table ENGINE=InnoDB ROW_FORMAT=Dynamic CHARSET=utf8mb4" cacti;
done
这会将任何 InnoDB 或 MyISAM 表转换为 Barracuda 文件格式、动态行格式和 utf8mb4。请注意,如果您一直在未开启 innodb_file_per_table 的情况下使用 MySQL 或 MariaDB,您最好备份数据库,通过删除 /var/lib/mysql 目录中的 ib* 文件来重置 InnoDB,然后恢复您的数据库以及 MySQL/MariaDB 表和权限。在采取此类步骤之前,您应始终在测试服务器上练习,直到您对该更改感到放心为止。
祝您好运,尽情享受 Cacti!
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
update version set cacti = '1.1.38';
注意: 请将上述版本号更改为正确的版本,否则安装程序可能会从之前的版本进行升级。
Cacti 是一个完整的网络图形化解决方案,旨在利用 RRDtool 的数据存储和绘图功能,提供以下特性:
远程和本地数据采集器
设备发现
设备和图形创建的自动化
图形和设备模板
自定义数据采集方法
用户、组和域访问控制
所有这些都封装在一个直观、易用的界面中,既适用于局域网规模的安装,也适用于包含数千台设备的复杂网络。
Cacti 由 Ian Berry 在 2000 年代初作为高中项目开发,已被数千家公司和爱好者用于监控和管理其企业网络和数据中心。
Cacti 应能在任何 Linux、UNIX 或 Windows 操作系统上运行,需满足以下要求:
PHP 5.4+
MySQL 5.1+
RRDtool 1.3+,推荐 1.5+
NET-SNMP 5.5+
支持 PHP 的 Web 服务器
PHP 还必须编译为独立的 cgi 或 cli 二进制文件。这是通过 cron 进行数据采集所必需的。
我们将 php-snmp 模块标记为可选。只要您不使用 ipv6 设备,或不使用 snmpv3 引擎 ID 或上下文,那么使用 php-snmp 应该是安全的。否则,您应考虑卸载 php-snmp 模块,因为它会带来问题。我们已知晓 php-snmp 的问题,并正在寻求参与 php 项目以解决这些问题。
RRDtool 有多个版本可用,其中大多数都受 Cacti 支持。如果您在渲染图形时遇到问题,请记得确认您的 Cacti 设置与 RRDtool 版本相匹配。
文档随 Cacti 版本一起提供,也可在文档仓库中查看。
请访问主要的 Cacti 网站,获取下载、变更日志、发布说明等更多信息!
鉴于 Cacti 的规模庞大,论坛往往会产生相当可观的流量。尽您所能回答基本问题会大有帮助,因为我们无法同时出现在所有地方。通过参与 Cacti 社区论坛 为 Cacti 社区做出贡献。
参与创建和编辑 Cacti 文档!在 GitHub 上 Fork、修改并提交拉取请求,以帮助改进文档。
参与 Cacti 的开发!在 GitHub 上加入开发者和社区!
Cacti 通过数据源的概念来处理数据采集。数据源利用输入方法从设备、主机、数据库、脚本等处采集数据。您能够收集的数据性质是无限的。数据源是底层 RRD 文件的直接链接;它决定了数据如何存储在 RRD 文件中以及如何从 RRD 文件中检索数据。
图形是 Cacti 的核心和灵魂,由 RRDtool 根据定义的数据源定义创建。
将所有内容整合在一起,Cacti 使用了一套广泛的模板系统,允许创建和使用可移植模板。图形、数据源和 RRA 模板使得开箱即用地轻松创建图形和数据源。加上 Cacti 社区的支持,模板已成为支持当今计算和网络环境中任意数量设备绘图的标准方式。
支持本地和远程数据采集,并可设置采集间隔。请查看 Cacti 中的数据源配置文件以获取更多信息。数据源配置文件可以在创建图形时或数据模板级别应用于图形。
通过将资源复制到远程数据采集器,远程数据采集变得简单。即使远程数据采集器与主 Cacti 安装失去连接,它也会存储采集到的数据,直到连接恢复。远程数据采集仅需要 MySQL 和 HTTP/HTTPS 访问回主 Cacti 安装位置。
Cacti 为管理员提供了一系列网络自动化功能,以减少设置和管理设备所需的时间和精力。
多个可定义的网络发现规则
指定设备配置方式的自动化模板
Cacti 不仅仅是一个网络监控系统,它还是一个运营框架,允许扩展和增强 Cacti 的功能。The Cacti Group 持续维护着各种插件。如果您想为 Cacti 添加功能,GitHub 上有相当多的参考资料可供选择。
Cacti 允许在查看图形时进行许多运行时增强:
动态加载的树和图形视图
按字符串、图形和模板类型搜索
视图增强
简单的时间跨度调整
便捷的滑动时间窗口按钮
单击实时图形选项
轻松将图形导出为 csv
一键查看 RRA 视图
支持按领域(Cacti 区域)、按图形、按图形树、按设备等对每个用户和每个组进行权限设置。Cacti 中的权限模型是基于角色的访问控制(RBAC),允许灵活分配权限。支持强制密码复杂度、密码期限以及更改过期密码。
Cacti 支持大多数 RRDtool 绘图功能,包括:
完整右轴
偏移
虚线和虚线偏移
备用 y 网格
无网格适配
单位长度
标签宽度
动态标签
规则图例
图例位置
VDEF
堆叠线
用户可定义的线宽
文本对齐
版权所有 (c) 2004-2023 - The Cacti Group, Inc.