Настройка автоматичного перезапуску Windows сервісів в Nagios XI

Я думаю, що не потрібно багато розповідати про такому відомому продукті як Nagios, ним користуються багато. Для тих, хто не чув, інформую: це система моніторингу, яка вміє робити крім цього багато корисних речей. Зараз я активно вивчаю цю систему і в цій публікації розповім, як трохи спростити роботу системного адміністратора.

Для початку хочу уточнити: я маю на увазі, що в організації вже є сервер з Nagios і налаштований моніторинг будь-яких вузлів і/або сервісів. Отже, припустимо, є сервер з назвою PrintServer, у якого часто зупиняється сервіс spooler. Цілком банально, але це всього лише приклад, на основі якого можна придумати масу корисного. Перше, що потрібно зробити, це налаштувати моніторинг цього сервісу.

Заходимо в веб-інтерфейс Nagios під адміністратором і вгорі сторінки вибираємо Configure. Далі для додавання нового моніторингу потрібно запустити Monitoring Wizard. Згодом для редагування і додавання нових хостів рекомендую запускати відразу Core Config Manager (колонка зліва), а для першого знайомства краще візард.



Візард складається з декількох простих кроків, в яких вказуються необхідні параметри.

1. Раз це Windows сервіс, потрібно вибрати пункт Windows Server.
2. Ввести ip-адресу.
3. Тут вже цікавіше. У розділі Windows Agent можна завантажити за посиланням з сайту Nagios.com) останню версію Агента для Windows (він встановлюється на клієнтській стороні) І ввести пароль Агента. Пароль задається на серверній стороні, і налаштовується на клієнтської для взаємодії клієнт-сервер. Далі розділ Server Metrics. Тут можна налаштувати різні метрики для перевірки. Думаю тут все зрозуміло, і, т. к. налаштувати потрібно сервіс, в цьому розділі необхідно зняти всі галки. Далі розділ Services. Ось тут і потрібно прописати потрібний сервіс для моніторингу і поставити галку. У колонці Windows Service потрібно вказати Service Name, це важливо.



Далі йдуть розділи Processes та Performance Counters. В майбутньому вони швидше за все знадобляться, але зараз їх потрібно пропустити і перейти до кроку 4.
4. Тут можна виставити частоту перевірки в хвилинах і інтервал часу і кількості перевірок, перш ніж Nagios згенерує алерт. Ці параметри залежать тільки від конкретної задачі, тому цей розділ я пропущу. Тепер можна натиснути Finish і подивитися звіт візарда. Якщо всі три етапи пройшли успішно, то це означає, що сервіс створений.



Далі потрібно вибрати в лівому меню Core Config Manager і нижче в розділі Monitoring вибрати Services. В цьому розділі в пошуку вбиваємо Print Spooler і знаходимо створений конфіг. Тепер Nagios моніторить стан сервісу. Далі можна перейти до налаштування запуску сервісу за подією. Для цього потрібно спочатку настроїти клієнтську частину. Заходимо на сервер і встановлюємо агент Nagios. Після установки йдемо в папку C:\Program Files\NSClient++. Можливо, шлях буде інший, головне потрібно потрапити в папку установки програми. Шукаємо NSC.ini або nsclient.ini і відкриваємо для редагування. Тут потрібно змінити кілька параметрів:

1. Розкоментувати запис CheckExternalScripts.dll на початку файлу, прибравши «;»;
2. Розкоментувати allow_arguments і поставити параметр 1 замість 0;
3. У секцію [External Scripts] додати запис restart_svc=scripts\restart_svc.bat "$ARG1$".

Зберігаємо зміни і зарываем файл. Далі в цій папці знаходимо папку Scripts і в ній створюємо батник svc_restart.bat наступного змісту:

echo off
Net stop %1
Net start %1
Exit 0

Після цього потрібно перезапустити сервіс NSClient++ щоб він подгрузил зміни .ini файлу. На цьому налаштування клієнта готова, залишилося налаштувати сервер.

Процес перезапуску виглядає так:

