Как установить систему мониторинга Cacti?

19_computer_killing
Привет всем, сегодня замутим на Linux сервере систему мониторинга Cacti. Данный метод будет работать для следующих дистрибутивов: RHEL 5-6, CentOS 5-6 Fedora 16/17/18/19. Cacti это своего рода аналог Nagios , чем она лучше\хуже чем Nagios я не знаю, ибо никогда не работал с ней и не настраивал всякие примочки типа “звонок админу”, “СМС админу”, “e-mail админу” и т.д. но вот пришло время познакомиться с этой системой и мне, так что давайте для начало все это дело замутим и потом будем разбераться как оно работает :-) Кому интересно как установить систему мониторинга Cacti на CentOS добро пожаловать под кат.

Что такое Cacti?

Cacti это система мониторинга, она умеет логировать, отслеживать и рисовать графики для мониторинга траффика, CPU, HDD, RAM и т.д. Если быть точным то,

Cacti — open-source веб-приложение, система позволяет строить графики при помощи RRDtool. Cacti собирает статистические данные за определённые временные интервалы и позволяет отобразить их в графическом виде. Преимущественно используются стандартные шаблоны для отображения статистики по загрузке процессора, выделению оперативной памяти, количеству запущенных процессов, использованию входящего/исходящего трафика

Система Cacti использует:

Какие компоненты нужны для работы Cacti?

Тут все тривиально кроме Net-SNMP & RRDTool:

  • Apache
  • MySQL
  • PHP
  • PHP-SNMP
  • NET-SNMP
  • RRDTool

Установка системы мониторинга и зависимостей

Ставим httpd + mysql:

yum install httpd httpd-devel mysql mysql-server -y
yum install httpd httpd-devel mysql mysql-server -y

Ставим PHP:

yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-mysql -y
yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-mysql -y

Ставим PHP-SNMP, NET-SNMP, RRDTool:

yum install php-snmp net-snmp-utils net-snmp-libs php-pear-Net-SMTP rrdtool -y
yum install php-snmp net-snmp-utils net-snmp-libs php-pear-Net-SMTP rrdtool -y

Запускаем сервисы:

service httpd start
service mysqld start
service snmpd start
service httpd start
service mysqld start
service snmpd start

Добавляем все это добро в авто загрузку:

/sbin/chkconfig --levels 345 httpd on
/sbin/chkconfig --levels 345 mysqld on
/sbin/chkconfig --levels 345 snmpd on
/sbin/chkconfig --levels 345 httpd on
/sbin/chkconfig --levels 345 mysqld on
/sbin/chkconfig --levels 345 snmpd on

Не забывайте, что для Fedora 18+ будет так:
httpd:

systemctl start httpd.service 
systemctl enable httpd.service 
systemctl start httpd.service 
systemctl enable httpd.service 

mysql:

systemctl start mysqld.service 
systemctl enable mysqld.service 
systemctl start mysqld.service 
systemctl enable mysqld.service 

ну и далее все сервисы по аналогии…
Начинаем дискотеку, ставим непосредственно систему мониторинга:

yum install cacti -y
yum install cacti -y

Конфигурируем компоненты

Начинаем с MySQL:

Зайдите в БД:

mysql -u root
mysql -u root

Посмотрите информацию о текущих юзерах:

select user,host,password from mysql.user;
select user,host,password from mysql.user;

Установите пароль рута:

set password for root@localhost=password('password');
set password for root@'127.0.0.1'=password('password'); 
set password for [email protected]=password('password');
set password for root@'127.0.0.1'=password('password'); 

Удалите пользователя БД для IPV6:

delete from mysql.user where user='root' and host='::1'; 
delete from mysql.user where user='root' and host='::1'; 

Удалите анонимного пользователя:

delete from mysql.user where user=''; 
delete from mysql.user where user=''; 

Это дефолтаня настройка базы данных.
Теперь надо создать саму базу данных (во второй строке делаем заодно пользователя cacti с паролем для него, не путать с root пользователем и его паролем):

mysql -u root -p
mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'your-cacti-user-password-here';
mysql> FLUSH privileges;
mysql> quit;
mysql -u root -p
mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO [email protected] IDENTIFIED BY 'your-cacti-user-password-here';
mysql> FLUSH privileges;
mysql> quit;

Теперь отыщите сэмпл БД для Сacti в системе:

updatedb
locate cacti.sql
updatedb
locate cacti.sql

Вывод типа такой:

/var/www/cacti/cacti.sql
/var/www/cacti/cacti.sql

Импортируем весь дамп в нашу БД:

mysql -u cacti -p cacti < /var/www/cacti/cacti.sql
mysql -u cacti -p cacti < /var/www/cacti/cacti.sql

После импорта, зайдите в Mqsql:

mysql -u root -p
mysql -u root -p

Убедитесь что все нормально:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti              |
| mysql              |
| test               |
+--------------------+
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cacti              |
| mysql              |
| test               |
+--------------------+
mysql> use cacti;
mysql> show tables;
+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
.... 
mysql> use cacti;
mysql> show tables;
+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
.... 

