さまざまな runit サービスの svlogd ログのマージ

さまざまな runit サービスの svlogd ログのマージ

複数のNodeプロセスが同じコードを実行するNode.jsアプリケーションを実行したいと思います。私はそれを使用しています走るNode プロセスをそのまま起動して管理します。良いシェフのサポート。設定を説明するために2つのrunitサービスディレクトリを実行しているとします。

/etc/sv/test-1/run

#!/bin/sh
echo running test 1
sleep 9999

/etc/sv/test-2/run

#!/bin/sh
echo running test 2
sleep 9999

(実際のNodeアプリケーションを実行するためのテストプレースホルダーはWです。echosleep

これはうまくいきます...基本的に、runitプログラムがsvlogd各サービスのログを別々のディレクトリに保存しようとしていることを除いて。問題は、複数の場所でアプリケーションのすべてのログエントリを表示したくないことです。

svlogd同じログファイルに書き込もうとした最初の試みは次のとおりです。

/etc/sv/test-1/log/run

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

/etc/sv/test-2/log/run

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

これではありません。どのログサービスを最初に起動しても正常に実行されます。 2 番目に開始されたロギングサービスは、他のロギングサービスによってロックされているため実行されません。表示するには:

$ sudo /etc/service/test-2/log/run
svlogd: warning: unable to lock directory: /var/log/test: temporary failure
svlogd: fatal: no functional log directories.

これを設定するより良い方法はありますか?runit同じコードを実行する複数のサービスのすべてのログエントリを1か所でどのように表示できますか?

ベストアンサー1

私が知っている限り、svlogdログを単一のファイルにマージすることはサポートされていません。ただし、ソケットのロギングはサポートしています。私の回避策は、svlogdログエントリをUDPを介して実行されているコンピュータに転送するように指示することでした。システムログはい。

/etc/sv/test-1/log/run

#!/bin/sh
exec svlogd -tt /var/log/test/1

/var/log/test/1/config

ptest-1: 
U127.0.0.1

/etc/sv/test-2/log/run

#!/bin/sh
exec svlogd -tt /var/log/test/2

/var/log/test/2/config

ptest-2: 
U127.0.0.1

ここでは、必要なタスクを実行するようにrsyslogを設定するだけです。

おすすめ記事