На продакшине у нас неплохо работал cacti 0.8.8b. Так как он использовался для мониторинга наших серверов все было отлично. Но пришел таск по добавлению мониторинга трафика для клиентских машин. Проблем с добавлением не было, но когда мониторинг нода падала – мы теряли информацию. Если раньше нам не столь важны были графики, то после добавления клиентских серверов – это стало необходимо. Пришлось создавать кластер из нескольких cacti серверов и решили заодно перейти на последнею на данный момент версию – 0.8.8f. О кластере мы поговорив в следующей статье, сейчас же речь пойдет об обновлении cacti до последней версии 0.8.8f под дистрибутивом Ubuntu 14.04 (аналогичные действия идут под Ubuntu 12.04).
1 Входные данные
В статье будут использоваться следующие переменные (значения у каждого свои).
Имя переменной |
Значение переменной |
cacti_mysqldb_name | cacti |
cacti_mysql_username | cactiuser |
cacti_mysql_pass | %cacti2016 |
mysql_ip_address | localhost |
mysql_port | 3306 |
cacti_old_sources_path | /usr/share/cacti |
cacti_new_sources_path | /var/www/cacti_new |
2 Настройка и обновление cacti
2.1 Подготовка
Временно выключаем поллер. Переходим в веб-интерфейс и убираем галочку.
Делаем бекап базы и страниц старой cacti системы.
root@cacti-main:~# mysqldump --max_allowed_packet=512M -u${cacti_mysql_username} -p${cacti_mysql_pass} ${cacti_mysqldb_name} | gzip > `date +cacti.sql.%Y-%m-%d.gz` root@cacti-main:~# tar -czf `date +cacti.site.%Y-%m-%d.tar.gz` ${cacti_old_sources_path} root@cacti-main:~# ls -l -rw-r--r-- 1 root root 40453046 Mar 17 15:10 cacti.site.2016-03-17.tar.gz -rw-r--r-- 1 root root 121028 Mar 17 15:12 cacti.sql.2016-03-17.gz
Далее качаем исходники последней cacti системы (0.8.8f на данный момент) и распаковуем архив.
root@cacti-main:~# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz root@cacti-main:~# tar -xzvf cacti-0.8.8f.tar.gz
У нас есть два варианта деплоя (выбирайте нужный в зависимости от вашей ситуации).
2.1.1 Мониторинг система находиться на том же сервере
Создаем папку для нового сайта и копируем туда исходники последней cacti 0.8.8f системы.
root@cacti-main:~# mkdir ${cacti_new_sources_path} root@cacti-main:~# rsync -avP cacti-0.8.8f/ ${cacti_new_sources_path}/
Далее нужно скопировать scripts, resource, plugins и rra папки со старой системы в новую.
root@cacti-main:~# for folder in scripts resource plugins rra; do rsync -avP ${cacti_old_sources_path}/site/${folder}/ ${cacti_new_sources_path}/${folder}/; done
Убеждаемся, что права на файлы и модификаторы доступа такие как нужно по новому пути.
root@cacti-main:~# chmod +x ${cacti_new_sources_path}/poller.php root@cacti-main:~# chown -R www-data:www-data ${cacti_new_sources_path}
База данных осталась та же с теми же доступами, так что там делать нечего.
Качаем новый spine поллер.
root@cacti-main:~# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz root@cacti-main:~# tar xzvf cacti-spine-0.8.8f.tar.gz
Для компиляции нам нужны дополнительные пакеты.
root@cacti-main:~# apt-get install libmysqlclient-dev libsnmp-dev automake libtool make
Компилируем spine.
root@cacti-main:~# cd cacti-spine-0.8.8f root@cacti-main:~/cacti-spine-0.8.8f# aclocal root@cacti-main:~/cacti-spine-0.8.8f# libtoolize --force root@cacti-main:~/cacti-spine-0.8.8f# autoheader root@cacti-main:~/cacti-spine-0.8.8f# autoconf root@cacti-main:~/cacti-spine-0.8.8f# automake root@cacti-main:~/cacti-spine-0.8.8f# ./configure --prefix=/opt/spine root@cacti-main:~/cacti-spine-0.8.8f# make root@cacti-main:~/cacti-spine-0.8.8f# make install
Новый spine у нас находиться в папке /opt/spine. Нам нужно скопировать старую конфигурацию (или прописать новую) в новую spine папку и поменять путь через Веб-интерфейс или заменить старую spine папку новой. Я сделаю второй вариант.
root@cacti-main:~# mv /usr/local/{spine,spine_old} root@cacti-main:~# mv /opt/spine /usr/local/spine root@cacti-main:~# rsync -avP /usr/local/spine_old/etc/ /usr/local/spine/etc/
Продолжение в главе 2.2.
2.1.2 Мониторинг система находиться на другом сервере
В этом случаи созданные бекапы нужно синкануть на удаленный сервер.
root@cacti-main:~# rsync -avP cacti.site.2016-03-17.tar.gz cacti.sql.2016-03-17.gz cacti-backup:/home/alex/
Если на удаленном сервере уже стоит cacti система, то возвращаемся к пункту 2.1, если на удаленном сервере чистая система, то нужно полностью установить cacti 0.8.8f как написано здесь.
После полной установки нужно развернуть дамп базы.
root@cacti-backup:~# gunzip -c cacti.sql.2016-03-17.gz | mysql -u${cacti_mysql_username} -p${cacti_mysql_pass}
Далее нужно скопировать scripts, resource, plugins и rra папки.
root@cacti-backup:~# tar -xzvf cacti.site.2016-03-17.tar.gz root@cacti-backup:~# for folder in scripts resource plugins rra; do rsync -avP usr/share/cacti/site/${folder}/ ${cacti_new_sources_path}/${folder}/; done
Продолжение в главе 2.2.
2.2 Завершение установки
Вне зависимости какой тип деплоя – завершение установки одинаковое.
Меняем пути в cron файле cacti.
root@cacti-main:~# cat /etc/cron.d/cacti */5 * * * * www-data php ${cacti_new_sources_path}/poller.php > /dev/null 2>&1
Теперь переходим в веб-интерфейс по новому пути (Веб-сервер должен указывать на папку ${cacti_new_sources_path} по дефолту или через новый виртуальный хост) и нам предложат обновить cacti.
После обновления активируем поллер и смотрим все ли в порядке.
Возможно, нужно будет исправить пути к нужным бинарникам и rrd графикам.
Вот и все.
Добрый день!
Помогите решить проблему. После обновления ubuntu 14.04 до 16.04 перестали отображаться графики на вкладке Graph, если они были добавлены в Tree Item Type как Graph, но если добавлять как Host, то все корректно отрисовывает. Также корректно рисует графики, если смотреть их через Graph Management.
Подскажите куда копать. Спасибо!
Проблема может быть связана с конкретным элементом, который ломает все. Если Вы используете браузер Chrome — запустите DevTools (F12) и перейдите в Console и перезагрузите страничку — должна показаться ошибка, которая все ломает. Если ничего не показало, то во вкладку Network — там точно должна вылезти.