Cacti. Установка и настройка с нуля

cactiПомню время, когда мне поставили таск – установить и настроить cacti с 95th Percentile графиками и возможностью агрегирования графиков. И эти воспоминания нагнали на меня печаль… Сначала пробовал установить и настроить cacti через ppa репы – вылезла куча проблем с симлинками, правами и т.п. Потом ставил напрямую с официальных реп – проблем меньше, но нужно было поиграться с патчами, так как версия программы немного устаревшая. Искал инструкции по установке с исходников, но под Ubuntu все было очень сыро и сталкивался с теми же проблемами. И тогда решился взяться за официальная документация, которая писала о том, что нужно ставить в целом независимо от дистрибутива.
Решил поделиться набранным опытом по установке cacti 0.8.8f (последняя на данный момент версия) под дистрибутивом Ubuntu 14.04, 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

Последним штрихом перезагружаем веб-сервер (для Ubuntu 14.04 нужно поменять DocumentRoot в apache).

root@cacti:~# /etc/init.d/apache2 restart
 * Restarting web server apache2                                                ... waiting                                                            [ OK ]

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

cacti1
Рисунок 1 – Первый запуск cacti через Веб-интерфейс

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

cacti2
Рисунок 2 – Выбор типа инсталляции

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

cacti3
Рисунок 3 – Настройка вспомогательных программ

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

cacti4
Рисунок 4 – Веб-интерфейс cacti по завершению установки

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

cacti5
Рисунок 5 – Запрос на смену пароля

После введения нового пароля вы попадете в 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
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: linking file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
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
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
…
…
checking for Solaris/Irix gethostbyname_r... no
checking for HP-UX gethostbyname_r... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/config.h
config.status: executing depfiles commands
config.status: executing libtool commands

root@cacti:~/cacti-spine-0.8.8f# make
source='sql.c' object='sql.o' libtool=no \
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c sql.c
source='spine.c' object='spine.o' libtool=no \
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c spine.c
source='util.c' object='util.o' libtool=no \
…
…
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c error.c
/bin/bash ./libtool --tag=CC   --mode=link gcc  -I/usr/include/mysql -g -O2  -lpthread -lm  -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lnetsnmp -lmysqlclient_r
libtool: link: gcc -I/usr/include/mysql -g -O2 -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lpthread -lm /usr/lib/libnetsnmp.so -lmysqlclient_r

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) и Сохраняем все (рис. 6).

cacti6
Рисунок 6 – Добавление Spine Path через Веб-интерфейс

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

cacti7
Рисунок 7 – Установка Spine поллером по умолчанию

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

cacti8
Рисунок 8 – Вид cacti логов в Веб-интерфейсе

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

cacti9
Рисунок 9 – Добавление темплейта с 64-битными счетчиками

И получаем такой результат (рис. 10).

cacti10
Рисунок 10 – Успешная импортация нового темплейта

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

cacti11
Рисунок 11 – Вид новых 64-битных счетчиков

На последок добавим 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 плагина для установки (рис. 12).

cacti12
Рисунок 12 – Установка aggregate плагина через Веб-интерфейс

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

cacti13
Рисунок 13 – Активация aggregate плагина

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

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 плагина для активации (рис. 14).

cacti15
Рисунок 14 – Активация weathermap плагина

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

Автор: admin, 16 февраля 2016
Рубрики: Системы мониторинга
Метки: ,
4 комментария к сообщению: “Cacti. Установка и настройка с нуля”
  1. Фируз:

    Подскажите пожалуйста, установил cacti на ubuntu desktop 16.04, запустил всё нормально, но вынужден был сменить ip адрес сервера. после чего не могу зайти в cacti. где и как прописать новый ip адрес сервера?

    • Проблем быть не должно, если везде было прописано localhost или 127.0.0.1.
      Нужно убедиться, что в файлах настроек cacti (global.php), mysql (my.cnf) и snmp (snmpd.conf) так и есть.

  2. Илья:

    Привет! Подскажите, ругается на порт 80.The requested URL /cacti was not found on this server.
    Apache/2.4.7 (Ubuntu) Server at localhost Port 80

    Настройки везде одинаковые. Файл snmpd.conf вообще не существует. snmp.conf пустой.

Написать комментарий

Последние статьи

Яндекс.Метрика
?>