image
Помню время, когда мне поставили таск – установить и настроить cacti с 95th Percentile графиками и возможностью агрегирования графиков. И эти воспоминания нагнали на меня печаль… Сначала пробовал установить и настроить cacti через ppa репы – вылезла куча проблем с симлинками, правами и т.п. Потом ставил напрямую с официальных реп – проблем меньше, но нужно было поиграться с патчами, так как версия программы немного устаревшая. Искал инструкции по установке с исходников, но под Ubuntu все было очень сыро и сталкивался с теми же проблемами. И тогда решился взяться за официальная документация, которая писала о том, что нужно ставить в целом независимо от дистрибутива.
Решил поделиться набранным опытом по установке cacti 0.8.8f (последняя на данный момент версия) под дистрибутивом Ubuntu 12.04.
Устанавливаем нужные пакеты.
root@cacti:~# apt-get install apache2 php5 php5-mysql php5-snmp snmp php5-gd rrdtool mysql-server php5-ldap zip unzip  

Далее проверяем, или у нас есть все нужные для роботы cacti php модули. Их должно быть, как минимум семь.
root@cacti:~# php -m | egrep '^(mysql|snmp|xml|session|sockets|ldap|gd)$'
gd
ldap
mysql
session
snmp
sockets
xml

Все нужные модули есть. Теперь качаем исходный код cacti и распакуем в локальную папку. На данный момент – это версия 0.8.8f.
root@cacti:~# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz
root@cacti:~# tar xzvf cacti-0.8.8f.tar.gz

Переходим к подготовки mysql базы данных. Для начала создадим БД.
root@cacti:~# mysqladmin -p -u root create cacti        
Enter password:

Следующим делом нужно заполнить структуру новосозданной cacti базы.
root@cacti:~# mysql -p -u root cacti < cacti-0.8.8f/cacti.sql 
Enter password:

И добавить юзера с правами на администрирование.
root@cacti:~# mysql -p -u root -e 'GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY "your_password"; flush privileges;'   
Enter password:

Работа с базой данных завершена, теперь осталось прописать настройки коннекта к БД в конфигурации cacti.
root@cacti:~# vim cacti-0.8.8f/include/config.php
…
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "your_password";
$database_port = "3306";
$database_ssl = false;
…

Далее переносим странички cacti в папку /var/www (в папку, где будут храниться исходники сайта) и выставляем владельца и группу www-data (пользователь, от которого запущен веб-сервер).
root@cacti:~# rsync -aP cacti-0.8.8f/ /var/www/cacti/
root@cacti:~# chown -R www-data:www-data /var/www/cacti

Еще нужно добавить cron для работы poller-a и поставить ему права на исполнение.
root@cacti:~# echo '*/5 * * * * www-data php /var/www/cacti/poller.php > /dev/null 2>&1' > /etc/cron.d/cacti
root@cacti:~# chmod +x /var/www/cacti/poller.php

Последним штрихом перезагружаем веб-сервер.
root@cacti:~# /etc/init.d/apache2 restart
 * Restarting web server apache2           ... waiting                                                            [ OK ]

Последующая установка cacti будет проходить через веб-интерфейс по ссылке http://<server_ip>/cacti/.
При переходе, вы должны увидеть следующею картину.

image


Читаем и жмем Далее. Теперь у нас спрашивают, чего мы хотим сделать – обновить или установить cacti. В нашем случаи – установить. Выбираем и жмем Далее.

image


Теперь вы должны увидеть и подредактировать (если нужно) пути к rrdtool, php, snmp и т.п.

image


Если все гуд – жмем Далее и смотрим на удачное завершение установки cacti.

image


Теперь вводим логин и пароль установленный по умолчанию – admin/admin, и вам сразу понадобиться изменить пароль по умолчанию.

image


После введения нового пароля вы попадете в cacti GUI. Теперь cacti готов к работе.
Далее установим spine поллер под cacti 0.8.8f. Качаем и распаковуем в локальную папку.
root@cacti:~# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz
root@cacti:~# tar xzvf cacti-spine-0.8.8f.tar.gz

Устанавливаем нужные для компиляции и работы пакеты.
root@cacti:~# apt-get install libmysqlclient-dev libsnmp-dev automake libtool make

Компилируем.
root@cacti:~# cd cacti-spine-0.8.8f
root@cacti:~/cacti-spine-0.8.8f# aclocal
root@cacti:~/cacti-spine-0.8.8f# libtoolize --force
root@cacti:~/cacti-spine-0.8.8f# autoheader
root@cacti:~/cacti-spine-0.8.8f# autoconf
root@cacti:~/cacti-spine-0.8.8f# automake
root@cacti:~/cacti-spine-0.8.8f# ./configure
root@cacti:~/cacti-spine-0.8.8f# make
root@cacti:~/cacti-spine-0.8.8f# make install
make[1]: Entering directory `/home/vagrant/cacti-spine-0.8.8f'
test -z "/usr/local/spine/bin" || /bin/mkdir -p "/usr/local/spine/bin"
  /bin/bash ./libtool   --mode=install /usr/bin/install -c spine '/usr/local/spine/bin'
libtool: install: /usr/bin/install -c spine /usr/local/spine/bin/spine
test -z "/usr/local/spine/etc" || /bin/mkdir -p "/usr/local/spine/etc"
 /usr/bin/install -c -m 644 spine.conf.dist '/usr/local/spine/etc'
make[1]: Leaving directory `/home/vagrant/cacti-spine-0.8.8f'


