Вопрос или проблема
Проблема: одно из наших высоко гибридных приложений использует ~20 портов сервиса, нативных для Unix (nsqd, elasticsearch и др.). В настоящее время это выполняется в командной строке на переднем плане, что, по моему мнению, не особенно надежно. На Ubuntu у меня был отличный опыт с supervisord; однако последние версии больше не работают корректно на Windows.
Итак, какой конкретный процессный супервизор вы бы порекомендовали для Windows?
Критерии:
- Наличие веб-интерфейса с информацией о состоянии каждого процесса, выводом логов и минимум управлением запуском/перезапуском/остановкой
- Много приложений, поэтому запуск на основе конфигурационных файлов
- Было бы очень хорошо иметь вывод консоли, собирающий все выводы процессов для мониторинга
Спасибо!
Хотя я не нашел никаких конкретных готовых пакетов, этот гист: легкий supervisord для Windows соответствует критериям 2 и 3 выше, и является хорошей стартовой точкой для этого.
Правка: гист, похоже, не доступен, google cache на помощь, codegist, и pastebin
Ответ или решение
Рекомендуемые инструменты для контроля процессов в Windows
Введение
В современных приложениях, которые требуют высокой гибкости и надежности, использование процессных супервизоров значительно упрощает управление службами и их жизненными циклами. Если ваша команда работает с высокогибридным приложением, использующим множество UNIX-сервисов на Windows (таких как NSQD, Elasticsearch и другие), важно выбрать правильный инструмент, который будет соответствовать вашим требованиям.
Проблема и требования
Учитывая, что вы испытываете сложности с использованием supervisord на Windows, давайте разберем ваши основные требования к процессному супервизору:
- Веб-интерфейс: необходим для статуса каждого процесса, логов и управления (запуск, перезапуск, остановка).
- Конфигурация через файлы: нужна возможность настраивать множество приложений через конфигурационные файлы.
- Агрегированный вывод консоли: желательно иметь возможность следить за всеми процессами в одном месте.
Рекомендации по выбору процессного супервизора
-
NSSM (Non-Sucking Service Manager)
NSSM — это утилита, предназначенная для управления услугами в Windows. Хотя у него нет веб-интерфейса, его гибкость в настройке и крепкая интеграция с Windows делают его отличным выбором для управления процессами.
-
Плюсы:
- Простота установки и настройки.
- Поддержка вывода логов в файлы.
- Надежная работа на Windows, включая службу и обработку ошибок.
-
Минусы:
- Нет встроенного веб-интерфейса для мониторинга.
-
-
PM2 (Process Manager 2)
PM2 — это мощный процессный менеджер для Node.js, который также может использоваться для других типов приложений.
-
Плюсы:
- Простой веб-интерфейс для мониторинга процессов.
- Поддержка конфигурации через JSON-файлы.
- Возможность агрегирования логов и их просмотра.
-
Минусы:
- Настройка может потребовать дополнительных усилий для приложений, не основанных на Node.js.
-
-
Windows Service Wrapper (Winsw)
Winsw позволяет запускать приложения в качестве Windows-сервисов и предоставляет возможность конфигурировать их через XML.
-
Плюсы:
- Полная интеграция с Windows-системой.
- Высокая степень настройки и управления.
-
Минусы:
- Нет собственного веб-интерфейса; для этого понадобится дополнительно настроить другие инструменты.
-
Рекомендации для решений с веб-интерфейсом
Если вам именно нужен веб-интерфейс, могут быть рассмотрены инструменты, такие как:
-
DashBoard on Flask: Используйте Flask для создания простого веб-интерфейса, который сможет взаимодействовать с вашим процессным супервизором (например, PM2 или NSSM) для отображения статуса процессов.
-
Node.js + Express: Создайте веб-приложение с использованием Node.js и Express, чтобы отображать информацию о запущенных процессах, сбрасывать логи и управлять службами.
Заключение
Согласно вашим критериям, оптимальное решение может включать использование PM2 или NSSM, с учетом дополнительной настройки веб-интерфейса на базе Flask или Express. Это предоставит вам возможность полноценно контролировать и отслеживать состояние всех ваших процессов, обеспечивая высокий уровень надежности и управления.
Если у вас возникнут дополнительные вопросы или вам понадобится помощь в настройке, пожалуйста, не стесняйтесь обращаться!