Рестарт сервиса на удаленной машине?

Started by Dmitry, July 08, 2009, 08:18:44 AM

Previous topic - Next topic

Dmitry

Коллеги, а возможно ли сделать вот такое:

- NetXMS сервер стоит на линукс-сервере;
- На Windows 2003 сервере рядом в стойке работает некий сервис. На этом сервере стоит NetXMS-агент;
Необходимо при достижении потребления виртуальной памяти определенным процессом (этим сервисом) одного гигабайта перестартовать сервис.

Anth0ny

примерно так:

1) Сделать пару эвентов, например "ИмяПроцесса VMSize ОК" и "ИмяПроцесса VMSize Problem".

2) DCI:

Description: Virtual memory used by process ИмяПроцесса
Data: Process.VMSize(имяпроцесса.exe)
В трэшолды (пороговые значения) добавить кондишены: ИмяПроцесса VMSize Problem - включать если VMSize > гига, если меньше, то откат на "ИмяПроцесса VMSize ОК".

3) Сделать в Реакциях (Action) запись типа: Name: Restart ИмяПроцесса Service \ Type: Execute Action on remote agent \ Remote host: %a \ Action: RezetИмяПроцессаService
4) В Обработке Эвентов (Event processing Policy) в строку обработки для эвентов "ИмяПроцесса VMSize ОК" и "ИмяПроцесса VMSize Problem" в столбец Action выбрать из списка и добавить запись: Restart ИмяПроцесса Service
5) Финальный штрих: в конфиг Агента на нужном сервере добавить строку:

если сервис останавливается сам, корректно:
ActionShellExec = RezetИмяПроцессаService:net stop "Имя процесса"&&net start "Имя процесса"
если сервис НЕ останавливается сам, мы его сначала прибиваем:
ActionShellExec = RezetИмяПроцессаService:taskkill /IM имяпроцесса.exe /F && net stop "Имя процесса"&& net start "Имя процесса"

в принципе тут возможен ещё один вариант: можно сделать только один эвент, "ИмяПроцесса VMSize Max Reached", привязать к нему Action "Restart ИмяПроцесса Service" и в процессе конфигурирования только поставить цапку "Write to Event Log" и не менять Severity с Normal на другое. Тогда если сработает данный Эвент, он не пометит ноду как сбойную и не понадобится двойной обработки состояния.

Если что - помогу комментариями.

Dmitry


Anth0ny

скрипт трансформации (в DCI) для перевода исходных байт в гигабайты:

(int64($1)/1024)/1024)/1024