Задался целью установить систему мониторинга Observium под FreeBSD. Сайт проекта — observium.org. Разработчики поддерживают ограниченное количество платформ, а именно: Debian, Ubuntu, RHEL, CentOS. К сожалению, FreeBSD в это число не входит. В портах старая версия — 0.11.5.2261_1 — актуальная — Observium Community Edition 0.13.10.4585.
Устанавливать будем на чистую систему FreeBSD 9.2 RELEASE.
Для начала обновляем дерево портов.
portsnap fetch portsnam extract
Устанавливаем MySQL.
cd /usr/ports/databases/mysql56-server/ make install clean
Устанавливаем Apache.
cd /usr/ports/www/apache24/ make install clean
Устанавливаем PHP. Дополнительно выбираем: Build Apache module.
cd /usr/ports/lang/php55 make install clean
Собираем дополнения PHP, из обязательных: snmp, сtype, gd, mysql, session, xml.
cd /usr/ports/lang/php55-extensions make install clean
Собираем сам Observium. В портах старая версия 0.11.5.2261_1 — ставим для истории и самое главное зависимостей.
cd /usr/ports/net-mgmt/observium make install clean
Если планируется платная подписка с обновлением по SVN — устанавливаем Subversion.
cd /usr/local/share/subversion make install clean
Для мониторинга виртуальных машин — библиотека libvirt.
cd /usr/ports/devel/libvirt make install clean
Для мониторинга температуры — IPMI.
cd /usr/ports/sysutils/ipmitool make install clean
Новый скрипт опроса устройств написанный на Python, позволяющий запускать опрос в несколько потоков требует дополнения py-MySQLdb.
cd /usr/ports/databases/py-MySQLdb make install clean
NMAP — необязательно — но опция присутствует в конфигурационных файлах observium — возможно для будущего использования или возможностей в платной версии. Да и просто не помешает.
/usr/ports/security/nmap make install clean
Скачиваем последнюю версию observium — на момент написания статьи — Observium Community Edition 0.13.10.4585.
cd /root fetch http://www.observium.org/observium-community-latest.tar.gz observium-community-latest.tar.gz 100% of 31 MB 2373 kBps 00m14s
Подготовительные мероприятия закончены, приступаем непосредственно к установке и настройке. Устанавливаем в каталог по умолчанию. Абсолютно ничего не мешает установить Observium в другое место — просто придется дополнительно вносить исправления в конфигурационные файлы.
mkdir /opt cd /opt tar xvf /root/observium-community-latest.tar.gz
Разрешаем запуск при старте системы Apache, MySQL, SNMP.
echo 'apache24_enable="YES"' >> /etc/rc.conf echo 'mysql_enable="YES"' >> /etc/rc.conf echo 'snmpd_enable="YES"' >> /etc/rc.conf
Перед запуском mysql правим файл /usr/local/my.cnf — убираем или комментируем опцию:
STRICT_TRANS_TABLES
Запускаем mysql.
/usr/local/etc/rc.d/mysql start
Запускаем клиент mysql, меняем пароль пользователя root для mysql, создаем БД observium, создаем пользователя observium.
use mysql; update user set password=PASSWORD("PaSsWoRd") where User='root'; create database observium; grant all privileges on observium.* to 'observium'@'localhost' identified by 'ObSeRvIuMpAsSwOrD'; flush privileges; quit
Настраиваем apache, файл /usr/local/etc/apache24/httpd.conf. Нам дополнительно понадобится mod_rewrite, раскоментируем строку
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
Настраиваем следующие опции:
ServerAdmin you@example.com ServerName www.example.com:80
Добавляем файл /usr/local/etc/apache24/Includes/observium.conf следующего содержания:
DocumentRoot /opt/observium/html/ ServerName observium.domain.com CustomLog /opt/observium/logs/access_log combined ErrorLog /opt/observium/logs/error_log AllowOverride All Options FollowSymLinks MultiViews Require all granted DirectoryIndex index.php
Добавляем файл /usr/local/etc/apache24/Includes/php.conf
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
В файл /usr/local/etc/php.ini добавляем следующие строки:
date.timezone = "Europe/Moscow" output_buffering = 4096 implicit_flush = Off
Запускаем Apache.
/usr/local/etc/rc.d/apache24 start
Сооздаем каталоги:
cd /opt/observium mkdir rrd chown www:www rrd mkdir logs
Cоздаем конфигурационный файл Observium.
cp config.php.default config.php
Указываем логин и пароль для подключения к MySQL — Если необходимо исправляем остальные опции. Вносим изменения в файл /opt/observium/includes/defaults.inc.php в секцию Location of executables.
$config['rrdtool'] = "/usr/local/bin/rrdtool"; $config['fping'] = "/usr/local/sbin/fping"; $config['fping6'] = "/usr/local/sbin/fping6"; $config['snmpwalk'] = "/usr/local/bin/snmpwalk"; $config['snmpget'] = "/usr/local/bin/snmpget"; $config['snmpbulkwalk'] = "/usr/local/bin/snmpbulkwalk"; $config['snmptranslate'] = "/usr/local/bin/snmptranslate"; $config['whois'] = "/usr/bin/whois"; $config['mtr'] = "/usr/local/sbin/mtr"; $config['nmap'] = "/usr/local/bin/nmap"; $config['nagios_plugins'] = "/usr/lib/nagios/plugins"; $config['ipmitool'] = "/usr/local/bin/ipmitool"; $config['virsh'] = "/usr/local/bin/virsh"; $config['dot'] = "/usr/local/bin/dot"; $config['unflatten'] = "/usr/local/bin/unflatten"; $config['neato'] = "/usr/local/bin/neato"; $config['sfdp'] = "/usr/local/bin/sfdp"; $config['svn'] = "/usr/local/bin/svn";
Импортируем базу данных observium.
php includes/update/update.php
Создаем пользователя в observium с правами администратора.
admin — логин администратора.
password — пароль администратора.
10 — уровень привилегий от 0 до 10, 10 максимальные привилегии.
./adduser.php admin password 10
Настраиваем SNMP.
cp snmp.conf.example /usr/local/share/snmp/snmp.conf cp snmpd.conf.example /usr/local/share/snmp/snmpd.conf
Правим файлы под наши нужды. Устанавливаем дополнительный скрипт определения ОС.
fetch http://www.observium.org/svn/observer/trunk/scripts/distro chmod +x distro mv distro /usr/bin
Запускаем демон snmpd.
/usr/local/etc/rc.d/snmpd start
Добавляем первое устройство, инициируем его определение и первый опрос.
./add_device.php localhost 0bs3rv1um v2c ./discovery.php -h all ./poller.php -h all
Добавляем следующие строки в файл /etc/crontab для автоматического опроса, определения и снятия статистики с устройств.
33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1 */5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1 */5 * * * * root /opt/observium/poller-wrapper.py 1 >> /dev/null 2>&1
Также исправляем в этом файле:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
Перезапускаем cron.
/etc/rc.d/cron restart
Заходим на веб интерфейс observium.
Замечания.
1. Контролируем файл /opt/observium/observium.log — если время опроса приближается к 5 минутам, следует увеличить количество потоков опроса. За это отвечает параметр передаваемый poller-wrapper.py — по умолчанию 1.
2. Добавляемое устройство должно корректно определятся через DNS, если по каким-то причинам этого нет — правим локальный файл /etc/hosts.