Если все с таблицей впорядке идем дальше, мутим привязку БД к Cacti:
ВНИМАНИЕ!
Во многих скопипастеных говно-мануалах в сети утверждается, что при настрйке и установке Cacti на CentOS вам нужно будет открыть вот это файл: /etc/cacti/db.php

Это все потому, что посоны которые якобы пишут мануалы для Linux, на самом деле тупой копипаст, даже не утраждали себя тем, что-бы проверить так это или нет. Фу. На самом деле вам необходимо открыть файл:

vim /var/www/cacti/include/config.php
vim /var/www/cacti/include/config.php

и вообще все файлы система ставит вот сюда: /var/www/cacti/ а не в /etc/cacti как это было раньше. Будьте бдительны господа. В самом файле многое менять не надо:

$database_type = "mysql";
$database_default = "cacti"; < -- БД мы делали и это cacti
$database_hostname = "localhost"; <-- БД скорее всего тут и будет у вас
$database_username = "cacti"; <-- Ваш юзернейм
$database_password = "password"; <-- Ваш пароль
$database_port = "3306"; <-- Стандартный порт для mysql
$database_ssl = false;
$database_type = "mysql";
$database_default = "cacti"; < -- БД мы делали и это cacti
$database_hostname = "localhost"; <-- БД скорее всего тут и будет у вас
$database_username = "cacti"; <-- Ваш юзернейм
$database_password = "password"; <-- Ваш пароль
$database_port = "3306"; <-- Стандартный порт для mysql
$database_ssl = false;

Всегда стоит убедится, что БД слушает нужный нам порт:

netstat -tulpn | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4743/mysqld
netstat -tulpn | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4743/mysqld

Теперь делаем виртуальный хост в Apache для Cacti:

vim /etc/httpd/conf.d/cacti.conf
vim /etc/httpd/conf.d/cacti.conf

Содержание файла:

Alias /cacti/ /var/www/cacti/
<directory /var/www/cacti></directory>
    DirectoryIndex index.php
    Options -Indexes
    AllowOverride all
    order deny,allow
    deny from all
    allow from 172.17.17.0/16 < <--Организовать доступ по сети
    AddType application/x-httpd-php .php
    php_flag magic_quotes_gpc on
    php_flag track_vars on
</Directory>
Alias /cacti/ /var/www/cacti/
<directory /var/www/cacti></directory>
    DirectoryIndex index.php
    Options -Indexes
    AllowOverride all
    order deny,allow
    deny from all
    allow from 172.17.17.0/16 < <--Организовать доступ по сети
    AddType application/x-httpd-php .php
    php_flag magic_quotes_gpc on
    php_flag track_vars on
</Directory>

Рестартуем сервер:

/etc/init.d/httpd restart
/etc/init.d/httpd restart

Помним, что в Fedora & CentOS iptables включен по умаолчанию:

iptables -L -v -n | grep 80
vim /etc/sysconfig/iptables
....
-A INPUT -m tcp -p tcp --source 172.17.17.227/16 --dport 80 -j ACCEPT
...
iptables -L -v -n | grep 80
vim /etc/sysconfig/iptables
....
-A INPUT -m tcp -p tcp --source 172.17.17.227/16 --dport 80 -j ACCEPT
...

Так же стоит позаботится о том, что-бы никто не мог вообще стучаться на порт БД с любой другой локальной или не локальной сети:

vim /etc/sysconfig/iptables
...
-A INPUT -p tcp -m tcp --source 127.0.0.1  --dport 3306 -j ACCEPT
...
vim /etc/sysconfig/iptables
...
-A INPUT -p tcp -m tcp --source 127.0.0.1  --dport 3306 -j ACCEPT
...

Далее в браузере:
http://ip-of-cacti-server/cacti/

Cacti

На следующем скрине всю важную информацию я подчеркнул:
cacti_2

Окно приветсвия системы мониторинга Cacti установленной на сервере:
cacti_3

Стандартный логин: admin
Стандартный пароль: admin

После чего система попросит вас сменить пароль и вы окажитесь в системе:
cacti_4

Еще стоило бы обратить внимание на специальный файл cron для Cacti: /etc/cron.d/cacti

*/5 * * * *     cacti   php /var/www/cacti/poller.php &>/dev/null
*/5 * * * *     cacti   php /var/www/cacti/poller.php &>/dev/null

там ничего трогать не надо, сама же настройка крона говорит нам, что демон крона будет запускать некий файл poller.php раз в пять минут. окай.

Выводы

Какие можно сделать выводы? Система просто и быстро настраивается и что-бы ее развернуть со всеми апдейтами и тревогами о безопасности не нужно больше часа. Это плюс. Мы так же позаботились с вами у стандартной настройке базы данных с целью минимизировать ненужные риски, плюс грамотно настроили файрволл. Могу сказать, что такая система даже на продакш сервере будет работать на все 100%

Немного о системе и пакетах:

ОС: CentOS 6.4
Linux kernel: 2.6.32
Версия Cacti: 0.8.8a (релиз от april 29th, 2012)
Версия httpd: Apache/2.2.15