Мониторинг с помощью 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 для просмотра статистики