Мониторинг запущенных приложений в.NET?
У нас есть несколько приложений, которые работают на сервере Windows 2003/2008. Некоторые из этих приложений являются файлами JAR Java, которые запускаются с Scheduled Task
используя файл app.cmd.
Другие "большие", такие как SQL Server и IIS.
Я хотел бы написать приложение (или сервис, на самом деле), который просто отслеживает эти программы и видит, запущены они или нет.
Это немного за то, что я делал раньше. О, это должно быть написано на C#.
Я думал о каком-то типе "сердцебиения", чтобы каждые несколько минут я проверял, запущен ли поток (опять же, новые расширенные потоки) и, если это так, отправлял сообщение "Все в порядке" (используя SMTP или что-то в этом роде).,
Любые советы, с чего начать?
Спасибо за любые предложения.
2 ответа
Ты можешь использовать Process.GetProcesses()
:
Используйте этот метод, чтобы создать массив новых компонентов процесса и связать их со всеми ресурсами процесса на локальном компьютере.
Вы, вероятно, должны обрабатывать каждое приложение на индивидуальной основе, например, хотя вы могли бы просто проверить наличие процесса SQL Server, лучше было бы выполнить запрос, который (например) проверяет наличие данного база данных на сервере.
Точно так же вы можете выполнить простой HTTP-запрос к серверу IIS, чтобы проверить, правильно ли установлены разрешения и т. Д.
Очевидно, что способ тестирования ваших процессов Java будет зависеть от того, что они делают, хотя вы все равно можете просто проверить, запущен ли процесс (имейте в виду, что, если они работают как служба, они могут выполняться внутри одного из svchost). Процессы.exe - это не относится к запланированным задачам, хотя).