Cacti – утилита для мониторинга системы (ресурсов, сети), с веб-интерфейсом на PHP, главной целью которой является отрисовка графиков нагрузки.
Для работы Cacti потребуются:
- NGINX + PHP-FPM: веб-сервер для отображения графиков, созданных PHP и RRDTool;
- MySQL/MariaDB: сервер баз данных для хранения информации Cacti;
- PHP: для работы веб-интерфейса Cacti и создания графиков с помощью RRDTool;
- PHP-SNMP: расширение PHP для получения данных по SNMP;
- NET-SNMP: SNMP – Simple Network Management Protocol;
- RRDTool: утилита для управления и получения данных о нагрузке процессора, сети и прочего.
Предполагается, что NGINX и MariaDB уже установлены.
Устанавливаем необходимые модули PHP:
# yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-snmp
Устаналиваем пакет net-snmpd
и связанные модули:
# yum install net-snmp-utils net-snmp-libs
Настройки хранятся в файле /etc/snmp/snmpd.conf
.
Запускаем:
# service snmpd start Starting snmpd: [ OK ]
Добавляем в автозапуск:
# chkconfig snmpd on
# chkconfig --list snmpd snmpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Устанавливаем RRDTool:
# yum install rrdtool
Приступаем к установке Cacti. Требуется подключенный репозиторий Epel:
Создаём базу для Cacti:
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE cacti; Query OK, 1 row affected (0.19 sec)
Пользователя:
MariaDB [(none)]> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.73 sec)
Находим файл Cacti, который создаст необходимые таблицы:
# rpm -ql cacti | grep cacti.sql /usr/share/doc/cacti-0.8.8b/cacti.sql
Запускаем его:
# mysql -u cacti -p cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql Enter password:
Проверяем:
MariaDB [cacti]> use cacti; Database changed
MariaDB [cacti]> show tables; +---------------------------+ | Tables_in_cacti | +---------------------------+ | cdef | | cdef_items | | colors | | data_input | | data_input_data | ... | version | +---------------------------+ 52 rows in set (0.00 sec)
Настраиваем подключение к базе данных в файле /etc/cacti/db.php
:
$database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cacti"; $database_password = "password"; $database_port = "3306"; $database_ssl = false;
Создаём файл настроек PHP-FPM – /etc/php-fpm.d/cacti.conf
:
[cacti] listen = 127.0.0.1:9002 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 user=nginx group=nginx slowlog = /var/log/nginx/cacti-slow.log php_admin_value[error_log] = /var/log/nginx/cacti-error.log php_admin_flag[log_errors] = on
Перезапускаем:
# service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ]
Проверяем:
# netstat -anp | grep 9002 tcp 0 0 127.0.0.1:9002 0.0.0.0:* LISTEN 14553/php-fpm
Настраиваем NGINX:
server { listen 80; server_name zeus.domain.com; root /var/www/; access_log /var/log/nginx/cacti-access.log; error_log /var/log/nginx/cacti-error.log; location /cacti { alias /usr/share/cacti; index index.php; location ~ .php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9002; fastcgi_param SCRIPT_FILENAME $request_filename; } } }
Проверяем, перезапускаем:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
# service nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ]
Настраиваем cron в файле /etc/cron.d/cacti
, раскомментируем строку:
*/5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
Что бы запускать сбор данных каждые минут.
Переходим на страницу http://zeus.domain.com/cacti, что бы приступить к установке:
Оставляем New installation:
Cacti проверяет наличие всех необходимых пакетов:
Входим под admin/admin:
На следующей странице меняем пароль, и попадаем в панель управления Cacti:
Перейдите в Graphs, что бы увидеть имеющиеся графики:
Логи Cacti хранит в файле /var/log/cacti/cacti.log
.