Сегодня добавим хост на мониторинг в Nagios3 (сервер Debian 8).
Итак, для начала немного теории.
1) Все настройки мониторинга хранятся в папке /etc/nagios3/conf.d
2) Nagios "воспринимает" только файлы с расширением .cfg
3) Все хосты можно разбить по разным файлам, а можно объеденить хосты и сервисы (методы проверки) в разные файлы
Начнем с самого начала.
Установим Nagios:
apt-get install nagios3Cделаем backup существующих настроек:
mv /etc/nagios3/conf.d /etc/nagios3/conf.d.BACK mkdir /etc/nagios3/conf.d1) Первое, что нам нужно - это определить временные интервалы.
Создадим файл настроек временных интервалов /etc/nagios3/conf.d/01-timeperiods.cfg:
echo " # Период 24х7 (Круглосуточная проверка) - которым в основном и будем пользоваться define timeperiod{ timeperiod_name 24x7 ; Имя временного периода (24x7) alias 24x7 ; Описание периода monday 00:00-24:00 ; Временной интервал в понедельник tuesday 00:00-24:00 ; Временной интервал во вторник wednesday 00:00-24:00 ; Временной интервал в среду thursday 00:00-24:00 ; Временной интервал в четверг friday 00:00-24:00 ; Временной интервал в пятницу saturday 00:00-24:00 ; Временной интервал в субботу sunday 00:00-24:00 ; Временной интервал в воскресение } # Рабочие часы define timeperiod{ timeperiod_name workhours alias workhours monday 09:00-17:00 tuesday 09:00-17:00 wednesday 09:00-17:00 thursday 09:00-17:00 friday 09:00-17:00 } # Не рабочие часы define timeperiod{ timeperiod_name nonworkhours alias nonworkhours monday 00:00-09:00,17:00-24:00 tuesday 00:00-09:00,17:00-24:00 wednesday 00:00-09:00,17:00-24:00 thursday 00:00-09:00,17:00-24:00 friday 00:00-09:00,17:00-24:00 saturday 00:00-24:00 sunday 00:00-24:00 } # Для того "чтобы было" период "никогда" # Здесь не заданны временные интервалы, это значит, что проверки не будет define timeperiod{ timeperiod_name never alias Never } " >> /etc/nagios3/conf.d/01-timeperiods.cfg2) Нужно задать команду оповещения по почте, и настроить эту самую почту.
Установим sendemail, с помощью которого будем производить почтовую рассылку:
apt-get install sendemailДобавим следующий код в файл /etc/nagios3/commands.cfg:
#Оповещение по email о состоянии хоста define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -s youre.mail.server -xu monitoring_username -xp monitoring_password -t $CONTACTEMAIL$ -f frommail@mail.server -o tls=no -l /var/log/sendemail.log -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" } #Оповещение по email о состоянии сервиса define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/sendemail -s youre.mail.server -xu monitoring_username -xp monitoring_password -t $CONTACTEMAIL$ -f frommail@mail.server -o tls=no -l /var/log/sendemail.log -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -m "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" } #Команда проверки по SNMP define command{ command_name check_snmp01 command_line /usr/lib/nagios/plugins/check_snmp -H $HOSTADDRESS$ $ARG1$ }Итак, если не вдаваться в подробности, видно, что мы только что добавили 3 команды:
notify-host-by-email - оповещение по почте о состоянии хоста
notify-service-by-email - оповещение по почте о состоянии сервиса
Ключевые моменты данных команд, которые нужно настроить исходя из сервера, через который будет происходить рассылка:
-s youre.mail.server - ip или DNS имя почтового сервера -xu monitoring_username - имя пользователя -xp monitoring_password - пароль -f frommail@mail.server - почтовый ящик мониторинга -o tls=no - используется или нет tlsИ check_snmp01, с помощью которой будем проверять состояние хостов по SNMP
3) Задаем контактные лица, которым будут отправляться оповещения о пропадании сервисов /etc/nagios3/conf.d/02-contacts.cfg:
echo " #service_notification_options : #w - оповещать, если состояние сервиса WARNING #u - оповещать, если состояние сервиса UNKNOWN #c - оповещать, если состояние сервиса CRITICAL #r - оповещать, если состояние сервиса RECOVERY (сервис восстановился после сбоя) #f - оповещать, если состояние сервиса FLAPPING - происходят кратковременные сбои (вкл/выкл) сервиса #n - не оповещать (контакт не получит оповещений о состоянии сервиса) #host_notification_options : #d - оповещать, если состояние хоста DOWN #u - оповещать, если состояние хоста UNREACHABLE #r - оповещать, если состояние хоста RECOVERY (хост восстановился после сбоя) #f - оповещать, если состояние хоста FLAPPING - происходят кратковременные сбои (вкл/выкл) #s - оповещать, если хост выключился(включился) по расписанию #n - не оповещать (контакт не получит оповещений о состоянии хоста) #Контакт №1 define contact{ contact_name main_admin ; Имя контакта alias Glavnii admin ; Описание контакта service_notification_period 24x7 ; Оповещать о состоянии сервиса во временной интервал host_notification_period 24x7 ; Оповещать о состоянии хоста во временной интервал service_notification_options w,u,c,r ; WARNING,UNKNOWN,CRITICAL,RECOVERY host_notification_options d,r ; DOWN,RECOVERY service_notifications_enabled 1 ; Оповещать о изменениях сервисов host_notifications_enabled 1 ; Оповещать о изменениях хоста service_notification_commands notify-service-by-email ; Способ оповещения о состоянии сервиса(задан в commands.cfg) host_notification_commands notify-host-by-email ; Способ оповещения о состоянии хоста(задан в commands.cfg) email main_admin@yordomain.com; Почтовый ящик контактного лица } #Контакт №2 define contact{ define contact{ contact_name second_admin ; Имя контакта alias Ne Glavnii admin ; Описание контакта service_notification_period 24x7 ; Оповещать о состоянии сервиса во временной интервал host_notification_period 24x7 ; Оповещать о состоянии хоста во временной интервал service_notification_options w,u,c,r ; WARNING,UNKNOWN,CRITICAL,RECOVERY host_notification_options d,r ; DOWN,RECOVERY service_notifications_enabled 1 ; Оповещать о изменениях сервисов host_notifications_enabled 1 ; Оповещать о изменениях хоста service_notification_commands notify-service-by-email ; Способ оповещения о состоянии сервиса(задан в commands.cfg) host_notification_commands notify-host-by-email ; Способ оповещения о состоянии хоста(задан в commands.cfg) email second_admin@yordomain.com; Почтовый ящик контактного лица } #Группа контактов define contactgroup{ contactgroup_name admins ; Имя группы alias Nagios Administrators ; Описание members main_admin,second_admin ; Состав группы } " >> /etc/nagios3/conf.d/02-contacts.cfg4) Зададим шаблон для хостов. Это необязательно, но в дальнейшем значительно упростит конфигурацию Nagios-а
echo " #notification_options : #d - оповещать, если состояние хоста DOWN #u - оповещать, если состояние хоста UNREACHABLE #r - оповещать, если состояние хоста RECOVERY (хост восстановился после сбоя) #f - оповещать, если состояние хоста FLAPPING - происходят кратковременные сбои (вкл/выкл) #s - оповещать, если хост выключился(включился) по расписанию #n - не оповещать (контакт не получит оповещений о состоянии хоста) define host{ name host-shablon ; Имя шаблона notifications_enabled 1 ; Включить оповещения event_handler_enabled 1 ; Включить обработчик событий (контролировать состояние хоста) flap_detection_enabled 1 ; Реагировать на ФЛАППИНГ или нет (кратковременный вкл/выкл хоста) failure_prediction_enabled 1 ; Прогнозирование сбоев. В дальнейшем Nagios от этого ; параметра отказался совсем, т.к. он часто сбоит process_perf_data 1 ; Обработка данных о производительности retain_status_information 1 ; Обработка состояния хоста(включен, выключен, перезагружен) ; Если включен retain_nonstatus_information - запоминает состояние ; хоста и восстанавливает значение в случае перезагрузки нагиоса retain_nonstatus_information 1 ; Запоминать состояние хоста в случае перезагрузки нагиоса check_command check-host-alive ; Команда проверки. check-host-alive - проверка хоста на доступность max_check_attempts 3 ; Количество проверок статуса отличного от ОК, ; перед тем как будет создано оповещение notification_interval 60 ; Если статус отличен от ОК, выдавать оповещения каждый час ; (0-чтобы оповещать только в случае восстановления) notification_period 24x7 ; Период оповещения 24х7 notification_options d,u,r ; DOWN, UNREACHABLE, RECOVERY contact_groups admins ; Кому рассылать оповещения register 0 ; Не регистрировать в Нагиосе, т.к. это только шаблон } " >> /etc/nagios3/conf.d/03-host_template.cfg5) Зададим шаблон для сервисов:
echo " #notification_options : #w - оповещать, если состояние сервиса WARNING #u - оповещать, если состояние сервиса UNKNOWN #c - оповещать, если состояние сервиса CRITICAL #r - оповещать, если состояние сервиса RECOVERY (сервис восстановился после сбоя) #f - оповещать, если состояние сервиса FLAPPING - происходят кратковременные сбои (вкл/выкл) сервиса #n - не оповещать (контакт не получит оповещений о состоянии сервиса) define service{ name service_shablon ; Имя шаблона ; Есть 2 типа проверок состояния сервиса регулярно и по расписанию active_checks_enabled 1 ; Включить акивные (регулярные) проверки passive_checks_enabled 1 ; Включить пассивные (по расписанию) проверки parallelize_check 1 ; Активные проверки должны быть параллельными obsess_over_service 1 ; Предпочитать эту проверку а не через ocsp_command check_freshness 0 ; Проверка на "свежесть" пассивных проверок notifications_enabled 1 ; Включить оповещения event_handler_enabled 1 ; Включить обработчик событий flap_detection_enabled 1 ; Реагировать на ФЛАППИНГ или нет (кратковременный вкл/выкл сервиса) failure_prediction_enabled 1 ; Прогнозирование сбоев. В дальнейшем Nagios от этого ; параметра отказался совсем, т.к. он часто сбоит process_perf_data 1 ; Обработка данных о производительности retain_status_information 1 ; Обработка состояния сервиса(включен, выключен, перезагружен) ; Если включен retain_nonstatus_information - запоминает состояние ; сервиса и восстанавливает значение в случае перезагрузки нагиоса retain_nonstatus_information 1 ; Запоминать состояние сервиса в случае перезагрузки нагиоса notification_interval 60 ; Если статус отличен от ОК, выдавать оповещения каждый час ; (0-чтобы оповещать только в случае восстановления) is_volatile 0 ; Постоянный(0) или непостоянный(1) сервис check_period 24x7 ; Период проверки 24х7 normal_check_interval 1 ; Интервал нормальной проверки retry_check_interval 1 ; Интервал повторной проверки max_check_attempts 1 ; Количество проверок статуса отличного от ОК, ; перед тем как будет создано оповещение notification_period 24x7 ; Период оповещения 24х7 notification_options w,u,c,r ; WARNING UNKNOWN CRITICAL RECOVERY contact_groups admins ; Кому рассылать оповещения register 0 ; Не регистрировать в Нагиосе, т.к. это только шаблон } " >> /etc/nagios3/conf.d/03-service_template.cfg6) Создаем сервис PING, в который будут включены все хосты, и будут они просто пинговаться:
echo " #Данный сервис пингует все хосты, которые включены в мониторинг #Сначала сам сервис: define service { hostgroup_name PING-CHECK ; Название сервиса service_description PING ; Описание сервиса check_command check_ping!200.0,40%!400.0,80% ; Команда проверки use service_shablon ; Использовать шаблон service_shablon } #А теперь группа хостов, которая будет пинговаться: #Здесь есть 1 момент, когда hostgroup_name сервиса и группы хостов совпадает #Таким образов в данной группе хосты будут мониторится по описанному выше сервису define hostgroup { hostgroup_name PING-CHECK ; Название группы alias ping all ; Описание группы members * ; Состав группы * - значит все хосты } " >> /etc/nagios3/conf.d/04-ping_all_hosts.cfg7) Ну а теперь зададим наш хост:
echo " #Здесь задается хост define host{ host_name my_host1 ; Имя хоста. Лучше без пробелов и по английски alias my host number 1 ; Описание хоста use host-shablon ; Использовать шаблон address 212.193.163.6 ; IP Адрес хоста (который автоматически будет добавлен в сервис пинг) } #Определим группу хостов. В дальнейшем, когда в мониторинге будет много хостов - это будет помогать define hostgroup { hostgroup_name my_hosts_group_1 ; Имя группы alias Group of hosts 1 ; Описание members my_host1 ; Члены группы (по полю host_name). ; Если членов несколько, то через запятую my_host1,my_host2 и т.д. } " >> /etc/nagios3/conf.d/20-my_host_01.cfg8) Хост у нас уже есть, а теперь запишем принтер.
Будем мониторить состояние картриджей в принтере Kyocera 6026 (Kyocera 6126,2035,2135).
Мониторинг будет осуществляться по SNMP:
echo " #Сетевой принтер определяется для нагиоса как обычный хост define host { host_name Printer 6026 Ur Otdel alias Printer in Ur office address 10.77.0.11 use host-shablon } #Можно включить его в группу с предыдущим хостом define hostgroup { hostgroup_name my_hosts_group_1 ; Имя группы alias Group of hosts 1 ; Описание members Printer 6026 Ur Otdel ; Члены группы (по полю host_name). } #Проверка черного картриджа #WARNING 443 страницы #CRITICAL 100 страниц define service{ use service_shablon ; Шаблон сервиса host_name Printer 6026 Ur Otdel ; Имя хоста (по полю host_name). service_description Black Cartridge ; Описание сервиса check_command check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.4 -w 433: -c 100: ; SNMP запрос } #Проверка синего картриджа #WARNING 443 страницы #CRITICAL 100 страниц define service{ use service_shablon host_name Printer 6026 Ur Otdel service_description Blue Cartridge check_command check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.1 -w 433: -c 100: } #Проверка красного картриджа #WARNING 443 страницы #CRITICAL 100 страниц define service{ use service_shablon host_name Printer 6026 Ur Otdel service_description Red Cartridge check_command check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.2 -w 433: -c 100: } #Проверка желтого картриджа #WARNING 443 страницы #CRITICAL 100 страниц define service{ use service_shablon host_name Printer 6026 Ur Otdel service_description Yellow Cartridge check_command check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.3 -w 433: -c 100: } " >> /etc/nagios3/conf.d/30-my_printer_01.cfg
Вот собственно и все.
Осталось перезагрузить Нагиос:
/etc/init.d/nagios3 restartТеперь у нас должны появится 2 хоста в мониторинге, объединенные в одну группы.
При этом у принтера будет проверка состояния картриджей, и оба будут пинговаться.
Комментариев нет:
Отправить комментарий