1. ホーム
  2. ruby-on-rails

monitでdelayed_jobを監視する方法

2023-11-18 16:36:32

質問

でdelayed_jobを監視する方法について、ウェブ上に例はありますか? 監視 ?

私が見つけたものはすべて を使っていますが、Rubyの長時間実行プロセスは一般に最悪なので、私はGodを使うのを拒否しています。(Godメーリングリストの最新の投稿は? God のメモリ使用量は着実に増えている .)

更新しました。 delayed_job には、現在 サンプル monit 設定 という質問に基づいています。

どのように解決するのですか?

以下は、私がこれを動作させた方法です。

  1. を使用します。 delayed_job の collectiveidea フォーク は活発にメンテナンスされていることに加え、このバージョンには素晴らしい script/delayed_job デーモンがあります。Railscasts には 良いエピソード のこのバージョンについて delayed_job ( ASCIICasts バージョン ). このスクリプトには、複数のワーカーを実行する機能など、他にも良い機能があります。ここではそれをカバーしません。
  2. monit をインストールします。Ubuntuのバージョンはとんでもなく古いので、ソースからインストールしました。以下のようにしました。 の指示に従いました。 に従って、Ubuntu パッケージに付属している標準の init.d スクリプトを取得しました。また、私は ./configure --sysconfdir=/etc/monit で設定する必要があったので、Ubuntu の標準的な設定ディレクトリがピックアップされました。
  3. monitのスクリプトを書きます。私が思いついたのはこんな感じです。

    check process delayed_job with pidfile /var/www/app/shared/pids/delayed_job.pid

    start program = "/var/www/app/current/script/delayed_job -e production start"

    stop program = "/var/www/app/current/script/delayed_job -e production stop"

    これをsoucre control systemに保存して、monitに include /var/www/app/current/config/monit の中に /etc/monit/monitrc ファイルに記述します。

  4. monitを設定します。 これらの指示は は広告がふんだんに入っていますが、それ以外はOKです。
  5. capistranoの停止と起動のためのタスクを書いてください。 monit start delayed_jobmonit stop delayed_job が実行したいものです。また、デプロイ時にmonitを再読み込みして、設定ファイルの変更を拾うようにしています。

私が遭遇した問題点

  1. daemons には、gem がインストールされている必要があります。 script/delayed_job を実行する必要があります。
  2. にRailsの環境を渡す必要があります。 script/delayed_job に渡す必要があります。 -e production (など)。これはREADMEファイルには書かれていますが、スクリプトのヘルプ出力には書かれていません。
  3. 私は Ruby Enterprise Edition を使っているので、monit をその Ruby のコピーで起動させる必要がありました。なぜなら、その方法は sudo は PATH を処理します。 をUbuntuで処理するため、私は結局、シンボリックリンクで /usr/bin/ruby/usr/bin/gem を REE バージョンに変更しました。

monit をデバッグするとき、init.d のバージョンを停止して、th コマンドラインから実行すると、エラーメッセージを得ることができることがわかりました。そうしないと、なぜ物事がうまくいかないのかを理解するのが非常に難しくなります。

sudo /etc/init.d/monit stop
sudo monit start delayed_job

これが、次に delayed_job を monit で監視したい人の助けになれば幸いです。