Убедитесь, что определенные процессы запущены, когда мое приложение Rails загружается

Я хочу убедиться, что определенные процессы, такие как поиск Sunspot Solr и delayed_job, выполняются, когда мое приложение Rails 3 инициализируется или загружается.

Я немного нуб, и, насколько я могу судить, я мог бы написать собственный инициализатор или использовать структуру мониторинга процессов, такую ​​​​как God или Monit.

Может ли кто-нибудь предложить оптимальный путь здесь?


person lightyrs    schedule 27.02.2011    source источник


Ответы (3)


Если вы используете приложение Rails, God — очень хороший вариант. Если вы не знакомы, у Railscasts есть хороший скринкаст, который поможет вам начать работу:

http://railscasts.com/episodes/130-monitoring-with-god

person Kevin Sylvestre    schedule 27.02.2011

Вы можете написать инициализатор, который проверяет, что-то вроде

raise ProcessNotRunning::MyProcess if `ps aux | grep 'processname' | grep -v grep | wc -l`.strip.zero?
person codatory    schedule 14.05.2012

Проблема с подходом с инициализатором заключается в том, что даже если все необходимые процессы выполняются при запуске, нет гарантии, что они продолжат работать в течение следующих нескольких недель или месяцев работы вашего приложения.

Используя систему мониторинга — и God, и Monit являются хорошими решениями — вы можете быть уверены, что даже если один из ваших процессов умрет, он будет перезапущен автоматически. Кроме того, вы можете получать уведомления, когда это происходит, поэтому вы получаете уведомление заранее, когда начинают возникать проблемы.

В двух словах: структура мониторинга, скорее всего, будет лучшим решением по сравнению с любым самодельным решением.

person Daniel Rikowski    schedule 14.05.2012