monitでdelayed_jobを監視する方法
質問
でdelayed_jobを監視する方法について、ウェブ上に例はありますか? 監視 ?
私が見つけたものはすべて 神 を使っていますが、Rubyの長時間実行プロセスは一般に最悪なので、私はGodを使うのを拒否しています。(Godメーリングリストの最新の投稿は? God のメモリ使用量は着実に増えている .)
更新しました。 delayed_job には、現在 サンプル monit 設定 という質問に基づいています。
どのように解決するのですか?
以下は、私がこれを動作させた方法です。
-
を使用します。
delayed_job の collectiveidea フォーク
は活発にメンテナンスされていることに加え、このバージョンには素晴らしい
script/delayed_job
デーモンがあります。Railscasts には 良いエピソード のこのバージョンについてdelayed_job
( ASCIICasts バージョン ). このスクリプトには、複数のワーカーを実行する機能など、他にも良い機能があります。ここではそれをカバーしません。 -
monit をインストールします。Ubuntuのバージョンはとんでもなく古いので、ソースからインストールしました。以下のようにしました。
の指示に従いました。
に従って、Ubuntu パッケージに付属している標準の init.d スクリプトを取得しました。また、私は
./configure --sysconfdir=/etc/monit
で設定する必要があったので、Ubuntu の標準的な設定ディレクトリがピックアップされました。 -
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
ファイルに記述します。 - monitを設定します。 これらの指示は は広告がふんだんに入っていますが、それ以外はOKです。
-
capistranoの停止と起動のためのタスクを書いてください。
monit start delayed_job
とmonit stop delayed_job
が実行したいものです。また、デプロイ時にmonitを再読み込みして、設定ファイルの変更を拾うようにしています。
私が遭遇した問題点
-
daemons
には、gem がインストールされている必要があります。script/delayed_job
を実行する必要があります。 -
にRailsの環境を渡す必要があります。
script/delayed_job
に渡す必要があります。-e production
(など)。これはREADMEファイルには書かれていますが、スクリプトのヘルプ出力には書かれていません。 -
私は 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 で監視したい人の助けになれば幸いです。
関連
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】OS X Yosemite 10.10.5 で [Ruby on Rails] 5 をインストールすると extconf が失敗して終了コード 1 エラーになる。
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] heroku open - no app specified
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] Ruby: public static メソッドを作るには?
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?