Пытаюсь найти счетчики для получения статуса службы с помощью perfmon. Это вообще возможно? Нам нужно отслеживать статус службы в Nagios, но удаленный доступ доступен только через Perfmon.
Для сервисов нет счетчиков производительности. Для своего рода одноразового использования вы можете отслеживать счетчики процесса, вызываемого вашей службой, например, закрытые байты процесса или количество потоков.
Поскольку идентификатор процесса будет меняться при каждом перезапуске, вам необходимо соответствующим образом настроить мониторинг. Но это будет работать как быстрое и грязное решение, если у вас нет чего-то более надежного.
Монитор производительности используется для измерения показателей производительности ваших машин, а не статуса службы.
Хотя я знаю, что вы хотите отслеживать этот статус в Perfmon, я не думаю, что это подходящий вам инструмент. Если вы можете попасть в services.msc вы можете перейти на вкладку «Восстановление» этой службы. Отсюда вы можете выбрать, как ваш сервер будет реагировать на различные состояния, в которых может находиться служба. Например, вы можете выбрать перезапуск службы при первом сбое и запустить сценарий, который отправит вам электронное письмо при втором и третьем сбое сервис и др.
Вы можете довольно легко написать сценарии PowerShell (или даже небольшие кодлеты C #), которые создают собственные счетчики производительности Windows. В них вы можете вводить любые данные, которые вы выбираете (например, числовой индикатор состояния службы?), В любой интервал времени, который кажется адекватным, что удобно, когда perfmon - единственный простой способ экспортировать данные (однажды у меня была такая же странная проблема, но это был другое приложение для мониторинга, чем Nagios).
К сожалению, я в отпуске и у меня только этот жалкий iphone, так что я думаю, что мне придется вернуться и вставить пример сценария, когда смогу.
Однако вы можете быстро и легко погуглить массу решений для PowerShell / C #, вот как я понял это, когда мне более или менее пришлось. Тем не менее, я думаю, вам нужно найти способ сделать это, чтобы избежать этого 6-месячного цикла qa.
Для тех, кто столкнется с этим в будущем, вы можете получить статус 1/0, используя следующее:
PowerShell
(Get-Service MSSQL`$SQLEXPRESS | Where-Object -Property Status -eq Running | Measure).count
CMD
sc query "MSSQL$SQLEXPRESS" | FIND /i "RUNNING" /c