Из полученного вывода видно, что бинарник spin-a лежит по пути /usr/local/spine/bin/spine, а конфигурация находиться здесь — /usr/local/spine/etc/spine.conf.dist. Чтобы cacti мог его использовать, нужно переименовать и отредактировать spine.conf и прописать путь к spine в GUI. Для начала переименуем файл конфигураций и добавим доступ к базе.
root@cacti:~/cacti-spine-0.8.8f# mv /usr/local/spine/etc/{spine.conf.dist,spine.conf}
root@cacti:~/cacti-spine-0.8.8f# vim /usr/local/spine/etc/spine.conf
…
DB_Host         localhost
DB_Database     cacti
DB_User         cactiuser
DB_Pass         your_password
DB_Port         3306
…


Теперь сразу проверим spine конфигурацию с консоли.
root@cacti:/usr/local/spine/bin# cd /usr/local/spine/bin/
root@cacti:/usr/local/spine/bin# ./spine -V 5 -R

Если вы не получите ни единой строчки вывода – значит проблемы с доступом к базе (пересмотрите конфигурацию spine.conf).
Теперь осталось прописать путь к spine и выбрать в качестве поллера по умолчанию. Логинимся в веб-интерфейс cacti и переходим в Configuration -> Settings -> Paths или по прямой ссылке http://<server_ip>/cacti/settings.php?tab=path, прописываем путь к spine (в нашем случаи /usr/local/spine/bin/spine) и Сохраняем все.

image


Осталось активировать новый тип поллера. Идем во вкладку Poller и выбираем spine.

image


Сохраняем, ждем 5-10 минут и смотрим логи на наличие ошибок Utilities -> System Utilities -> View Cacti Log File.

image


Как видно, проблем нет – и все данные нормально обновляться новым методом spine.
В cacti версии 0.8.8f продолжает присутствовать проблема с 64 битными счетчиками для 95th Percentile и Total Bandwidth графиков. Чтобы ее исправить, нужно добавить новый темплейт. Я его когда-то нашел и скачал на cacti форуме, но где точно – уже не могу найти. Можете его скачать здесь.
Теперь его просто нужно добавить в cacti. Переходим в Import/Export -> Import Templates или по ссылке http://<server_ip>/cacti/templates_import.php, выбираем файл и жмем Import.

image


И получаем такой результат.

image


Теперь, при создании графиков по статистике сетевых интерфейсов у нас появится In/Out Bits with 95th Percentile (64-bit Counters) и In/Out Bits with Total Bandwidth (64-bit Counters).

image


На последок добавим aggregate и weathermap плагины.
Aggregate. Этот плагин используется в cacti для объединения нескольких графиком в один. К примеру, если нужно увидеть сколько входящего и исходящего трафика генерирует весь CDN в целом, а не его отдельный сервер.
Переходим в папку с cacti плагинами и качаем aggregate последней версии.
root@cacti:~/cacti-spine-0.8.8f# cd /var/www/cacti/plugins/
root@cacti:/var/www/cacti/plugins# wget http://docs.cacti.net/_media/plugin:aggregate-v0.75.tgz -O aggregate-v0.75.tgz 

Распаковуем и удаляем архив, также не забываем сменить владельца и группу для всех файлов.
root@cacti:/var/www/cacti/plugins# tar xzvf aggregate-v0.75.tgz 
aggregate/
aggregate/setup.php
aggregate/aggregate_functions.php
aggregate/color_templates_items.php
aggregate/aggregate.php
aggregate/color_templates.php
aggregate/README
aggregate/aggregate_manual.pdf
aggregate/LICENSE
aggregate/color_html.php

root@cacti:/var/www/cacti/plugins# rm aggregate-v0.75.tgz
root@cacti:/var/www/cacti/plugins# chown -R www-data:www-data aggregate/


Теперь осталось перейти в веб-интерфейс, установить и активировать плагин.
Идем в Configuration -> Plugin Management и нажимаем на стрелочку в поле Actions напротив Aggregate плагина для установки.

image


После чего нужно нажать на зеленую стрелочку для активации.

image


Плагин активирован. Как им пользоваться можете посмотреть в прилагаемом с исходниками мануале.

Weathermap. Этот плагин используется в cacti для построения карты сети с визуализацией всех сетевых хопов и загрузки каналов. Есть много статей с описанием и примерами, поэтому рассмотрим только установку и активацию.
Переходим в папку с cacti плагинами и качаем weathermap архив.
root@cacti:/var/www/cacti/plugins# wget http://network-weathermap.com/files/php-weathermap-0.97c.zip


Распаковуем и удаляем архив.
root@cacti:/var/www/cacti/plugins# unzip php-weathermap-0.97c.zip
root@cacti:/var/www/cacti/plugins# rm php-weathermap-0.97c.zip


Меняем владельца и группу для всех файлов и включаем визуальный редактор weathermap.
root@cacti:/var/www/cacti/plugins# chown -R www-data:www-data weathermap/
root@cacti:/var/www/cacti/plugins# vim weathermap/editor.php
...
$ENABLED=true;
...  


Теперь только осталось перейти в веб-интерфейс и активировать плагин.
Идем в Configuration -> Plugin Management и нажимаем на стрелочку в поле Actions напротив Weathermap плагина для активации.

image


Плагин активирован. Как им пользоваться можете посмотреть на официальных страничках проекта.
Осталось только добавить хосты для мониторинга – пробуйте.

Комментарии (1)