5

デーモンツールスーパーバイザーをどのようにスクリプト化する必要がありますか?

DJ Bernsteinsのdaemontoolsを使用して、いくつかのプロセスを実行し続け、正常に動作し始めました。しかし今、私はそれらのプロセスに関するいくつかの追加の条件を監視する必要があり、それを行う方法についての良い情報を見つけることができませんでした。

私のシナリオでは、Webアプリ(pharo smalltalk仮想マシン)用にいくつかのプロセスを実行していて、それぞれがポートでhttpに応答します(これは負荷分散用です)。どういうわけか、それらが実行されているだけでなく、http要求に応答していることを確認するためにそれらにpingを実行したいと思います。30秒を超えてリクエストに特定の方法で応答しない場合は、クラッシュしたものとして扱われ、単に再起動する必要があります。

これはdaemontoolsでも可能ですか?もしそうなら、このスクリプトをどのように書き、どこに配置すればよいですか?またはこれに関するドキュメントはどこにありますか?

4

2 に答える 2

6

最も簡単な解決策は、30秒間スリープし、サービスの存在をテストするスクリプトを使用して別のdaemontoolタスクを作成することです(たとえば、wgetまたはcurlを使用)。サービスがタイムリーに応答しない場合は、サービスを再起動するか(svc -t yourapp)、および/または通知を送信できます。新しいサービスの実行スクリプトは、次のように単純に見える可能性があります。

#!/bin/sh
sleep 30
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then
  svc -t /etc/service/yourapp
fi

また、 Muninのようなツールで良い経験をしました。ここでも、画像の状態に関する情報を提供するスクリプトを提供する必要があります。RESTサービスを使用して画像を設定すると、アクティブセッション、非アクティブセッション、gcパラメーター、メモリ消費量、データベース統計などの非常に興味深いメトリックを提供することもできます。ツールは、時間の経過とともに優れたグラフを描画し、境界を指定できます。物事がうまくいかないときに通知を受け取ります。

于 2012-05-19T09:18:46.803 に答える
3

サービスが応答するかどうかを検出するには、curl(HTTPおよびコマンドライン/シェルスクリプトに最適)を使用できます。

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out!

応答が200(OK)であることを確認するなど、より洗練されたものを書くことができます。

于 2012-05-19T01:37:23.537 に答える