Cacti: установка на CentOS + NGINX + PHP-FPM + MariaDB

Автор: | 30/03/2015

Cacti-logoCacti – утилита для мониторинга системы (ресурсов, сети), с веб-интерфейсом на PHP, главной целью которой является отрисовка графиков нагрузки.

Для работы Cacti потребуются:

  • NGINX + PHP-FPM: веб-сервер для отображения графиков, созданных PHP и RRDTool;
  • MySQL/MariaDB: сервер баз данных для хранения информации Cacti;
  • PHP: для работы веб-интерфейса Cacti и создания графиков с помощью RRDTool;
  • PHP-SNMP: расширение PHP для получения данных по SNMP;
  • NET-SNMP: SNMPSimple 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, что бы приступить к установке:

cacti_1

Оставляем New installation:

cacti_2

Cacti проверяет наличие всех необходимых пакетов:

cacti_3

Входим под admin/admin:

cacti_4

На следующей странице меняем пароль, и попадаем в панель управления Cacti:

cacti_6

Перейдите в Graphs, что бы увидеть имеющиеся графики:

 

cacti_7

Логи Cacti хранит в файле /var/log/cacti/cacti.log.