2016-07-12 4 views
3

dockerコンテナからログを受信するためのrsyslogサーバを設定しようとしています。私は現在、ドッキングウィンドウコンテナを実行するために、次のコマンドーをusinsgています:Docker rsyslogドライバは実際のメッセージの前にメッセージの長さを追加します

sudo docker run -d --log-driver=syslog --log-opt syslog-address=udp://localhost:514 --log-opt syslog-format=rfc5424 --log-opt tag="remote:shouldshow" alpine echo "some random message" 

私はタグリモートspliting、コロン文字で休憩にメッセージをrsyslogのためにドッキングウィンドウから、標準のログフォーマットのでrfc5424を使用しています:shouldshowをし、メッセージにshouldshowを追加してください。ここでは、この状況について 詳細情報:

https://github.com/docker/docker/issues/18712

問題がドッキングウィンドウから来る私のログメッセージは、次の例(rsyslogのからrawmsgプロパティ)で、127のように、メッセージの前に追加の3桁の数字を持っているということです

127 <30>1 2016-07-12T00:51:13-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message 

APP-NAMEやsyslogtagなどのsyslogプロパティを使用しようとすると、すべて値が< 30> 1になります。

私は127なしでこのメッセージをコピーして、それはnetcatを経由syslogサーバに送信され、値は次のように、正しく解析されました:

echo '<30>1 2016-07-12T00:15:53-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message' | nc -u -v localhost 514 

誰もが任意のアイデアは、なぜこれが起こっているのか?どんな助けでも本当に感謝しています。前もって感謝します。

ドッカーコードを見ると、この3桁の数字はメッセージの長さであることがわかりました。それでも私は同じ問題に直面している、rsyslogは実際のログメッセージの前にその長さを含むこのメッセージを正しく解析できない。

答えて

3

多くの苦労の末、私はそれを理解しました。 DockerログドライバがRFC5424 syslog形式を使用するように設定すると、Dockerは、TLS経由でsyslogメッセージを送信する標準的な方法を定義するRFC5425標準を使用してsyslogメッセージを送信するlibを使用します。 https://tools.ietf.org/html/rfc5425

したがって、TLSを使用するようにDockerログドライバを構成し、暗号化されたメッセージを受信するようにrsyslogサーバーを構成すると、rsyslogはメッセージを正しく解析します。

関連する問題