Nagios — программа мониторинга компьютерных систем и сетей с открытым кодом. Предназначена для наблюдения, контроля состояния вычислительных узлов и служб, оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу.
1) Технические требования
- MySQL Server 5.*
- MySQL Client 5.*
- Apache 2.2 (1.3 то же подойдет)
- PHP 5.*
- Net-SNMP
2) Установка
Допустим что Apache, PHP и MySQL уже установлены. Теперь перейдем к установке Nagios.
Устанавливаем со всеми опциями (EMBEDDED_PERL,NANOSLEEP,EVENT_BROKER,UNHANDLED_HACK)
# whereis nagios /usr/ports/net-mgmt/nagios # cd /usr/ports/net-mgmt/nagios # make install clean
Так же можно установить плагины
# whereis nagios-plugins /usr/ports/net-mgmt/nagios-plugins # make install clean
3) Настройка.
Все файлы с настройками хранятся в /usr/local/etc/nagios/.
# ls /usr/local/etc/nagios/*sample cgi.cfg-sample nagios.cfg-sample resource.cfg-sample
Поскольку это файлы-примеры, разработчики Nagios добавили к каждому из них суффикс -sample. Прежде всего нужно переименовать или скопировать файлы, чтобы в названии не было этого суффикса. (Если эти файлы не переименовать, Nagios будет всё равно искать файлы .cfg и, естественно, ничего не найдёт).
Перед тем как переименовывать файлы, сделайте их резервную копию, чтобы в случае чего можно было всегда вернуться и посмотреть как сделано в примере.
# cd /usr/local/etc/nagios/ # mkdir sample # cp *.cfg-sample sample/
Быстро переименовать множество файлов можно следующим образом:
# for i in *cfg-sample; do mv -v $i `basename $i "-sample"`; done cgi.cfg-sample -> cgi.cfg nagios.cfg-sample -> nagios.cfg resource.cfg-sample -> resource.cfg
cgi.cfg – файл с настройками cgi
nagios.cfg – главный файл для настройки Nagios, добавим строку cfg_dir=/usr/local/etc/nagios/servers в этой папке будут хранится файлы с описанием хостов.
resource.cfg – файл с настройками ресурсов (например пути к плагинам)
Далее зайдем в папку /usr/local/etc/nagios/objects
# ls commands.cfg-sample printer.cfg-sample timeperiods.cfg-sample contacts.cfg-sample switch.cfg-sample localhost.cfg-sample templates.cfg-sample
Так же сделаем backup этих файлов и переименуем их
# cd /usr/local/etc/nagios/objects # mkdir sample # cp *.cfg-sample sample/ # for i in *cfg-sample; do mv -v $i `basename $i "-sample"`; done commands.cfg-sample -> commands.cfg contacts.cfg-sample -> contacts.cfg localhost.cfg-sample -> localhost.cfg printer.cfg-sample -> printer.cfg switch.cfg-sample -> switch.cfg templates.cfg-sample -> templates.cfg timeperiods.cfg-sample -> timeperiods.cfg
nagios -v /usr/local/etc/nagios/nagios.cfg
Команда загрузит все конфигурационные файлы и сообщит обо всех ошибках, которые она найдет. Исправляйте все ошибки по очереди, а потом запускайте команду снова.
# nagios -v /usr/local/etc/nagios/nagios.cfg Nagios Core 3.2.3 Copyright (c) 2009-2010 Nagios Core Development Team and Community Contributors Copyright (c) 1999-2009 Ethan Galstad Last Modified: 10-03-2010 License: GPL Website: http://www.nagios.org Reading configuration data... Read main config file okay... Processing object config file '/usr/local/etc/nagios/objects/commands.cfg'... Processing object config file '/usr/local/etc/nagios/objects/contacts.cfg'... Processing object config file '/usr/local/etc/nagios/objects/timeperiods.cfg'... Processing object config file '/usr/local/etc/nagios/objects/templates.cfg'... Processing object config file '/usr/local/etc/nagios/objects/localhost.cfg'... Read object config files okay... Running pre-flight check on configuration data... Checking services... Checked 8 services. Checking hosts... Checked 1 hosts. Checking host groups... Checked 1 host groups. Checking service groups... Checked 0 service groups. Checking contacts... Checked 1 contacts. Checking contact groups... Checked 1 contact groups. Checking service escalations... Checked 0 service escalations. Checking service dependencies... Checked 0 service dependencies. Checking host escalations... Checked 0 host escalations. Checking host dependencies... Checked 0 host dependencies. Checking commands... Checked 24 commands. Checking time periods... Checked 5 time periods. Checking for circular paths between hosts... Checking for circular host and service dependencies... Checking global event handlers... Checking obsessive compulsive processor commands... Checking misc settings... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check
Добавим host в apache
# cat /usr/local/etc/apache22/extra/httpd-vhosts.conf
ServerName nagios.lan
ServerAdmin support@nagios.lan
DocumentRoot "/usr/local/www/nagios/"
Alias /nagios/ “/usr/local/www/nagios/”
ScriptAlias /cgi-bin/ “/usr/local/www/nagios/cgi-bin/”
<Directory “/usr/local/www/nagios/cgi-bin/”>
AllowOverride AuthConfig
Options ExecCGI
Allow from all
<Directory “/usr/local/www/nagios/”>
AllowOverride AuthConfig
Options None
Allow from all
На этом простая настройка Nagios закончена.
Далее добавим в /etc/rc.conf nagios_enable=”YES”
Перезапустим apache и запустим nagios
# /usr/local/etc/rc.d/apache22 restart # /usr/local/etc/rc.d/nagios start
Добавим первый хост для мониторинга, напомню что все файлы с описанием хостов будут лежать в папке /usr/local/etc/nagios/servers
# cd /usr/local/etc/nagios/servers
# touch host.lan.cfg
define host{ #определяем хост
use freebsd-server #группа
host_name host.lan #имя хоста
alias host.lan
address 192.168.0.1 #ip адресс хоста
}
define service{ #определяем службы для проверки
use generic-service
host_name host.lan
service_description PING
normal_check_interval 5
retry_check_interval 1
check_command check_ping!100.0,20%!500.0,60%
}
define hostextinfo{ #дополнительная информация о хосте
host_name host.lan
icon_image freebsd40.png #иконка хоста
icon_image_alt FreeBSD Server
vrml_image freebsd40.png
statusmap_image freebsd40.gd2
2d_coords 163,195
3d_coords 15.0,38.0,6.0
}
hostgroups.cfg
Служит для описания групп хостов, например :
# cat /usr/local/etc/nagios/objects/hostgroups.cfg
define hostgroup{
hostgroup_name freebsd-servers
alias FreeBSD Servers
members localhost,host.lan
}
define hostgroup{
hostgroup_name windows-pc
alias Windows PC
members host1.lan,host2.lan,host3.lan
}
define hostgroup{
hostgroup_name linux-pc
alias Linux PC
members host4.lan,host6.lan
}
Спасибо за полезную информацию. Надо добавить ваш блог в закладки