В настоящее время я занимаюсь разработкой небольшого приложения для мониторинга серверов, которое использует WMI для сбора информации об оборудовании, такой как использование ЦП и ОЗУ, а также некоторые другие методы для запросов к службам (FTP, HTTP, IMAP, SMTP, Raw TCP Socket и т. Д.),
Я уже создал сборщики данных для каждого из вышеперечисленных пунктов и смог получить данные из них.Поставщик данных услуг будет предоставлять время отклика и ответ сервера службы каждый раз, когда обновляется монитор службы.
Однако я врезался в стену, пытаясь построить логику для уведомления пользователей об ошибках и восстановлениях.Класс My Services, который базовый класс для всех подклассов служб содержит несколько событий - OnRefreshed, OnErrorOccured, OnErrorRecovered, OnResponseTimeThresholdReached, OnResponseTimeThresholdRecovered.
Я пытаюсь выполнить следующий сценарий:
Когда службы отвечают нормально, событие OnRefreshed запускается на каждом из интервалов обновления.
Когда произошла ошибка (например, 404 по HTTP), OnErrorOccuredсобытие должно быть запущено, и если пользователь желает, чтобы уведомление было отправлено, приступайте к отправке уведомления, но только один раз, пока служба не восстановится.
Когда служба восстанавливается изошибка, событие OnErrorRecovered должно быть запущено, и если пользователь желает получить уведомление, отправьте его только один раз, пока снова не возникнет ошибка.
То же самое относится и к событиям ResponseTime, которыедолжен быть запущен при возникновении соответствующей ситуации.
Если служба переключается между OK и Error / ThresholdReached на каждом интервале обновления, между уведомлениями должно быть время остывания, чтобы предотвратить увеличение количества уведомлений.
В настоящее время я создаю это приложениеиспользуя C #.Мы высоко ценим любое просвещение по этому вопросу или любые другие лучшие решения для его реализации.
Спасибо.