1. Сервіс зупиняється, і в Nagios створюється подія, що стан сервісу Critical;
2. Обробник подій запускає налаштовану у нього команду;
3. Команда запускає знаходиться на сервері Nagios скрипт;
4. Скрипт передає команду з аргументами на NSClient++;
5. NSClient++ запускає знаходиться на клієнті .php скрипт який знищує землю запускає сервіс.

В принципі, все просто. Тепер підемо по порядку. Моніторинг сервісу налаштований, так що подія при зупинці сервісу створиться. Перш ніж йти далі, створимо команду для обробника подій. Заходимо Configure=>Core Config Manager=>Commands. Створюємо нову команду за допомогою Add New і вбиваємо потрібні параметри.

Command Name=svc_restart
Command Line=$USER1$/svc_restart.sh $SERVICESTATE$ $HOSTADDRESS$ $_SERVICESERVICE$
Command Type=misc command
І ставимо галку ACTIVE.



Команда створена, тиснемо Apply Configuration. Далі переходимо до розділу Services і відкриваємо створений сервіс Print Spooler. Тут у вкладці Check Settings в оброблювачі подій(Event Handler) вибираємо команду(svc_restart), яка запускається при настанні події і вмикаємо сам обробник.



Далі йдемо у вкладку Misc Settings і далі Manage Variable Definitions. Тут заповнюємо:
Variable name=_SERVICE
Variable Value=spooler
І натискаємо Insert та Close.
На цьому налаштування сервісу завершено, можна зберігати і застосовувати зміни(Save & Apply Configuration). Тепер Nagios при зупинці сервісу буде запускати команду svc_restart, яка в свою чергу запустить svc_restart.sh з необхідними параметрами. Проблема в тому, що такого сценарію немає, і його потрібно створити. Команда буде шукати скрипт в локальній папці зі скриптами і бинарниками на сервері, тому наступним кроком буде залягання на сервер в консоль і зайти в папку /usr/local/Nagios/libexec і за допомогою будь-якого зручного текстового редактора (я використовував nano) створити там файл svc_restart.sh з наступним змістом:

1. #!/bin/sh
2. # Event Handler for Restarting Windows Services
3. case "$1" in
4. OK)
5. ;;
6. WARNING)
7. ;;
8. UNKNOWN)
9. ;;
10. CRITICAL)
11.
12. /usr/local/nagios/libexec/check_nrpe-H "$2" -p 5666-c svc_restart-a "$3"
13. ;;
14. esac
15.
16. exit 0

Тепер потрібно змінити дозволи на цей файл наступними консольними командами:

chown nagios:nagios /usr/local/nagios/libexec/servicerestart.sh
chmod 775 /usr/local/nagios/libexec/servicerestart.sh

На цьому налаштування завершується. Якщо все робити по інструкції, проблем бути не повинно. Наостанок ще раз опишу механізм роботи і трохи траблшутинга:

1. Сервіс зупиняється, клієнт передає на сервер, що у нього стан сервісу Critical;
2. Сервер створює подія з аргументами hostname, servicename, servicestate;
3. Обробник подій виконує команду svc_restart з заданими параметрами;
4. Команда запускає svc_restart.sh з потрібними параметрами;
5. Svc_restart.sh запускає check_nrpe з потрібними параметрами;
6. Check_nrpe передає клієнту що потрібно виконати svc_restart з вказаними параметрами;
7. Клієнт в ini-файлі знаходить, що svc_restart це bat файл, що лежить в scripts;
8. Виконується bat файл з вказаними параметрами;
9. Bat файл запускає сервіс.

Якщо щось не працює:

1. Спробуйте сам bat файл, якщо працює, далі;
2. На сервері зайдіть в консоль і спробуйте наступне:
cd /usr/local/nagios/libexec
./check_nrpe-H-p 5666-c svc_restart-a spooler
Ця команда перевірить, чи працює обрабочик команд на клієнта, якщо працює, далі;
3. В консолі спробуйте
cd /usr/local/nagios/libexec
./svc_restart.sh CRITICAL spooler
Ця команда перевірить правильність написання скрипта svc_restart.sh.

При написанні було використано мануал Nagios з офіційного сайту. На жаль посилань не залишилося, але думаю їх легко нагуглити самостійно.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.