Ads 468x60px

пятница, 17 августа 2012 г.

Мониторим сервера с Nagios.

Задача: автоматически следить за различными параметрами серверов предприятия.
Используемые средства: система для развертывания сервера Nagios - Debian wheezy. Основной плагин мониторинга - NRPE.
IP адрес сервера статистики: 192.168.30.19
Установка сервера мониторинга.
По умолчанию при установке nagios3 автоматически устанавливается appache2, но так как держать такого монстра исключительно для нужд nagios мне показалось не оптимально, то принял решение использовать lighttpd. Все действия выполнял по статье Nagios3 with Lighttpd, здесь же, для удобства кратко добавлю порядок команд:
1. Установка lighttpd
$ sudo aptitude install lighttpd
2. Установка nagios3 и плагина nrpe
$ sudo aptitude install nagios3 nagios-nrpe-plugin
3. Установка php5-cgi, необходим для работы nagios3
$ sudo aptitude install php5-cgi
4. Теперь можно удалить apache2:
$ sudo aptitude remove apache2-mpm-prefork apache2.2-bin apache2.2-common libapache2-mod-php5
5. Создаем файлы конфигурации модулей для lighttpd.
Для php5-cgi /etc/lighttpd/conf-available/10-php5-cgi.conf:
cgi.assign      += (
       ".php"  => "/usr/bin/php5-cgi",
)
Для самого nagios /etc/lighttpd/conf-available/10-nagios.conf:
alias.url =     (
                "/cgi-bin/nagios3" => "/usr/lib/cgi-bin/nagios3",
                "/nagios3/cgi-bin" => "/usr/lib/cgi-bin/nagios3",
                "/nagios3/stylesheets" => "/etc/nagios3/stylesheets",
                "/nagios3" => "/usr/share/nagios3/htdocs"
                )
 
$HTTP["url"] =~ "^/nagios3/cgi-bin" {
        cgi.assign = ( "" => "" )
}
 
$HTTP["url"] =~ "nagios" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/etc/nagios3/htpasswd.users"
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin"
                )
        )
        setenv.add-environment = ( "REMOTE_USER" => "user" )
}
6. Включаем модули для lighttpd:
$ sudo lighttpd-enable-mod cgi auth status php5-cgi nagios3
7. Перезапускаем сервер http
$ sudo service lighttpd restart
Теперь по адресу http://192.168.30.19/nagios3/ мы должны попасть на страницу статистики nagios.
Настройка linux клиента мониторинга.
Рассмотрим на примере debian squeeze. Установка плагина NAGIOS NRPE SERVER:
$ sudo aptitude install nagios-nrpe-server
Настройка на клиентской стороне. Файл /etc/nagios/nrpe.cfg, указываем ip адреса, которым можно отдавать статистику:
$ sudo sed -i "s/allowed_hosts.*/allowed_hosts=127.0.0.1,192.168.30.19/" /etc/nagios/nrpe.cfg
Добавляем команды сбора статистики в файле /etc/nagios/nrpe_local.cfg, характерные для данной машины, которые впоследствии будем использовать на стороне сервера:
command[check_home]=/usr/lib/nagios/plugins/check_disk -u GB -w 5% -c 2% -M /home
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 15% -c 10%
command[check_mailq]=/usr/lib/nagios/plugins/check_mailq -w 10 -c 20 -M exim
, немного комментариев:
первая строка проверка раздела /home:
check_home - параметр обращение к плагину,
-u GB - отображать информацию о состоянии в Гбайтах,
-w 5% - предупреждать при оставшихся 5% свободного места,
-c 2% - критическая ситуация при оставшихся 2% свободного места,
-M /home - проверять раздел с точкой монтирования /home.
вторая строка проверка swap раздела - тут все аналогично.
третья строка проверка количества писем в очереди почтового сервера exim, предупреждение при 10, паника при 20.
По умолчанию доступ к команде mailq ограничен,решение подсмотрел тут, поэтому для выполнения команды check_mailq на стороне сервера nagios, необходимо добавить в файл клиента/etc/sudoers следующую запись:
# Host alias specification
# Change on your email server name
Host_Alias NAGIOS=linuxhost

