web-dev-qa-db-ja.com

runitロギングをどのように構成しますか

Runningを使用して適切なロギングでサービスを設定することに問題があります。 runitのドキュメントと私が内部で見つけた他のリソースに従って作成したファイルとスクリプトの概要は次のとおりです。

私はdebianでrunitを使用しているため、次のようになります。

/etc/service/test-> /etc/sv/testへのリンク。

`/ etc/sv/testの下:

$ ls /etc/sv/test
finish  log  run
$ ls /etc/sv/test/log
config  run

スクリプトrunおよびfinishは非常に単純です。

root@data1:/etc/sv/test $ cat /etc/sv/test/run
#!/bin/sh

touch /tmp/pid
echo $$ > /tmp/pid

while true; do
    date
    sleep 3
done
root@data1:/etc/sv/test $ cat /etc/sv/test/finish
#!/bin/sh

kill `cat /tmp/pid`

また、logscriptも非常に簡単です。

猫/ etc/sv/test/log/run

#!/bin/sh
exec svlogd -t /var/log/test

ディレクトリ/var/log/testが存在し、サービスが実行されます。

$ sv s test
run: test: (pid 11547) 536s; down: log: 1s, normally up, want up

しかし、ログディレクトリは空です...何が欠けていますか?すべてのログ情報はどこにありますか?

更新:

また、すべてのスクリプトが実行可能であることを確認しました。

アップデート2:

svが何らかの理由でロギングスクリプトを開始できないようです!

$ sv s test
run: test: (pid 14612) 5s; down: log: 0s, normally up, want up

更新3:

ロギングスクリプトを停止するには、次のコマンドを発行する必要があります。

$ sv d test/log
6
Oz123

質問とは関係のない問題がいくつかあります(coughpid files cough)しかし、適切な質問に取り組みましょう。


最初、ロギングはオプションです。ほとんどの場合、ロガーが必要になりますが、サービス定義にロガーがあることは難しい要件ではありません。

2番目、ロガーは事実上、サービスにスレーブ化されているため、./logは、ロギングに必要な設定を保持します。

3番目、サービスを停止すると、ロガーは理由により実行されたままになります-サービスが終了するまで残りのデータをキャプチャするためにそこにあります。これは、サービスがダウンしたときだけでなく、サービスがクラッシュした場合のロギングデータの損失を防ぐために行われました。 サービスが停止している場合でも、ロガーが実行されるのは正常です。サービスを開始すると、新しいサービスインスタンスが既存のロガーに再接続されます。

4番目正解です。svコマンドで明示的に名前を付けることで、ロガーを停止できます。これは、既存のdaemontoolsパラダイムと一致しています。

Fifth、svlogdプログラムの失敗を登録するための異常な必要性がない限り(非常にありそうにありません)、それを殺すことなどについて心配する必要はありません。ダウンするように通知するだけで、runsv監視プロセスが終了します。PIDまたはkillコマンドは必要ありません。

さらに質問がある場合は、 監視メーリングリスト に連絡することをお勧めします。これは、ノイズが少なく、知識のある人が多く、質問に答えることができます。読み取り専用ミラーは mail-archive.org にもあります。

4
Avery Payne

だから、いくつかの試行錯誤の後、私は解決策を見つけました。

次のことに注意することが重要です。

  1. 構成ファイル:直感に反していることに注意してください。 /etc/sv/testでサービスを監視し、/etc/sv/test/logでログディレクトリを監視している場合、config/etc/sv/test/log/configにあると予想されます。ただし、ファイルはsvlogdを実行した場所から読み取られることに注意してください。つまり、ログスクリプトが/var/log/testsvlogdの最後の引数)で実行される場合、これが構成ファイルが予期される場所です。 var/log/test/configListアイテムに構成を記述します
  2. 設定の再読み込み:設定ファイルを変更した場合、次のコマンドでスクリプトを停止および開始できます。
$ sv down test/log
$ sv start test/log
ok: run: test/log: (pid 21190) 0s
3
Oz123