Сервис мониторинга с веб-API и GUI - PullRequest
0 голосов
/ 25 февраля 2012

Мне нужно сделать кроссплатформенное приложение (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 Мбит должны бытьЯ решил, что Java с сборщиком мусора, который любит делать паузы, является хорошим выбором (ну, эти паузы, по-видимому, пропорциональны использованию памяти, чтов этом случае), но я думаю, что это может быть жизнеспособным вариантом, но я не знаю, как спроектировать такое приложение, поэтому оно запускает надлежащий фоновый процесс, а также веб-интерфейс.Нужно ли запускать Glassfish или Tomcat?Нужно ли использовать какие-либо библиотеки?

На этих серверах много памяти и ЦП.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...