Observium будем устанавливать на Ubuntu 16.04 LTS. Оригинальную документацию по установке на эту ОС можно найти по ссылке Debian/Ubuntu Installation.
Установим необходимые для Observium пакеты:
sudo apt install libapache2-mod-php7.0 php7.0-cli php7.0-mysql php7.0-mysqli php7.0-gd php7.0-mcrypt php7.0-json php-pear snmp fping mysql-server mysql-client python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick apache2
Устанавливаем пакет libvirt-bin:
sudo apt install libvirt-bin
Цитата из документации по поводу необходимости этого пакета:
If you want to be able to monitor libvirt virtual machines, install libvirt-bin (beware: this pulls in a whole bunch of dependencies you otherwise probably wouldn't need on your server)
***
Создаем директории, в которых будут располагаться файлы Observium:
sudo mkdir -p /opt/observium && cd /opt
Как я писал ранее, я устанавливаю версию Community Edition, и поэтому я скачаю архив в названии которого фигурирует слово "community":
sudo wget http://www.observium.org/observium-community-latest.tar.gz sudo tar zxvf observium-community-latest.tar.gz
Переходим в папку с конфигурационными файлами и создаем конфигурационный файл копированием скопировав .default-файл:
cd ./observium sudo cp config.php.default config.php
Открываем файл config.php и редактируем настройки MySQL - username, password и dbname
sudo vim ./config.php
***
Заходим в контекст MySQL:
mysql -u root -p
Первой командой создаём базу данных с именем observium с требуемой кодировкой. Второй командой даём полные привилегии пользователю observium на одноименную базу данных.
CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost'IDENTIFIED BY 'PASSWORD';
Далее нужно проверить активирован или нет в MySQL Strict mode, выполнив команду:
SELECT @@GLOBAL.sql_mode;
После выполнения команды я увидел STRICT_TRANS_TABLES:
Чтобы этот режим деактивировать, нужно выполнить ряд действий. Создаем конфигурационный файл, который деактивирует Strict mode:
sudo touch /etc/mysql/conf.d/disable_strict_mode.cnf
Добавим в файл disable_strict_mode.cnf следующие строки:
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Перезапустим службу MySQL и проверим её статус:
sudo service mysql restart sudo service mysql status
После выполнения выше описанных действий Strict mode будет деактивирован.
Следующим шагом выполняем скрипт конфигурации ранее созданной базы данных MySQL:
sudo ./discovery.php -u
***
Создаем дополнительные служебные директории и даем на них права доступа пользователю, от имени которого работает веб-сервер apache2 (www-data):
sudo mkdir ./logs sudo mkdir ./rrd sudo chown www-data:www-data ./logs sudo chown www-data:www-data ./rrd
***
Заменяем содержимое файла или добавляем в файл /etc/apache2/sites-available/000-default.conf информацию о виртуальном хосте веб-сервера:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /opt/observium/html <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /opt/observium/html/> DirectoryIndex index.php Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined ServerSignature On </VirtualHost>
Активируем php-модуль mcrypt:
sudo phpenmod mcrypt
Активируем mod_rewrite для Observium URL's:
sudo a2enmod rewrite
После внесенных изменений надо перезапустить apache2:
sudo /etc/init.d/apache2 restart
***
Добавляем администратора системы:
./adduser.php admin YourPassword 10
Теперь можно зайти на Web-интерфейс (http://observium.DomainName.com или IP address) и попытаться залогиниться:
***
Далее в папке /etc/cron.d/ создаем файл observium с содержимым:
# Run a complete discovery of all devices once every 6 hours 33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1 # Run automated discovery of newly added devices every 5 minutes */5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1 # Run multithreaded poller wrapper every 5 minutes */5 * * * * root /opt/observium/poller-wrapper.py 4 >> /dev/null 2>&1 # Run housekeeping script daily for syslog, eventlog and alert log 13 5 * * * root /opt/observium/housekeeping.php -ysel # Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data 47 4 * * * root /opt/observium/housekeeping.php -yrptb
Если этого не сделать, то добавляемые устройств в Observium не будут “мониториться”. Чтобы форсировать мониторинг вновь добавленного устройства, нужно выполнить две команды:
./discovery.php -h all
./poller.php -h all
Итак, мы установили и базово сконфигурировали Observium. Теперь мы можем добавить первые объекты для мониторинга.
Сделаю маленькое отступление, объясняющее мою среду исполнения. В моем распоряжении есть небольшая, но реально работающая IT среда, которую мне необходимо “мониторить”. IT инфраструктура построена на базе VMWare ESXi 5.5 под управлением VCenter Server Appliance, состоящая из трех хостов в кластере. Плюс отдельным хостом стоит VMware ESXi 6.0 для нужд команды тестировщиков.
Доступность всех виртуальных машин в кластере я проверяю с помощью Zabbix агентов, но вот сами физические хосты в кластере “мониторятся” при помощи Observium. Zabbix-сервер и Observium-сервер стоят на одной виртуальной машине и прекрасно работают. Сама VM с системами мониторинга располагается на этом же кластере VMware – не оптимальное решение, но на отдельный сервер под задачу мониторинга бюджет выделен не был. Мной было принято решение развернуть еще одну виртуальную машину на отдельно стоящем хосте VMware 6.0 и развернуть второй Zabbix и Observium сервер на этой машине. При изменении конфигурации я просто экспортирую и импортирую данные конфигурации на соседние сервера мониторинга. На каждом Zabbix-сервере стоит агент, который проверяет доступность соседа и, в случаи выхода из строя одного сервера мониторинга, я узнаю об этом от другого сервера.
Добавим поочередно хосты ESXi в Observium. На ESXi хостах должен быть активирована служба SNMP, настроено community и разрешен трафик для SNMP. На том, как это сделать мы останавливаться не будем.
Добавить устройство в Observium можно как из через интерфейс командной строки, так и через веб-интерфейс. Пример добавления объекта мониторинга через интерфейс командной строки:
cd /opt/observium/ ./add_device.php [hostname] [community] v2c
Результат успешного выполнения команды добавления будет выглядеть примерно следующим образом:
***
Пример добавления объекта мониторинга через Web-интерфейс:
В открывшейся форме заполняем соответствующие поля:
Результат успешного добавления устройства будет выглядеть примерно так:
***
После того, как вы добавили устройства в Observium, нужно запустить (или дождаться запуска по расписанию) две команды, которые опросят добавленные устройства и начнут снимать с них показания:
cd /opt/observium/ ./discovery.php -h all ./poller.php -h all
Так устройство выглядит в веб-консоли до запуска команд:
А так - после запуска команд:
Как видим, Observium определил платформу, на которой работает VMware и версию гипервизора, UP Time ESXi хоста.
***
Выше описанными шагами я добавил все три ESXi хоста VMware кластера:
Если кликнуть по ссылке хоста, то открывается большое кол-во параметров, которые Observium собирает с хоста, анализируйте…..
Observium безошибочно определил кол-во виртуальных машин на всех ESXi хостах и их текущее состояние:
***
В моей инфраструктуре есть два Firewall’a Barracuda Next Generation x300. Если посмотреть на страницу Supported Devices на сайте Observium, то упоминаний о Barracuda там нет. Но я не стал расстраиваться и попытался добавить Firewall’ы в Observium:
Как видим из скриншота выше, Observium корректно определил производителя оборудования, линейку Next Generation и модель x300 и даже подставил рядом с устройством фирменный лейбл. Плюс ко всему он определил, что мои Firewall’ы работают в режиме High Availability (высокой доступности), и какой из них сейчас активный:
Активный Firewall - с меткой x300 (указатель 1), а там, где мы видим x300-ha (указатель 2) – это Firewall, находящийся в режиме ожидания.
Если кликнуть по ссылке Firewall’a, то мы увидим массу разнообразных графиков, как это было с VMware:
Observium сам корректно определил и переместил мои устройства по категориям:
***
Как я говорил ранее, базовые параметры с Windows-систем я снимаю при помощи Zabbix-агентов. Но нам ничего не мешает “натравить” вдобавок и Observium на Windows через встроенную службу SNMP.
Устанавливаем на Windows Server 2012 R2 Standard службу SNMP при помощи Server Manager из Features:
Далее открываем оснастку управления службами, находим SNMP Service, открываем свойства службы и выставляем опции:
После внесения изменения, обязательно перезапускаем службу.
Далее проделываем стандартную процедуру добавления хоста в Observium:
Результат:
Как видим, Observium прекрасно определил, что это Windows Server 2012 R2.
в Observium существует понятие Unix Agent. Это дополнительный набор скриптов, которые помогают получать дополнительный набор информации с Linux/Unix систем. Unix Agent также использует SNMP. Цитата из документации по этому поводу:
Please note that SNMP is still required on any devices with the agent, the agent simply provides additional data which can't be accessed via SNMP.
Еще одна важная заметка из документации:
The preferred method of running the Unix agent is via xinetd.
Переходим на машину, где нужно установить Agent (в моем случае это Linux-система) и выполняем последовательность команд:
sudo apt-get install snmpd xinetd vim sudo mkdir -p /opt/observium && cd /opt sudo wget http://www.observium.org/observium-community-latest.tar.gz sudo tar zxvf observium-community-latest.tar.gz sudo sed -e "/SNMPDOPTS=/ s/^#*/SNMPDOPTS='-Lsd -Lf \/dev\/null -u snmp -p \/var\/run\/snmpd.pid'\n#/" -i /etc/default/snmpd sudo mkdir /usr/bin/distro/ sudo cp /opt/observium/scripts/distro /usr/bin/distro/ sudo chmod 755 /usr/bin/distro sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.backup
Редактируем файл конфигурации SNMP:
sudo vim /etc/snmp/snmpd.conf
Вносим самые простые настройки. Обратите внимание на настройку “ВАША_COMMUNITY”:
com2sec readonly default ВАША_COMMUNITY group MyROGroup v1 readonly group MyROGroup v2c readonly group MyROGroup usm readonly view all included .1 80 access MyROGroup "" any noauth exact all none none #This line allows Observium to detect the host OS if the distro script is installed extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro
Выполняем ещё ряд команд:
sudo cp observium/scripts/observium_agent /usr/bin/observium_agent sudo mkdir -p /usr/lib/observium_agent/local sudo cp observium/scripts/agent-local/mysql /usr/lib/observium_agent/local/
Явно укажем то, на каком IP работает наш Observium:
sudo cp observium/scripts/observium_agent_xinetd /etc/xinetd.d/observium_agent sudo vim /etc/xinetd.d/observium_agent
Перезапускаем xinetd и snmpd:
sudo /etc/init.d/xinetd restart sudo /etc/init.d/snmpd restart
Добавляем нашу Linux-машину в веб-консоли Observium (как это сделать смотрите выше) и получаем конечный результат:
Если на нашей Linux машине развёрнуты дополнительные службы, то мы можем скопировать нужные скрипты из каталога /opt/observium/scripts/agent-local/<ИмяНужногоСкрипта> в каталог /usr/lib/observium_agent/local/
Затем включаем опцию на Observium-сервере в файле /opt/observium/config.php
$config['poller_modules']['unix-agent'] = 1;
Стоит заметить, что скрипты в некоторых случаях требуют установки дополнительных пакетов или дополнительного конфигурирования системы.
Подведём итоги по системе мониторинга Observium: