Cacti
Cacti 是一个基于 Web 的系统监控和绘图解决方案。
安装
要使用 Cacti,你需要一个可用的 Web 服务器(例如 Nginx 或 Apache HTTP Server)设置,该服务器将请求转发到应用服务器(例如 uWSGI 或 php-fpm)。
接下来,安装 cacti 并配置 MariaDB(如果将使用本地 MySQL 服务器)。
配置
要将 Cacti 部署在顶级域名下而不是 /cacti/
下(即 https://example.tld/
而不是 https://example.tld/cacti/
),请使用 $url_path
配置选项
/etc/webapps/cacti/config.php
$url_path = '/';
PHP
Cacti 需要启用以下 PHP 扩展
/etc/php/php.ini
extension=gd extension=gettext extension=gmp extension=ldap extension=mysqli extension=pdo_mysql extension=snmp extension=sockets
Cacti 需要 PHP 的 open_basedir
[2] 中的某些目录和可执行文件才能正常运行
/tmp/:/usr/share/webapps/cacti:/etc/webapps/cacti:/var/cache/cacti:/var/lib/cacti:/var/log/cacti:/proc/meminfo:/usr/bin/rrdtool:/usr/bin/snmpget:/usr/bin/snmpwalk:/usr/bin/snmpbulkwalk:/usr/bin/snmpgetnext:/usr/bin/snmptrap:/usr/bin/sendmail:/usr/bin/php:/usr/bin/spine:/usr/share/fonts/TTF/
Cacti 需要在 /etc/php/php.ini
中设置 date.timezone
。请查看上游文档 [3] 和 时区 以供参考。
SNMP
如果 Cacti 需要监控其运行的机器,请配置 snmpd。
MySQL
Cacti 需要自己的数据库来存储其数据,以及一个数据库用户帐户来访问数据库。
以 root 身份运行以下命令
# mysqladmin -u root -p create cactidb # mysql -u root -p cactidb </usr/share/webapps/cacti/cacti.sql # mysql -u root -p mysql> GRANT ALL ON cactidb.* TO cactiuser@localhost IDENTIFIED BY 'some_password'; mysql> FLUSH PRIVILEGES; mysql> exit
或者,使用 PhpMyAdmin 来实现相同的结果
- 创建一个名为
cactidb
的空数据库。 - 将文件
/usr/share/webapps/cacti/cacti.sql
导入到cactidb
数据库中。 - 创建一个用户
cactiuser
,并授予该用户访问cactidb
数据库的权限。
添加数据库详细信息
/etc/webapps/cacti/config.php
$database_type = "mysql"; $database_default = "cactidb"; $database_username = "cactiuser"; $database_password = "some_password";
托管
cacti
)运行。它使用 /etc/webapps/cacti
、/var/lib/cacti
、/var/log/cacti
和 /run/cacti
分别用于配置、缓存、日志和(可能)套接字!Apache
apache Web 服务器 可以借助模块(例如 mod_proxy_fcgi 或 mod_proxy_uwsgi)来服务动态 Web 应用程序。
php-fpm
安装 并配置 Apache HTTP Server 和 php-fpm。使用以用户和组 cacti
运行的 池。套接字文件应可由 http
用户和/或组访问,但需要位于 /run/cacti
下。
在您的 Apache HTTP Server 配置(即 /etc/httpd/conf/httpd.conf
)中包含以下配置,并重启 Web 服务器
/etc/httpd/conf/cacti.conf
Alias /cacti "/usr/share/webapps/cacti" <Directory "/usr/share/webapps/cacti"> DirectoryIndex index.html index.php <FilesMatch \.php$> SetHandler "proxy:unix:/run/cacti/cacti.sock|fcgi://127.0.0.1/" </FilesMatch> AllowOverride All Options FollowSymlinks Require all granted </Directory>
文件 /usr/share/webapps/cacti/.htaccess
也控制访问。配置或删除它。
Nginx
Nginx 可以代理应用程序服务器,例如 php-fpm 和 uWSGI,它们运行动态 Web 应用程序。以下示例描述了基于文件夹的设置,该设置通过非默认端口(为了简单起见)。
php-fpm
安装 php-fpm。使用 php-fpm 设置 nginx,并使用以用户和组 cacti
运行的 池。套接字文件应可由 http
用户和/或组访问,但需要位于 /run/cacti
下。这可以通过将以下行添加到 php-fpm 配置并重启它来实现。
/etc/php/php-fpm.d/www.conf
[cacti] user = cacti group = cacti listen = /run/cacti/cacti.sock listen.owner = http listen.group = http pm = ondemand pm.max_children = 4
/etc/nginx/sites-available/cacti.conf
server { listen 8081; server_name cacti; root /usr/share/webapps/cacti/; index index.php; charset utf-8; access_log /var/log/nginx/cacti-access.log; error_log /var/log/nginx/cacti-error.log; location / { try_files $uri $uri/ index.php; } location ~* \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_pass unix:/run/cacti/cacti.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; } }
uWSGI
安装 uwsgi-plugin-php,为 uWSGI 创建一个每个应用程序的套接字(请参阅 UWSGI#uWSGI 套接字的可访问性 以供参考),并激活 cacti@uwsgi-secure.socket
单元。
/etc/nginx/sites-available/cacti.conf
server { listen 8081; server_name cacti; root /usr/share/webapps/cacti/; index index.php; charset utf-8; access_log /var/log/nginx/cacti-access.log; error_log /var/log/nginx/cacti-error.log; location / { try_files $uri $uri/ index.php; } # pass all .php or .php/path urls to uWSGI location ~ ^(.+\.php)(.*)$ { include uwsgi_params; uwsgi_modifier1 14; uwsgi_pass unix:/run/cacti/cacti.sock; } }
设置
打开浏览器并访问 http://your_server/cacti/。您应该会看到 Cacti 安装程序。
- 使用用户名 "admin" 和密码 "admin" 登录。
- 根据要求更改密码,然后单击保存。
- 按照剩余的安装步骤和建议进行操作。
- (可选)如果您选择安装 spine,请按照以下说明进行设置。
- 单击控制台选项卡左侧面板上的设置。
- 选择Poller 选项卡。
- 将 Poller 类型更改为 spine。
- 根据需要调整页面上的任何其他设置,然后单击保存。
- 选择路径选项卡。
- 将 Spine Poller 文件路径设置为
/usr/bin/spine
,然后单击保存。
技巧与提示
Spine
(可选)安装 cacti-spineAUR,这是一个更快的 Cacti 轮询器。使用数据库访问详细信息配置它
/etc/spine.conf
DB_User cactiuser DB_Pass some_password
Systemd
Cacti 使用轮询器来收集数据,因此创建一个 Systemd 服务来运行 poller.php
,以及一个定时器来每 5 分钟运行该服务
/etc/systemd/system/cacti_poller.service
[Unit] Description=Cacti Poller [Service] User=cacti Type=simple ExecStart=/usr/bin/php /usr/share/webapps/cacti/poller.php
/etc/systemd/system/cacti_poller.timer
[Unit] Description=Cacti Poller Timer [Timer] OnCalendar=*:0/5:0 Unit=cacti_poller.service AccuracySec=1 [Install] WantedBy=multi-user.target
Sep 27 15:50:00 hoom php[4072]: OK u:0.00 s:0.01 r:0.35 Sep 27 15:50:00 hoom php[4072]: OK u:0.00 s:0.01 r:0.38 Sep 27 15:50:00 hoom php[4072]: OK u:0.00 s:0.01 r:0.40 Sep 27 15:50:01 hoom php[4072]: 09/27/2015 03:50:01 PM - SYSTEM STATS: Time:0.6176 Method:cmd.php Processes:1 Threads:N/A Hosts:5 HostsPerProcess:5 DataSources:169 RRDsProcessed:15