2015-10-21 11 views
0

Мы создаем в режиме реального времени веб-систему мониторинга для приложений .NET (исполняемый файл ASP.NET и Windows). Эти приложения могут запускать длительные операции, и статистика отображается в режиме реального времени на веб-странице.Мониторинг приложений в реальном времени .NET без опроса клиентов

Для ASP.NET мы обнаружили, что SignalR - идеальное решение: длительная работа (даже вызванная простой обратной почтой WebForms) периодически вызывает функции клиентской стороны JS через SignalR RPC для обновления страницы мониторинга. Но мы нанесли 2 оговорки:

  1. В ASP.NET нам нужно отслеживать несколько различных приложений, расположенных в нескольких разных виртуальных каталогах. Как мы перемещаем данные из этих разных приложений на одну страницу мониторинга HTML?

  2. Другое приложение представляет собой консольный исполняемый файл .NET Windows, который периодически запускается по расписанию. Как мы нажимаем статистику времени выполнения на одну и ту же страницу мониторинга HTML? Одна вещь приходит на ум - иметь EXE хранить временную статистику в БД и клиент извлекать те же данные из БД, но мы бы хотели избежать опроса. Другое - периодически с заданными интервалами EXE вызывал WebApp, передавая данные - и WebApp передавал бы его клиенту через тот же вызов SignalR. Но есть ли лучшие способы?

ответ

0

Очень новый для SignalR, не понимал, что у него несколько клиентов для разных платформ. Мы пойдем с клиентом SignalR .NET для всех приложений - все они будут разговаривать с главным концентратором SignalR, напрямую вызывающим серверные методы, которые, в свою очередь, обновляют страницу мониторинга.

+0

Было бы выгоднее запускать концентратор в качестве службы Windows, и все контролируемые приложения вызывают его методы и, в свою очередь, вызывают методы приложения мониторинга для отображения данных? Или у самого приложения для мониторинга есть хаб, который все остальные приложения вызовут достаточно? –

0

Одна архитектуры, которую я использовал небольшую служба сбора мониторинга, со встроенными клиентами мониторинга в каждом контролируемом приложении Asp.net, Windows настольного приложение, консольное приложение, служба Windows, или в противном случае.

Служба сбора данных всегда работает. Затем Webapp подключается непосредственно к службе и запрашивает состояние всех контролируемых приложений.

Мониторизованные приложения запускают небольшой встроенный клиент, который передает данные, специфичные для приложения, в службу мониторинга. Клиент может либо предоставлять данные о событиях или таймерах, либо службу мониторинга, запрашивать их по самому таймеру.

При этом у нас есть единая архитектура мониторинга - все, что работает, просто ведет переговоры с службой мониторинга для отправки обновлений, а клиенты-зрелые пользователи просто запрашивают данные об услугах с использованием единого протокола.

В основном это шаблон приложения, применяемый для мониторинга, и берет пару сигналов от дизайна SNMP.

+0

Похож на реальный хороший подход, и мы, вероятно, в конечном итоге реализуем его. Между тем, мы, вероятно, будем работать с SignalR в консольных приложениях. –