Мониторинг процессов и менеджер сервисов для веб-приложения Python
Мы настраиваем веб-приложение Python, используя веб-сервер CherryPy на нескольких Linux-серверах (он находится за балансировщиком нагрузки nginx, отправляющим трафик на различные серверы). Мы находимся в процессе перехода с серверов Windows на серверы Linux, и мы будем работать на CentOS 6.5.
В Windows у нас был специальный менеджер служб, который запускал и останавливал исполняемые файлы Python и перезапускал их, если они сильно зависали или выходили по какой-либо причине.
Мой вопрос: что такое хороший инструмент для того же в Linux? В идеале это будет:
- Иметь возможность вручную запускать и останавливать программу Python (наш сервер и приложение на основе CherryPy), используя что-то вроде
service our_app start
или же/etc/init.d/our_app start
, - Автоматически перезапустить программу, если она завершается или вылетает
- Запустите сервис при запуске системы
До сих пор я предлагал различные возможности, от простого к более сложному:
- python-демон с помощью скрипта /etc/init.d
- выскочить с простым сценарием выскочки, как эти: один, два, три
- supervisor: выглядит интересно, но как это будет лучше для нас, чем просто использование upstart?
- monit: больше, чем нам нужно на данном этапе, но, возможно, можно было бы использовать это поверх одного из вышеперечисленных?
Примечание: я разработчик, у которого больше опыта работы с Windows, чем с Linux, и больше опыта разработки, чем у опыта ops / sysadmin. Просто говорю'.:-)
1 ответ
Я голосую за Monit, и есть много хороших примеров конфигурации для него.
Не думайте о Monit как о "больше, чем вам нужно". Он делает именно то, что говорит легким и надежным способом. Демон стабилен и не нуждается в няне. Он запустит все необходимые вам тесты процесса, PID, имени, соединения и файла. Перезапуск и поведение действия могут быть настроены. И есть хороший минимальный GUI/TUI для управления процессами.