nagios NAGIOS=(root) NOPASSWD:/usr/bin/mailq
А так же добавить команду /usr/bin/sudo в файл /usr/lib/nagios/plugins/check_mailq:
$ grep sudo /usr/lib/nagios/plugins/check_mailq
if (! open (MAILQ, "/usr/bin/sudo $utils::PATH_TO_MAILQ | " ) ) {
Как видно,со списоком всех доступных плагинов можно ознакомиться в директории /usr/lib/nagios/plugins.
Теперь можно запустить сервис выдачи статистики:
$ sudo service nagios-nrpe-server start
Проверяем, что наша конфигурация работает:
192.168.30.19$ /usr/lib/nagios/plugins/check_nrpe -H linuxhost -c check_swap
В ответ должны увидеть, что то подобное:
SWAP OK - 100% free (8571 MB out of 8571 MB) |swap=8571MB;1285;857;0;8571
Настройка сервера Nagios для сбора статистики linux клиента.
Создаем конфигурационный файл /etc/nagios3/conf.d/linuxhost.cfg
define host{
        use generic-host
        host_name linuxhost
        address 192.168.30.13
}

define service{
        use                             generic-service         
        host_name                       linuxhost
        service_description             Check Home
        check_command                   check_nrpe_1arg!check_home
        }

define service{
        use                             generic-service         
        host_name                       linuxhost
        service_description             Check Swap
        check_command                   check_nrpe_1arg!check_swap
        }

define service{
        use                             generic-service         
        host_name                       linuxhost
        service_description             Check Mail
        check_command                   check_nrpe_1arg!check_mailq
        }
В секции define host идет описание клиента, там все прозрачно добавлю лишь, что host_name не обязательно должен совпадать с истинным именем машины, но должен однозначно совпадать с именем которое будет использовано в последующих секциях, описывающих службы, за которыми наблюдает nagios. В следующих 3-х секциях описывающих службы, service_description указывает как будет отображаться наименование службы в интерфейсе nagios. Перезапускаем nagios
$ sudo service nagios3 restart
После перезагрузки, на вкладке Services должны увидеть примерно следующую картину (новый хост обведен зеленым)
Настройка windows клиента мониторинга.
Важно: версия NSClient++ 0.3, для последней стабильной 0.4 настройка будет отличаться.
1. Скачиваем с сайта nsclient и устанавливаем. В процессе установки указываем IP адрес сервера nagios и выбираем опцию включения NSClient сервера:
2. Редактируем файл настроек NSC.ini, для этого редактируем секцию
[modules] достаточно убрать точку запятой перед названием библиотеки. Для мониторинга диска и основных системных параметров достаточно включить CheckDisk.dll, CheckSystem.dll и NSClientListener.dll:
[modules]
NSClientListener.dll
;# NSCLIENT++ MODULES
;# A list with DLLs to load at startup.
;  You will need to enable some of these for NSClient++ to work.
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; *                                                               *
; * N O T I C E ! ! ! - Y O U   H A V E   T O   E D I T   T H I S *
; *                                                               *
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
;FileLogger.dll
CheckSystem.dll
CheckDisk.dll
;NSClientListener.dll
;NRPEListener.dl
3. Запускаем службу NSClient++.
Настройка сервера Nagios для сбора статистики windows клиента.
Создадим директорию, в которой по умолчанию хранятся файлы дополнительных настроек и скопируем туда шаблон файла windows машины
$ sudo mkdir -p /etc/nagios3/objects/
$ sudo cp /usr/share/doc/nagios3-common/examples/template-object/windows.cfg /etc/nagios3/objects/
Изменим IP адрес в шаблоне на адрес нашей windows машины
$ sudo sed -i "s/\(^\s*address\s*\)192\.168\.1\.2\(.*\)/\1YOU.IP.NEED.HERE\2/" /etc/nagios3/objects/windows.cfg
Снимем комментарий в основном файле настроек nagios
$ sudo sed -i "s/#\(.*windows.cfg\)/\1/" /etc/nagios3/nagios.cfg
Правим файл запроса к NSClient /etc/nagios-plugins/config/nt.cfg
#  command definition
define command {
        command_name    check_nt
        command_line    /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -v $ARG1$ $ARG2$
}
В файл /etc/nagios3/conf.d/generic-host_nagios2.cfg добавляем описание шаблона для windows раскрыть
Не забываем перезапустить nagios:
$ sudo service nagios3 restart
По умолчанию новый windows сервер будет выглядеть примерно так:
Ссылки по теме.
Nagios
NSClient++
Мониторим Windows сервер с помощью Nagios

Комментариев нет: