Мониторинг с помощью Observium

Внешний вид Observium
Внешний вид Observium

Observium является PHP / MySQL системой мониторинга сети, ориентированной прежде всего на Cisco и Linux сети, но и включает поддержку широкого спектра сетевого оборудования и операционных систем.

Observium выросла из-за отсутствия простых в использовании NMSes. Она предназначена для обеспечения более нативного интерфейса управления. Разрабатан для быстрого сбора информации о устройствах и хранения истории изменений без ручного вмешательства.Есть режим autodiscovery.

Observium еще не предназначен для замены существующих Nagios/Cacti/Zabbix системы мониторинга, а в дополнение к нему с интуитивным представлением исторических и текущих показателей статистики, настройки визуализации и syslog захвата.
Бесплатно.

Observium является свободным программным обеспечением.
Тестовый стенд буду настраивать на Gentoo.
Для установки Observium нужно установить такие пакеты:

subversion
net-snmp (нужно установить USE-флаг "diskio")
fping ("/usr/sbin/fping" должен иметь права "-r-s--x--x")
rrdtool
graphviz
php (у меня 5.3)
mysql (version 5.1)
apache (version 2) with mod_php (and mod_rewrite?)
PEAR-Net_IPv4

Если у вас в Portage нет пакета PEAR-Net_IPv6, его нужно установить руками: pear install pear.php.net/Net_IPv6

Приступаем к установке Observium.Переходим в каталог веб-сервера

cd /var/www/localhost/htdocs

Тянем последний релиз Observium:

svn co http://www.observium.org/svn/observer/trunk observium

Создаем доп.каталоги:

mkdir /var/www/localhost/htdocs/observium/graphs
mkdir /var/www/localhost/htdocs/observium/rrd

Создаем конфиги:

cp -iv /var/www/localhost/htdocs/observium/config.php.default /var/www/localhost/htdocs/observium/config.php

Редактируем конфиг и вносим правильные настройки подключения к БД и расположения самого Observium

nano /var/www/localhost/htdocs/observium/config.php
 
...
#MYCUSTOM ENTRY
$config['fping'] = "/usr/sbin/fping";
 
### Database config
$config['db_host'] = "localhost";
$config['db_user'] = "observiumuser";
$config['db_pass'] = "observiumpassword";
$config['db_name'] = "observium";
 
### Locations
$config['install_dir']  = "/var/www/localhost/htdocs/observium";
...

Идем в Мускуль и создаем пользователя и БД

mysql -u root -p
...создание БД...
CREATE DATABASE observium;
...создание пользователя...
GRANT ALL PRIVILEGES ON observium.* TO 'observiumuser'@'localhost' IDENTIFIED BY 'observiumpassword';
...переходим в нашу БД...
CONNECT observium;
...Создаем таблицы по шаблону из поставки...
SOURCE /var/www/localhost/htdocs/observium/database-schema.sql;
...все на выход:
QUIT;

Лезем в корневую директорию

cd /var/www/localhost/htdocs/observium

И начинаем обновлять структуру базы апдейтами:

scripts/update-sql.php database-update-pre1000.sql
        scripts/update-sql.php database-update-pre1435.sql
        scripts/update-sql.php database-update-pre2245.sql
        scripts/update-sql.php database-update.sql

В процессе выполнения не должно быть ошибок.
Делаем Апач владельцем нашего творения:

cd /var/www/localhost/htdocs
chown -R apache:apache observium/

Создаем виртуальный хост в нашем Apache

<VirtualHost *:80>
DocumentRoot /var/www/localhost/htdocs/observium/html/
ServerName  observium.domain.com
CustomLog /var/www/localhost/htdocs/observium/logs/access_log combined
ErrorLog /var/www/localhost/htdocs/observium/logs/error_log
<Directory "/var/www/localhost/htdocs/observium/html/">
AllowOverride All
    Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>

Создаем административную учетку

cd /var/www/localhost/htdocs/observium
./adduser.php myadminuser myadminpassword 10

Настраиваем SNMP сервер:

...
#       sec.name  source          community
com2sec local     localhost       testcom
com2sec mynetwork NETWORK/24      testcom
 
#### 
...
 
...and set the location and contact information (your email):
 
...
# System contact information
#
syslocation Kyiv
...

Стартуем сервер SNMP

/etc/init.d/snmpd start

Добавляем хост за которым будем вести слежку:

cd /var/www/localhost/htdocs/observium
./addhost.php localhost testcom v2c

Считываем инфу:

./discovery.php -h all
./poller.php -h all

Лучше добавить все это в крон:

crontab -e
 
...
40      23     *       *       *       cd /var/www/localhost/htdocs/observium && ./discovery.php -h all >> /dev/null 2>&1
*/30     *       *       *       *       cd /var/www/localhost/htdocs/observium && ./discovery.php -h new >> /dev/null 2>&1
*/5     *       *       *       *       cd /var/www/localhost/htdocs/observium && ./poller.php -h all >> /dev/null 2>&1
...

Правим маршруты к нашим утилитам

nano includes/defaults.inc.php
 
$config['temp_dir']      = "/tmp";
$config['install_dir']   = "/var/www/observium";
$config['html_dir']      = $config['install_dir'] . "/html";
$config['rrd_dir']       = $config['install_dir'] . "/rrd";
$config['log_file']      = $config['install_dir'] . "/observium.log";
 
### Location of executables
 
$config['rrdtool']        = "/usr/bin/rrdtool";
$config['fping']          = "/usr/sbin/fping";
$config['fping6']         = "/usr/sbin/fping6";
$config['snmpwalk']       = "/usr/bin/snmpwalk";
$config['snmpget']        = "/usr/bin/snmpget";
$config['snmpbulkwalk']   = "/usr/bin/snmpbulkwalk";
$config['whois']          = "/usr/bin/whois";
$config['ping']           = "/bin/ping";
$config['mtr']            = "/usr/sbin/mtr";
$config['nmap']           = "/usr/bin/nmap";
$config['nagios_plugins'] = "/usr/lib/nagios/plugins";
$config['ipmitool']       = "/usr/bin/ipmitool";
$config['virsh']          = "/usr/bin/virsh";

Ну вот собственно у все.
Если у вас вместо Apache установлен Nginx, то конфиг должен быть вот таким:

    server
    {
    listen 80;
    server_name monitoring.blah-blah.ch;
 
    access_log /var/log/nginx/monitoring.blah-blah.ch.access_log main;
    error_log /var/log/nginx/monitoring.blah-blah.ch.error_log info;
 
    root /var/www/localhost/htdocs/monitoring/html;
 
    index index.php;
 
    location / {
    try_files $uri $uri/ @observium;
    }
 
    location @observium {
    rewrite ^(.+)$ /index.php/$1/ last;
    }
 
    location ~ ^/(.*\.php).*$ {
    fastcgi_split_path_info ^(.*\.php)(.*)$;
    # or include the equivalent of below:
    fastcgi_pass 127.0.0.1:12345;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
 
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
 
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
 
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT $document_root;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
 
    fastcgi_param GATEWAY_INTERFACE CGI/1.1;
    fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
 
    fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;
 
    # PHP only, required if PHP was built with --enable-force-cgi-redirect
    fastcgi_param REDIRECT_STATUS 200;
 
    fastcgi_intercept_errors on;
 
    }
    location ~ /\.ht {
    deny all;
    }
 
    }

И желательно скомпилить Nginx с USE-флагом stub_status для просмотра статистики

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