проверьте процесс yourapp с помощью pidfile /somepath/yourapp.pid

я есть куча скриптов на Ruby, которые долго работают, я хотел бы убедиться, что каждые 30 секунд они работают.

Я обычно запускаю команды простоruby script-name.rb

Как я могу настроить monit для обслуживания этих скриптов?

Обновить: Я пытался следоватьэтот метод для создания сценария оболочки который затем запустит процесс ruby, но, похоже, он не создает файл .pid, а ввод «./wrapper-script stop» ничего не делает: /

Должен ли я написать pid внутри ruby ​​или использовать скрипт-обертку для создания pid, необходимого для monit?

 DigitalRoss10 янв. 2011 г., 22:01
Вот для чего это.

Ответы на вопрос(7)

не в тему, но), поскольку это касается рубина, почему бы вам не использовать:http://god.rubyforge.org/ ?

 Tom20 янв. 2011 г., 19:17
Я использую крошечный VPS, использование памяти Gods оказалось дороже, чем я мог себе позволить.

Изменить файл:

/etc/init.d/skeleton 

Вам нужно будет немного изменить его, а затем:

chmod +x /etc/init.d/process_name 
sudo update-rc.d process_name defaults
sudo /etc/init.d/process_name (start| stop| reload ) 

Теперь просто используйте Monit с pid в /var/run/process.pid

Начальное местоположение:sudo /etc/init.d/process start

место остановки:sudo /etc/init.d/process stop

ура

pid файл с именемyourapp.pid

File.open('/somepath/yourapp.pid', 'w') {|f| f.write Process.pid }

Настройте Monit для проверки pid в /etc/monit/conf.d/yourapp

проверьте процесс yourapp с помощью pidfile /somepath/yourapp.pid

я вас (просто откройте файл и напишите$$ в этом). Тем не менее, подход сценария оболочки должен работать нормально. Имеет ли ваш скрипт разрешение на запись в файл в/var/run (или куда вы кладете pidfile)?

Решение Вопроса

http://mmonit.com/wiki/Monit/ConfigurationExamples

Просто выберите простой и измените его в соответствии с вашими потребностями.

Обновление: скрипт-обертка должен создать pid для вас в этой строке:

echo $ > /var/run/xyz.pid;

Вы адаптировали сценарий к вашим потребностям? Это исполняемый (chmod +x)? Есть ли у него разрешения на запись для пункта назначения? Возможно, опубликуйте упаковку, которую вы пытаетесь использовать, чтобы я мог помочь вам больше.

 Tom16 янв. 2011 г., 18:31
Только что добавил обновление
 jmonteiro21 нояб. 2011 г., 02:08
+1 за ссылку на примеры конфигурации
 Tom11 янв. 2011 г., 09:13
Спасибо, но я не могу найти файл .pid на диске для рубина?
 Michael Kohl11 янв. 2011 г., 09:41
Что ж, если ваши скрипты не создают его, тогда файл PID отсутствует. Либо измените сценарий, чтобы создать его, либо следуйте инструкциям в разделе FAQ:mmonit.com/wiki/Monit/FAQ#pidfile
 Michael Kohl14 янв. 2011 г., 21:01
Том, ты добиваешься прогресса в этом? Помогли ли ссылки? Если нет, возможно, отредактируйте свой вопрос, чтобы сообщить нам, как далеко вы продвинулись.

ию, просто используйтеДемоны библиотека и все готово.

Представьте, что у вас есть класс Worker, у которого есть метод «run», который входит в бесконечный цикл чтения из сокета или чего-то подобного, вот как вы должны написать свою оболочку Daemons:

# this is file my_worker_control.rb
require 'rubygems'
require 'daemons'
require 'worker'

Daemons.run_proc(:app_name => 'my_worker', :dir_mode => :system, :log_output => true ) do
  Worker.run
end

Как только скрипт завершится, просто вызовите его из командной строки или скрипта init.d:

my_worker_control.rb run | start | stop | restart

Этот конфиг сгенерирует файл «my_worker.pid» в «/ var / run», и вы можете использовать monit для наблюдения за процессом с помощью этого файла.

 Michael Kohl19 янв. 2011 г., 08:58
В конце концов, это просто скрипт-обертка, абстрагированный от Ruby-гема. Bash-версия от Monit Wiki не более "черная магия", чем эта.
 Maurício Linhares19 янв. 2011 г., 12:53
Да, но этот скрипт-обертка может быть вашим "основным" скриптом в вашем коде ruby, тот, который запускает все это, не нужно иметь дело с bash, писать pid-файлы, обрабатывать логирование или что-то в этом роде. Демоны справятся со всем этим за вас.
 Tom18 янв. 2011 г., 13:09
У вас есть пример использования Daemons?
 Maurício Linhares18 янв. 2011 г., 13:54
Обновленный ответ.
 Michael Kohl19 янв. 2011 г., 20:57
Конечно, я не имел в виду, что «демоны» бесполезны, я сам рекомендовал это на SO. В любом случае, давайте просто согласимся, что это крутая жемчужина :-)

Ваш ответ на вопрос