注!!!下面的流程只做参考,针对于不同镜像的安装调试流程,可自行搜索
DownLoad地址:https://pan.quark.cn/s/e6c92aed7b07
目前我自己Download的几个版本
需要其他版本的在评论区留言,有时间我把对应的版本放到盘里,你们自行Download就行
后缀名zip为windows版本 !
后缀名为tar.gz为linux版本,需要自行传到服务进行解压安装,具体操作流程,自行搜索。
Cacti 旨在提供基于 RRDtool 框架的完整图形解决方案。其目标是通过处理创建有意义图形所需的所有必要细节,简化网络管理员的工作。
Cacti 要求您的系统上安装以下软件。
支持 PHP 的 Web 服务器,例如 Apache、Nginx 或 IIS
使用 spine 时的构建环境(gcc、automake、autoconf、libtool、help2man)
RRDtool 1.3 或更高版本,建议使用 1.5+
PHP 5.4 或更高版本,建议使用 5.5+
所需模块:
可选模块:
MySQL 5.6 或 MariaDB 5.5 或更高版本
必须启用时区支持
以下是 my.cnf 建议:
版本 >= 5.6
MySQL 5.6+ 和 MariaDB 10.0+ 都是很棒的版本,值得选择。不过,请确保你运行的是最新版本,因为它修复了一个长期存在的低级网络问题,该问题导致 Spine 出现许多可靠性问题。
innodb = ON
建议您在任何高于 5.1 的 MySQL/MariaDB 版本中启用 InnoDB。
collation_server = utf8mb4_unicode_ci
当使用 Cacti 支持英语以外的语言时,务必使用 utf8_general_ci 排序规则类型,因为某些字符占用多个字节。如果您是首次安装 Cacti,请停止安装,进行更改后重新开始。如果您的 Cacti 已运行并投入生产,如果您计划支持其他语言,请参阅互联网上关于转换数据库和表的说明。
**character_set_client = utf8mb4
**character_set_server = utf8mb4
使用 Cacti 处理英语以外的语言时,务必使用 utf8 字符集,因为某些字符占用多个字节。如果您是首次安装 Cacti,请停止安装,进行更改后重新开始。如果您的 Cacti 已运行并投入生产,如果您计划支持其他语言,请参阅互联网上关于转换数据库和表的说明。
最大连接数 >= 100
根据登录次数和 Spine 数据收集器的使用情况,MySQL/MariaDB 可能需要多个连接。Spine 的计算方法如下:
total_connections = total_processes * (total_threads + script_servers + 1)
那么您必须为用户连接留出空间,这将根据并发登录帐户的数量而变化。
最大堆表大小 >= 5
如果您使用 Cacti 性能增强器并选择内存存储引擎,则必须小心地在系统耗尽内存表空间之前刷新性能增强器缓冲区。这可以通过两种方式实现:首先,将输出列的大小减小到合适的大小。此列位于表 poller_output 和 poller_output_boost 中。
您可以做的第二件事是为内存表分配更多内存,建议值为系统内存的 10%。但如果您使用的是 SSD 磁盘驱动器,或者系统规模较小,则可以忽略此建议或选择其他存储引擎。您可以在“控制台”->“系统实用程序”->“查看提升状态”下查看性能提升器表的预期消耗情况。
注意:如果您使用的是较新版本的 MariaDB 或 MySQL,则不再需要使用内存表。您可以选择继续使用内存表,以避免 NVMe 或 SSD 驱动器过度磨损。但是,除此之外,它不再是必需的。因此,max_heap_table_size的值不像在以前的版本中那么重要。此外,如果您将 Galera 复制与 Cacti 结合使用,则所有表都必须为 InnoDB 格式。因此,MariaDB 或 MySQL 中唯一的功能是临时表空间,它可能不依赖于max_heap_table_size。
表缓存>=200
保持表缓存较大意味着使用 innodb_file_per_table 时文件打开/关闭操作更少。
最大允许数据包数 >= 16777216
使用远程轮询功能时,大量数据将从主服务器同步到远程轮询器。因此,请将此值保持在 16M 或以上。
临时表大小>=64M
执行子查询时,如果临时表较大,请将这些临时表保存在内存中。
连接缓冲区大小>=64M
执行连接时,如果它们低于此大小,它们将被保存在内存中并且永远不会写入临时文件。
innodb_file_per_table = ON
使用 InnoDB 存储时,务必保持表空间独立。这可以让 MySQL/MariaDB 的长期用户更轻松地管理表。如果您当前关闭了此功能,可以迁移到按文件存储,方法是启用此功能,然后在所有 InnoDB 表上运行 alter 语句。
innodb_buffer_pool_size >= 25
InnoDB 会尽可能多地在系统内存中保存表和索引。因此,您应该将 innodb_buffer_pool 设置为足够大,以便在内存中保存尽可能多的表和索引。检查 /var/lib/mysql/cacti 目录的大小有助于确定此值。我们建议将其设置为系统总内存的 25%,但您的具体需求会根据系统大小而有所不同。
innodb_doublewrite = OFF
对于现代 SSD 类型存储,此操作实际上会更快地降低磁盘性能,并在所有写入操作中增加 50% 的开销。
innodb_additional_mem_pool_size >= 80M
这是存储元数据的地方。如果你有很多表,增加这个值会很有用。
innodb_lock_wait_timeout >= 50
恶意查询不应该导致数据库离线。请在这些查询破坏你的系统之前将其终止。
innodb_flush_log_at_trx_commit = 2
将此值设置为 2 意味着您将每秒刷新所有事务,而不是在提交时刷新。这可以减少 MySQL/MariaDB 的写入频率。
innodb_file_io_threads >= 16
对于现代SSD类型存储来说,拥有多个io线程对于具有高IO特性的应用程序来说是有利的。
innodb_flush_log_at_timeout >= 3
如果您的 MySQL/MariaDB 版本支持此功能,您可以控制 MySQL/MariaDB 将事务刷新到磁盘的频率。默认值为 1 秒,但在高 I/O 系统中,设置为大于 1 的值可以使磁盘 I/O 更加连续。
innodb_read_IO_threads >= 32
对于现代SSD类型存储,拥有多个读取IO线程对于具有高IO特性的应用程序来说是有利的。
innodb_write_IO_threads >= 16
对于现代SSD类型存储,拥有多个写入IO线程对于具有高IO特性的应用程序来说是有利的。
innodb_buffer_pool_instances >= 16
MySQL/MariaDB 会将 innodb_buffer_pool 划分为多个内存区域,以提高性能,最大值为 64。当您的 innodb_buffer_pool 小于 1GB 时,应使用池大小除以 128MB 的值。继续使用此公式,直至最大值达到 64。
笔记:
根据您所运行的 MySQL/MariaDB 版本,其中一些建议可能不适用。
其中一些建议应酌情调整
较新的 MySQL/MariaDB 软件使用严格模式,从旧系统导入 Cacti 数据库的转储时可能会导致意外问题,例如无法创建表cacti
。poller_output_boost
(错误号:140“错误的创建选项”)。
您还有更多可能性:
禁用适当的严格模式 - 不推荐
更改 mysqldump 文件 -从表定义中删除ROW_FORMAT=FIXED
在 mysqldump 运行查询之前: ALTER TABLE poller_output_boost
ROW_FORMAT=DYNAMIC;
要实现上述 mysql 建议,您可以使用以下条目并将其粘贴到 my.cnf 中
确保根据操作系统要求安装了以下软件包。验证 httpd/apache 和 MySQL/MariaDB 是否在系统启动时启动。
根据您的操作系统和 PHP 版本,Cacti 需要某些软件包。这些要求中最大的变量与 PHP 和 MySQL/MariaDB 有关。
安装要求包括以下软件包。这些软件包的安装因操作系统而异。
apache、IIS 或 nginx
net-snmp、net-snmp-utils
rrd工具
help2man(用于脊柱)
dos2unix(用于 spine)
开发包(gcc、automake、autoconf、libtool、mysql-devel 或 mariadb-devel、net-snmp-devel、help2man)
(针对脊柱)
支持 MySQL 5.7 及以上版本。MariaDB 10.2 及以上版本也受支持。
mysql
mysql服务器
libmysql客户端
或者
mariadb
mariadb服务器
libmariadbclient
这些模块的安装因操作系统而异。请使用以下php -m
命令验证它们是否已安装。
posix
会议
插座
原产地保护组织
pdo_mysql
xml
LDAP
mbstring
聚合酶链反应
json
openssl
广东
zlib
以下模块是可选的,但最好安装。
SNMP
gmp(用于插件支持)
com 或 dotnet(仅限 Windows)
在 FreeBSD 上安装时,您可以使用两种方法。对于这两种方法,Cacti 都有很多依赖包,您无需安装任何其他东西。一切都已准备就绪。这两种方法各有优缺点:
编译包 - 快速,但依赖关系不变(如旧版 MySQL 服务器、PHP 版本等)
pkg install cacti
pkg install spine
FreeBSD 移植 - 编译可能需要很长时间,但没有不变的依赖关系(请参阅如何使用移植)
portsnap fetch extract
portsnap fetch update
cd /usr/ports/databases/mariadb102-server (or mysql57-server)
make install
cd /usr/ports/net-mgmt/cacti
make install
cd /usr/ports/net-mgmt/spine
make install
Apache 和其他软件也可以通过包或 Ports 安装。
FreeBSD 中的所有内容都安装在 /usr/local/ 目录中!在本文档中,您可以看到 /etc/php.ini、/usr/bin/spine 等路径。
请使用正确的路径 - /usr/local/etc、/usr/local/bin/spine、...
对于 Spine 设置 suid 位(没有这个就无法进行 ICMP ping):
chmod +s /usr/local/bin/spine
验证模块是否已正确安装和配置。有几种方法可以验证,请参阅PHP 配置说明以获取完整说明。
date.timezone
必须在/etc/php.ini
、 或 /etc/phpX/apache/php.ini
和文件中设置/etc/phpX/cli/php.ini
。否则,安装完成后将出现错误。
大多数其他 PHP 配置由基本操作系统自动完成,因此无需在此讨论。
大多数 Linux/UNIX 操作系统会自动配置 Web 服务器以允许 PHP 内容。因此无需进行额外配置。但是,如果您运行的 UNIX 版本未正确配置 Web 服务器,则以下部分可供参考。以下文档专门针对 RHEL 及其变体编写。因此,具体说明可能会有所不同。
找到该文件/etc/httpd/conf/httpd.conf
或其等效文件并对其进行以下更改:
# Load config files from the config directory "/etc/httpd/conf.d".
Include conf.d/*.conf
现在,找到 PHP 配置文件/etc/httpd/conf.d/php.conf
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
LoadModule php_module modules/libphp.so
#
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler php-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
DirectoryIndex index.php
为 root 用户设置密码并记录下来。如果忘记了此密码,在系统发生灾难或从崩溃中恢复时,可能需要重新安装数据库服务器。
shell> mysqladmin --user=root password somepassword
shell> mysqladmin --user=root --password reload
您还必须将时区信息加载到数据库中。这对于各种插件的使用都是必需的。稍后,您将需要 time_zone_name
在安装的最后步骤中授予对该表的访问权限。
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
由于 Cacti 1.x 支持国际化 (i18n),因此 MySQL/MariaDB 的默认字符集必须兼容 i18n。Cacti 安装程序会对 MySQL/MariaDB 的设置提供具体的建议。请根据您的操作系统选择合适的设置。
Galera 集群:有几个表设置为使用 MEMORY 存储引擎,但这些表无法在节点之间复制,这可能会导致问题。如果您将 Cacti 配置为仅连接到集群中的一个节点,并且未进行负载均衡,则此问题不适用于您。
如果您在负载均衡环境中运行多个节点并连接到 VIP,则应在 Cacti 安装或更新期间从轮换中移除所有节点,只保留一个节点。安装/更新完成后,登录 MySQL 服务器并执行以下命令,将这些表更新为使用 InnoDB 引擎:
MariaDB [(none)]> use cacti;
MariaDB [cacti]>> ALTER TABLE `automation_ips` ENGINE=InnoDB;
MariaDB [cacti]>> ALTER TABLE `automation_processes` ENGINE=InnoDB;
MariaDB [cacti]>> ALTER TABLE `data_source_stats_hourly_cache` ENGINE=InnoDB;
MariaDB [cacti]>> ALTER TABLE `data_source_stats_hourly_last` ENGINE=InnoDB;
MariaDB [cacti]>> ALTER TABLE `poller_output` ENGINE=InnoDB;
MariaDB [cacti]>> ALTER TABLE `poller_output_boost_processes` ENGINE=InnoDB;
这些更改应该会复制到集群中的其他节点。在将其他节点重新放入轮询队列之前,请允许 Cacti 运行至少两到三个完整的轮询周期。
提取分发包。
shell> tar xzvf cacti-version.tar.gz
创建 MySQL 数据库:
shell> mysqladmin --user=root create cacti
导入默认的 cacti 数据库:
shell> mysql cacti < cacti.sql
可选:为 Cacti 创建 MySQL 用户名和密码。
shell> mysql --user=root mysql
MySQL> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
MySQL> GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY 'somepassword';
MySQL> flush privileges;
请注意,如果您的root
(或同等)用户没有SUPER
权限,仍然可以GRANT SELECT
通过 向 Cacti 用户授予权限 INSERT INTO mysql.tables_priv
。
INSERT INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Table_priv)
VALUES ('localhost', 'mysql', 'cactiuser', 'time_zone_name', 'root@localhost', 'Select');
编辑include/config.php
并指定 Cacti 配置的数据库类型、名称、主机、用户和密码。
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cacti";
设置 Cacti 目录的相应权限,用于生成图表/日志。您需要在 Cacti 目录内执行以下命令来更改权限。
shell> chown -R cactiuser rra/ log/ cache/
(输入cactiuser的有效用户名,该用户也将在下一步用于数据收集。)
创建 cron 任务文件或 systemd 单元文件
从 Cacti 1.2.16 开始,您可以选择使用传统的 Crontab 条目,或者可选的 cactid 单元文件和服务器来运行您的 Cacti 轮询器。
对于 Crontab 的使用,请按照以下说明进行操作:
创建并编辑/etc/cron.d/cacti
文件。确保设置 poller.php 的正确路径
*/5 * * * * apache php /poller.php &>/dev/null
对于 systemd 单元文件的安装,您需要修改包含的单元文件,使其符合您的安装位置以及所需的用户和组,以便以该用户和组的身份运行 Cacti 轮询器。要完成此任务,请按照以下步骤操作:
vim /service/cactid.service (edit the path)
touch /etc/sysconfig/cactid
cp -p /service/cactid.service /etc/systemd/system
systemctl enable cactid
systemctl start cactid
systemctl status cactid
systemd 单元文件使管理高可用性 Cacti 设置变得更加方便。
在安装过程中,您需要提供对以下文件和目录的写访问权限:
shell> chown -R resource scripts include/config.php
安装完成后,您可以将权限更改为更严格的设置。
将您的网络浏览器指向:
http://
使用用户名/密码admin登录。您需要立即更改此密码。请确保在以下屏幕上仔细正确地填写所有路径变量。
Spine 是一款非常快速的数据收集引擎,用 C 语言编写。它是 cmd.php 的可选替代品。如果您决定使用它,则必须单独安装。它不包含在 Cacti 中。
最简单的方法是使用 rpm 或 ports 安装 Spine。你可以在 Cacti 主站或你的发行版中找到 Spine 的软件包。
要编译 Spine,请将其下载到你喜欢的任意位置。然后,在下载的目录中执行以下命令
shell>./bootstrap
如果boostrap
脚本成功,您将按照它提供的说明进行编译和安装。
假设你已经正确安装了 Spine,接下来需要对其进行配置。配置文件可以放在 Spine 所在的目录中,也可以放在 /etc/spine.conf 中。
DB_Host 127.0.0.1 or hostname (not localhost)
DB_Database cacti
DB_User cactiuser
DB_Password cacti
DB_Port 3306