Мониторинг процессов и менеджер сервисов для веб-приложения Python

Мы настраиваем веб-приложение Python, используя веб-сервер CherryPy на нескольких Linux-серверах (он находится за балансировщиком нагрузки nginx, отправляющим трафик на различные серверы). Мы находимся в процессе перехода с серверов Windows на серверы Linux, и мы будем работать на CentOS 6.5.

В Windows у нас был специальный менеджер служб, который запускал и останавливал исполняемые файлы Python и перезапускал их, если они сильно зависали или выходили по какой-либо причине.

Мой вопрос: что такое хороший инструмент для того же в Linux? В идеале это будет:

  1. Иметь возможность вручную запускать и останавливать программу Python (наш сервер и приложение на основе CherryPy), используя что-то вроде service our_app start или же /etc/init.d/our_app start,
  2. Автоматически перезапустить программу, если она завершается или вылетает
  3. Запустите сервис при запуске системы

До сих пор я предлагал различные возможности, от простого к более сложному:

  • python-демон с помощью скрипта /etc/init.d
  • выскочить с простым сценарием выскочки, как эти: один, два, три
  • supervisor: выглядит интересно, но как это будет лучше для нас, чем просто использование upstart?
  • monit: больше, чем нам нужно на данном этапе, но, возможно, можно было бы использовать это поверх одного из вышеперечисленных?

Примечание: я разработчик, у которого больше опыта работы с Windows, чем с Linux, и больше опыта разработки, чем у опыта ops / sysadmin. Просто говорю'.:-)

1 ответ

Я голосую за Monit, и есть много хороших примеров конфигурации для него.

Не думайте о Monit как о "больше, чем вам нужно". Он делает именно то, что говорит легким и надежным способом. Демон стабилен и не нуждается в няне. Он запустит все необходимые вам тесты процесса, PID, имени, соединения и файла. Перезапуск и поведение действия могут быть настроены. И есть хороший минимальный GUI/TUI для управления процессами.

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