Установка системы мониторинга Observium в FreeBSD.

Задался целью установить систему мониторинга 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 следующего содержания:

<VirtualHost *:80>
  DocumentRoot /opt/observium/html/
  ServerName  observium.domain.com
  CustomLog /opt/observium/logs/access_log combined
  ErrorLog /opt/observium/logs/error_log
  <Directory "/opt/observium/html/">
    AllowOverride All
    Options FollowSymLinks MultiViews
    Require all granted
  </Directory>
  DirectoryIndex index.php
</VirtualHost>

Добавляем файл /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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *