2008-11-17 9 views
35

Я ищу способ для контролировать некоторые службы Windows (на Windows Server 2003) и перезагрузить, если необходимо y. Сервисы находятся на разных серверах и включают в основном службы SQL Server (например, Агент SQL Server), а также некоторые собственные сервисы.Как контролировать службы Windows

Уведомления по электронной почте, отправленные в случае прекращения службы, также очень полезны.

ответ

39

Возможно, версия «может быть достаточно» встроена в Windows. Просмотрите вкладку «Восстановление» свойств службы, доступную через services.msc.

Вы можете действовать на службе завершаться:

  • "Перезапуск службы"
  • "запустить Progam"
  • "Перезагрузите компьютер"

«Выполнить программу «может быть небольшим сценарием, который отправляет почту, например.

Если вам требуется более крупное решение с обзорной приборной панелью и все, доступно множество решений для мониторинга системы. Например, SolarWinds IPMonitor приходит на ум, или Nagios, или Cacti.

+0

Как установить это поведение с помощью C# API,? – YakRangi 2018-02-26 13:16:33

6

Возможно, это некоторые специализированные инструменты, но я просто хочу указать инструмент wmic.

wmic /node:[hostname] service list 

способен перечислить услуги любого компьютера

WMIC SERVICE where caption='TELNET' CALL STARTSERVICE 

будет перезапустить службу Telnet.

Если вы инкапсулируете wmic на языке сценария (можете отправлять электронную почту), у вас есть инструмент мониторинга, который вы ищете.

0

Ну вас заинтересует продукт Blade Logic под названием Blade Logic Configuration Manager? Это не бесплатно, но это может сделать намного больше, чем мониторинг окон. Просмотрите его. Он будет делать все, что вы просили в вашем вопросе и более

13

Если вы заинтересованы в некоторых .NET программирования, System.ServiceProcess пространства имен содержат классы, которые позволяют реализовать, установку и управление приложениями-служб Windows.

Простой пример, проверка и запуск сервиса в C#:

var srv = new ServiceController("MyService"); 
Console.WriteLine("MyService Status {0}", srv.Status); 
if (srv.Status != ServiceControllerStatus.Running) 
    srv.Start(); 
3

Это зависит от того, что вы хотите контролировать:

  • Служба фактически остановилась насколько Control Manager Service (СКМ).
  • Служба разбилась без осознания SCM - это очень часто из-за резьбы.
  • Служба висит без осведомленности о SCM - также очень распространена.

Для первого элемента вы можете настроить службу для запуска сценария, который отправляет оповещение по электронной почте. Обратите внимание, что это может быть очень неприятно, если служба продолжает перезагружаться из-за не зависящих от него обстоятельств (зависимость от слабого сетевого соединения или что-то еще).

Для двух других предметов вам понадобится услуга сердечного ритма, которую вы можете либо построить, либо купить. Будьте осторожны, чтобы монитор сердечного ритма работал локально в службах, которые он контролирует, потому что, как я писал некоторое время назад, the network is not reliable.

1

+1 для обеспечения контроля за обслуживанием на локальном компьютере.

Что-то вроде Service Hawk может отслеживать ваши услуги и перезапускать их, если они должны остановиться и отправит вам уведомление по электронной почте. Вы также можете рассмотреть возможность планирования периодических перезагрузок, поскольку, как упоминалось еще одним плакатом, служба не всегда отображается как «остановлена» в отношении SCM. В этих случаях служба зависает, замораживается или иным образом перепутана и перезапускает службу каждый раз в то время, когда расписание обеспечивает ее бесперебойную работу. Он просто очищает память и т. Д. И дает ей новое начало.

 Смежные вопросы

  • Нет связанных вопросов^_^