Настройка NSCA сервера для системы мониторинга Nagios
В данной заметке я напишу как настроить NSCA демона для работы системы проверки идентичности MySQL сервера.
Для корректной работы NSCA у вас уже должна быть установлена и настроена система мониторинга Nagios, то есть как минимум пробники для сервера localhost должны проверяться и отображаться корректно. Далее, необходимо установить NSCA сервер, в RHEL 5 это можно сделать командой (предварительно подключив epel репозиторий):
1 |
yum install nsca |
После установки управление демоном происходит при помощи скрипта /etc/init.d/nsca, управление конфигурацией происходит при помощи файла /etc/nagios/nsca.cfg. Необходимо проверить, что путь до command_file указан верный, либо исправить, если это не так. У меня данный параметр настрен следующим образом:
1 2 3 4 5 6 |
# COMMAND FILE # This is the location of the Nagios command file that the daemon # should write all service check results that it receives. command_file=/var/log/nagios/rw/nagios.cmd |
Все данные, что NSCA получает по сети он будет обрабатывать и записывать в этот файл, далее Nagios разберет полученную информацию, и, если нет ошибок, обработает и покажет в системе мониторинга.
После вышеописанных действий NSCA сервер настроен, осталось настроить клиента. Для этого устанавливаем его на сервере при помощи команды:
1 |
yum install nsca-client |
Конфигурационный файл /etc/nagios/send_nsca.cfg в правках не нуждается, проверить корректность работы утилиты send_nsca можно следующим образом – запустить ее со следующими параметрами:
1 |
echo -e 'sql.lan.net\tMySQL Checksum Check\t0\tAll Good\n' | send_nsca nsca.server.hostname -p 5667 |
“echo -e” – передает на через pipe утилите send_nsca специальную строку с указанием сервера, сервиса, состояния (0 – все ок, 1 – Warning, 2 – Error, 3 – Unknown), параметр -e отвечает за обработку управляющих символов, то есть \t – табуляция, \n – перевод строки.
nsca.server.hostname – DNS адрес или IP адрес сервера.
После проверки при помощи send_nsca корректной работы связки nsca client – nsca server, осталось настроить систему мониторинга Nagios.
Для этого нужно создать шаблон для сервиса с типом passive, я использую следующий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
define service{ name service_passive ; The 'name' of this service template active_checks_enabled 1 ; Active service checks are enabled passive_checks_enabled 1 ; Passive service checks are enabled/accepted parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems) obsess_over_service 1 ; We should obsess over this service (if necessary) check_freshness 1 ; Default is to NOT check service 'freshness' check_command check_dummy!3!"Service check to old" freshness_threshold 100 notifications_enabled 1 ; Service notifications are enabled event_handler_enabled 1 ; Service event handler is enabled flap_detection_enabled 1 ; Flap detection is enabled failure_prediction_enabled 1 ; Failure prediction is enabled process_perf_data 1 ; Process performance data retain_status_information 1 ; Retain status information across program restarts retain_nonstatus_information 1 ; Retain non-status information across program restarts is_volatile 0 ; The service is not volatile check_period never ; The service can be checked at any time of the day max_check_attempts 1 ; Re-check the service up to 4 times in order to determine its final (hard) state normal_check_interval 3 ; Check the service every 5 minutes under normal conditions retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined contact_groups admins ; Notifications get sent out to everyone in the 'admins' group notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events notification_interval 0 ; Re-notify about service problems every hour notification_period 24x7 ; Notifications can be sent out at any time register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! } |
Измените его под свои настройки Nagios, и проверте, что у вас есть timeperiod c именем never и содержимым:
1 2 3 4 5 6 |
# This one is a favorite: never :) define timeperiod{ timeperiod_name never alias Never } |
Этот период задает нулевую периодичность для проверки сервисов с типом passive. После вышеописанной настройки осталось настроить сам сервис, например так:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
define service { use service_passive service_description MySQL Checksum Check name mysql_checksum_check contact_groups admins, smsadmins register 0 } define service { use mysql_checksum_check host_name sql.lan.net } |
Перезапускаем Nagios, для хоста, у которого мы настроили сервис MySQL Checksum Check он находится в состоянии pending, после отправки при помощи send_nsca сообщения указанного выше, через некоторое время он должен перейти в состояние ОК.
Название сервиса MySQL Checksum Check должно быть одинаковым как в конфигурации Nagios, так и для утилиты send_nsca, иначе Nagios не сможет обработать сообщение полученное от NSCA сервера.