Выполнение скриптов (программ) и перезапуск сервисов на стороне Клиента

Started by Anth0ny, August 13, 2008, 06:09:54 PM

Previous topic - Next topic

Anth0ny

https://www.netxms.org/forum/index.php/topic,204.0.html
Опираясь на эти данные, можно конечно попробовать создать actions, но...

Вот какой вопрос возник: предположим я хочу создать простой скрипт, перезапускающий сервис в случае сбоя (остановки или приостановки). Как мне этот сервис идентифицировать в скрипте перезапуска?

Предположим ситуацию:

Есть сервис w3svc, я мониторю его состояние. Для этого созданы Event'ы (Normal и Warning). настроен Event Processing Policy (давайте его уже для простоты называть EPP ;)). Создан Action типа "Execute action on remote agent" с привязкой к скрипту rezet_svc.cmd в каталоге c:\NetXMS\var\ на стороне машины с Агентом (это правильное место для скрипта?)

содержимое rezet_svc.cmd:

@echo off
net stop w3svc
net start w3svc

А вот теперь собственно вопрос: в данном конкретном примере у меня скрипт жёстко привязан к сервису w3svc. А можно ли сделать его (скрипт) универсальным? Ведь при мониторинге сервиса мы имеем %1 как название сервиса. Можно ли это как-то использовать в выполняемых скриптах?

Например: net stop %1 & net start %1

& - ждём выполнения предыдущей команды

Или же всё-таки можно в поле Action (при создании реакции типа "Execute command on management server") указать именно эту команду?

Странно немного....

По сути 90% выполняемых на Windows-серверах команд- именно CMD-команды (на Unix- соответственно shell-команды). Так может быть имеет смысл немного подтюнить данную возможность...? Например, изменить формат ввода и хранения команд?

Сейчас это поле "Action", в которой указывается только алиас команды, и собственно сконфигурированная в конфиге клиента команда.

Я если честно не совсем понимаю, зачем всё сделано именно так, ведь по логике вещей в 90% случаев используется именно перезапуск служб, и скрипт перезапуска вполне достаточно хранить (типа того что я привёл) на самом сервере. А с сервера перезапуск служб выполнять при помощи sc.exe (стандартный компонент любой Винды). Так же удалённо можно выполнять команды на стороне Агента при помощи psexec. На случай если права Сервера отличаются от прав Агента вполне ж можно приделать окно для ввода и последующего хранения логина с паролем. Насколько мне известно именно это - общепринятая практика...

Если так сделать, то больше не понадобится усложнять себе жизнь копированием на разные машины разных скриптов. Все скрипты будут лежать в едином репозитарии и именно из него сервер будет их брать для выполнения (причём они вполне могут храниться в текстовом виде в базе и извлекаться от туда по мере необходимости).

Кстати, было бы неплохо привязать Actions к Tools. Чтобы ими тоже можно было пользоваться интерактивно.

И не будет нужды в разделении команд на выполняемые на Сервере и на Агенте.
В общем я думаю что это позволит упростить и сделать систему Реагирования более стройной и понятной. Потому что сейчас если честно весьма непросто понять логику использования внешних программ и скриптов.

Документация по практическому применению возможностей субагентов NetXMS отсутствует как класс (простите, Виктор, но это так, я уже несколько раз перечитал официальное руководство и даже написал собственное, практическое: текущая документация не даёт почти никакого представления о ПРАКТИЧЕСКОМ применении всех возможностей NetXMS и при реализации мониторинга остаётся только догадываться, что и как из настроек и фич должно использоваться. Не хватает именно документации по параметрам субагентов).

Anth0ny

UP

тема всё ещё актуальна. как можно создать универсальный рестартер сервисов? что бы не прописывать имя сбойнувшего сервиса в скрипте рестарта в явном виде?