Cacti — Веб-приложение которое поможет Вам мониторить состояние вашего сервера, CISCO и всего что может отдавать данные по SNMP протоколу. Вы сможете наблюдать за загрузкой CPU сервера, видеть на графике среднюю загрузку памяти за период времени, количество DNS запросов приходящих на сервер, количество писем (спама) приходящих на почтовый сервер. Сможете мониторить среднюю нагрузку на сеть в рабочие часы и многое другое.
Cacti Plugin Architecture — дополнение для Cacti расширяющее возможности стандартного пакета путем включения функции установки стороних плагинов.
Spine — быстрый и качественный поллер для Cacti написанный на C. Используется взамен стандартного поллера, идущего в стандартной инсталляции Cacti, cmd.php.
Показательная, базовая установка Cacti с прибомбасами на CentOS 5.5 i386. Многие элементы настройки защиты веб-сервера игнорируются, ввиду тестовой инсталляции.Все действия будут выполняться под рутом.
Начнем с инсталяции базового веб-сервера LAMP.
Устновим репозиторий RPMforge:
rpm -Uhv apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
Обновим систему и ребутнёмся:
yum -y update
reboot
Установим стандартные пакеты для веб-сервера:
yum install -y mysql mysql-server mysql-devel httpd httpd-devel php php-mysql php-gd phpimap
php-ldap php-odbc php-pear php-xml php-xmlrpc php-mcrypt curl curl-devel perl-libwwwperl
libxml2 php-mbstring phpmyadmin
Настройка MySQL сервера:
chkconfig mysqld on
service mysqld start
mysql_secure_installation
Введя последнюю команду, внимательно читайте и следуйте пунктам ее вывода. В конце концов, вы должны будете поставить пароль для рута MySQL, позволить внешние подключения к серверу, отключить анонимного пользователя, удалить тестовую базу, обновить записи сервера.
Настройка Apache, httpd:
chkconfig httpd on
service httpd start
Настройка PhpMyAdmin:
vim /etc/httpd/conf.d/phpmyadmin.conf
#
# Web application to manage MySQL
#
#<Directory "/usr/share/phpmyadmin">
# Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
vim /usr/share/phpmyadmin/config.inc.php
Найдите следующую строку (в моем случае она 17я):
$cfg['blowfish_secret'] = '';
Пройдите по этой ссылке и скопируйте сгенирированный Blowfish секрет. Вставьте его в конце, между одиночными кавычками. Пример:
$cfg['blowfish_secret'] = '85NoZZ8_y})SzG5{ys1_#YEQoxwC*sn02%JhcK@WA';
Перегрузите httpd:
service httpd restart
Начнем инсталяцию самого Cacti.
Установим зависимости нужные Cacti:
yum install -y net-snmp net-snmp-utils rrdtool php-snmp
Добавим в автозагрузку и запустим сервис SNMP:
chkconfig snmpd on
service snmpd start
Скачаем пакеты Cacti:
wget www.cacti.net/downloads/cacti-0.8.7g.tar.gz
wget www.cacti.net/downloads/pia/cacti-plugin-0.8.7g-PA-v2.9.tar.gz
wget www.cacti.net/downloads/spine/cacti-spine-0.8.7g.tar.gz
Разархивируем их:
tar -xzvf cacti-0.8.7g.tar.gz
tar -xzvf cacti-plugin-0.8.7g-PA-v2.9.tar.gz
tar -xzvf cacti-spine-0.8.7g.tar.gz
Создадим рабочую папку Cacti на сервере:
mkdir /var/www/cacti
Скопируем содержимое распакованной папки Cacti в рабочую папку Cacti:
cp -rf cacti-0.8.7g/* /var/www/cacti/
Создадим в системе юзера для Cacti и дадим ему соответствующие права:
useradd -c CactiUser -d /var/www/cacti/ -s /sbin/nologin cactiuser
chown -R root /var/www/cacti (изначально убедитесь что все права на папку Cacti принадлежат руту)
chown -R cactiuser /var/www/cacti/log /var/www/cacti/rra
Создадим базу данных для Cacti с привилегиями для cactiuser:
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword';
mysql> flush privileges;
mysql> quit
Импортируем структуру Cacti в ее базу:
mysql -u cactiuser -p cacti < /var/www/cacti/cacti.sql
Enter password: (cactipassword)
Настроим доступ Cacti в ее базу данных:
vim /var/www/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipassword";
$database_port = "3306";
Перейдем в рабочую директорию Cacti и установим фиксы официальными патчами:
cd /var/www/cacti
wget www.cacti.net/downloads/patches/0.8.7g/data_source_deactivate.patch
wget www.cacti.net/downloads/patches/0.8.7g/graph_list_view.patch
wget www.cacti.net/downloads/patches/0.8.7g/html_output.patch
wget www.cacti.net/downloads/patches/0.8.7g/ldap_group_authenication.patch
wget www.cacti.net/downloads/patches/0.8.7g/script_server_command_line_parse.patch
wget www.cacti.net/downloads/patches/0.8.7g/ping.patch
wget www.cacti.net/downloads/patches/0.8.7g/poller_interval.patch
patch -p1 -N < data_source_deactivate.patch
patch -p1 -N < graph_list_view.patch
patch -p1 -N < html_output.patch
patch -p1 -N < ldap_group_authenication.patch
patch -p1 -N < script_server_command_line_parse.patch
patch -p1 -N < ping.patch
patch -p1 -N < poller_interval.patch
Обратно перейдем в домашнюю директорию:
cd
Создадим cacti.conf чтобы включить вебдоступ:
vim /etc/httpd/conf.d/cacti.conf
Alias /cacti /var/www/cacti
<Directory /var/www/cacti/>
DirectoryIndex index.php
Options -Indexes
AllowOverride all
order deny,allow
deny from all
allow from 192.168.1.0/24 (you can do it like "allow from all")
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc on
php_flag track_vars on
Перезагрузим апач:
service httpd restart
Создадим задачу Cron для Cacti:
vim /etc/cron.d/cacti
*/5 * * * * cactiuser php /var/www/cacti/poller.php > /dev/null 2>&1
С этого момента вы можете начать использовать базовую инсталяцию Cacti в продакшане, но давайте установим дополнительный, не лишний функционал.
Cacti Plugin Architecture.
Скопируем .diff патч файл архитектуры в рабочую директорию Cacti:
cp cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.9.diff /var/www/cacti/
Перейдем в рабочую папку Cacti и выполним тестовое применение патча, дабы посматреть если есть какието помехи:
cd /var/www/cacti/
patch -p1 -N --dry-run < cacti-plugin-0.8.7g-PA-v2.9.diff
Тест должен пройти на ура, кроме одной строчки, но это не проблема:
patching file include/config.php
Hunk #1 succeeded at 30 with fuzz 1.
После того как убедились что в процессе патчинга не должно возникнуть никаких проблем применим сам патч:
patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.9.diff
Отредактируем файл конфигурации Cacti:
vim /var/www/cacti/include/config.php
Найдите следующую строчку и обязательно впешите в нее рабочую директорию Cacti (начиная с рут папки веб-сервера). В нашем случае это будет выглядить так:
$url_path = "/cacti/";
Импортируем дополнительную схему базы архитектуры плагинов в базу данных Cacti:
mysql -u cactiuser -p cacti < /root/cacti-plugin-arch/pa.sql
Enter password: (cactipassword)
Перейдем к установке Spine.
Установим зависимости нужные при компиляции Spine:
yum install -y net-snmp-devel
Перейдем в распакованную папку Spine и начнем компиляцию:
cd /root/cacti-spine-0.8.7g
./configure --prefix=
make
make install
Переименуем файл конфигурации спайна:
mv /etc/spine.conf.dist /etc/spine.conf
Разрешим спайну доступ к базе данных Cacti:
vim /etc/spine.conf
DB_Host localhost
DB_Database cacti
DB_User cactiuser
DB_Pass cactipassword
DB_Port 3306
DB_PreG 0
Наконецто зайдем на страничку нашего Cacti server/cacti.
Увидим пару страниц процесса «инсталяции» cacti. Два раза кликаем Next и третий раз Finish.
Логинимся в консоль: admin/admin
Перейдем на страницу Settings, после на вкладку Paths.
Внизу страницы пропишим пусть к бинарнику Spine. В нашем случае:
/bin/spine
Затем перейдем на вкладку Poller и установим в граффе Poller Type – spine.
Что бы включить Plugin Management, нужно перейти на страницу User Management, вкладка Realm Permissions и поставить птичку напротив Plugin Management.
Сохраняемся.
И под конец давайте попробуем поставить один плагин.
Перейдем в папку плагинов в директории Cacti:
cd /var/www/cacti/plugins
Скачаем и разархивируем архив плагина:
wget docs.cacti.net/_media/plugin:settings-v0.7-1.tgz
mv -f plugin:settings-v0.7-1.tgz settings-v0.7-1.tgz
tar -xzvf settings-v0.7-1.tgz
После этих шагов перейдем обратно в консоль управления Cacti, на страничку Plugin Management.
Инсталируйте и включите плагин.
Вот и все.
Спасибо за ваше внимание и терпение.
UPD.:
Так выглядят стандартные графики в конце нашей инсталяции. Пробел в графике потому что я не сразу сделал этот скриншот и выключил виртуалку. Ниже приведен скрин с рабочей системы.