Сервис мониторинга с веб-API и GUI

Мне нужно сделать кроссплатформенное (Linux/Windows) приложение, которое работает в фоновом режиме на сервере, выполняет мониторинг локальной системы через сетевые сокеты, а также отслеживает загрузку ЦП плюс некоторые внешние команды для определения состояния системы. запускает / останавливает неотвечающие или неисправные процессы на одном сервере, сообщает о результатах удаленному кластеру mysql, а также предоставляет веб-API и графический интерфейс, чтобы можно было увидеть, что происходит, и настроить его. В случае сбоя этого процесса требуется автоматический перезапуск, отправка подтверждения по электронной почте и т. Д. Я знаю, что это может звучать странно, но приложение можно спроектировать так, чтобы оно выполняло, например, 100 потоков мониторинга (каждый как отдельный процесс потока), каждый не блокирует другого. Это проще реализовать, чем один поток со всеми неблокирующими вещами. Обратите внимание, что простота реализации важнее, чем собственно философия кодирования. Это также важно из-за требований в реальном времени - каждая проверка должна выполняться каждую 1 секунду и действовать мгновенно.

Я сделал такое приложение в C#, и мне потребовался только один день, чтобы сделать это. Он использует специфичные для Windows вещи, поэтому он вообще не переносим в Mono, но теперь он работает в течение 6 месяцев на 40 производственных системах и никогда не отказывает, потому что он обрабатывает все исключения должным образом, поэтому я бы предпочел сделать это на языке, который имеет хороший операторы try/catch, такие как C#, просто эффективны. Это приложение для Windows также использует стандартный интерфейс winforms / WPF для настройки и т. Д., Но для Linux, я думаю, мне нужно будет использовать веб-интерфейс.

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

Существуют некоторые требования к производительности - это приложение получает сообщения через UDP через 50 портов (необходимо убедиться, что сервер принимает потоки), каждое на 10 Мбит и C# не имеет проблем с обработкой. Это на самом деле просто проверка, включены ли потоки, а не анализ этих пакетов.

Я хотел бы спросить вас, какая архитектура / язык лучше всего подходит для разработки и реализации такого рода приложений, поэтому оно наиболее оптимально? Например, можно выполнять графический интерфейс PHP и бэкэнд-мониторинг C/C++ (или perl или python), но для запуска PHP мне потребуется запустить apache, что немного сложнее.

Поскольку эти 10-мегабитные потоки должны обрабатываться таким образом, что должна быть обнаружена ровно 1 секунда UDP-потока, который не поступает, мне было интересно, является ли Java с сборщиком мусора, который любит делать паузы, хорошим выбором (ну, эти паузы кажутся пропорциональными использование памяти, которое в данном случае не будет большим), но я думаю, что это может быть жизнеспособным вариантом, но я не знаю, как спроектировать такое приложение, поэтому оно запускает надлежащий фоновый процесс, а также веб-интерфейс. Нужно ли запускать Glassfish или Tomcat? Нужно ли использовать какие-либо библиотеки?

Эти серверы имеют много памяти и процессора.

Это в основном для управления доступностью в кластерах.

Я программировал java 10 лет назад в Eclipse и Netbeans, но у меня много времени на изучение: на моем ноутбуке установлены оба приложения - они оба очень хороши.

0 ответов

Другие вопросы по тегам