ロギング・ドライバの設定¶
コンテナには、 Docker デーモンよりも多くの異なるロギング(ログ保存)ドライバがあります。ロギング・ドライバを指定するには、 docker run
コマンドで --log-driver=VALUE
を使います。以下のオプションをサポートしています。
docker logs
コマンドは json-file
か journald
ロギング・ドライバ使用時のみ利用可能です。
label
と env
オプションは、ロギング・ドライバで利用可能な追加属性を加えます。各オプションはキーのリストをカンマで区切ります。 label
と env
キーの間に衝突があれば、 env
を優先します。
属性(attribute)を使うには、Docker デーモン起動時に指定します。
docker daemon --log-driver=json-file --log-opt labels=foo --log-opt env=foo,fizz
それから、 label
や env
の値を指定して、コンテナを起動します。例えば、次のように指定するでしょう。
docker run --label foo=bar -e fizz=buzz -d -P training/webapp python app.py
これはドライバ上のログに依存する追加フィールドを加えるものであり、次の例では json-file
の場合です。
"attrs":{"fizz":"buzz","foo":"bar"}
JSON ファイルのオプション¶
json-file
ロギング・ドライバがサポートしているロギング・オプションは以下の通りです。
--log-opt max-size=[0-9+][k|m|g]
--log-opt max-file=[0-9+]
--log-opt labels=label1,label2
--log-opt env=env1,env2
ログが max-size
に到達すると、ロールオーバされます(別のファイルに繰り出されます)。設定できるサイズは、キロバイト(k)、メガバイト(m)、ギガバイト(g) です。例えば、 --log-opt max-size=50m
のように指定します。もし max-size
が設定されなければ、ログはロールオーバされません。
max-file
で指定するのは、ログが何回ロールオーバされたら破棄するかを指定します。例えば --log-opt max-file=100
のように指定します。もし max-size
が設定されなければ、 max-file
は有効ではありません。
max-size
と max-file
がセットされると、 docker logs
は直近のログファイルのログ行だけ表示します。
syslog のオプション¶
syslog
ロギング・ドライバがサポートしているロギング・オプションは以下の通りです。
--log-opt syslog-address=[tcp|udp]://host:port
--log-opt syslog-address=unix://path
--log-opt syslog-facility=daemon
--log-opt tag="mailer"
syslog-address
は、ドライバが接続するリモートの syslog サーバのアドレスを指定します。指定されなければ、デフォルトでは実行中システム上にあるローカルの unix ソケットを使います。 tcp
や udp
で port
が指定されなければ、デフォルトは 514
になります。以下の例は syslog
ドライバを使い、リモートの 192.168.0.42
サーバ上のポート 123
に接続する方法です。
$ docker run --log-driver=syslog --log-opt syslog-address=tcp://192.168.0.42:123
syslog-facility
オプションは syslog のファシリティを設定します。デフォルトでは、システムは daemon
値を使います。これを上書きするには、 0 から 23 までの整数か、以下のファシリティ名を指定します。
kern
user
mail
daemon
auth
syslog
lpr
news
uucp
cron
authpriv
ftp
local0
local1
local2
local3
local4
local5
local6
local7
デフォルトでは、Docker はコンテナ ID の始めの 12 文字だけログ・メッセージにタグ付けします。タグ・フォーマットの記録方式をカスタマイズするには、 log tag オプションのドキュメント をご覧ください。
journald オプション¶
journald
ロギング・ドライバは journal の CONTAINER_ID
フィールドにコンテナ ID を記録します。ロギング・ドライバの詳細な動作については、 journald ロギング・ドライバ リファレンス・ドキュメントをご覧ください。
gelf オプション¶
GELF ロギングドライバは以下のオプションをサポートしています。
--log-opt gelf-address=udp://host:port
--log-opt tag="database"
--log-opt labels=label1,label2
--log-opt env=env1,env2
gelf-address
オプションは、接続先のリモート GELF サーバのアドレスを指定します。現時点では udp
が転送用にサポートされており、そのとき port
を指定する必要があります。次の例は gelf
ドライバで GELF リモートサーバ 192.168.0.42
のポート 12201
に接続します。
$ docker run --log-driver=gelf --log-opt gelf-address=udp://192.168.0.42:12201
デフォルトでは、Docker はコンテナ ID の始めの 12 文字だけログ・メッセージにタグ付けします。タグ・フォーマットの記録方式をカスタマイズするには、 log tag オプションのドキュメント をご覧ください。
label
と env
オプションが gelf ロギング・ドライバでサポートされています。これは extra
フィールドに、冒頭がアンダースコア ( _
) で始まるキーを追加するものです。
// […]
"_foo": "bar",
"_fizz": "buzz",
// […]
fluentd オプション¶
--log-opt NAME=VALUE
フラグを使い、以下の Fluentd ロギング・ドライバのオプションを追加できます。
fluentd-address
: 接続先をhost:port
の形式で指定。例:localhost:24224
tag
:fluentd
メッセージのタグを指定。
例えば、両方のオプションを指定すると、次のようになります。
docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag=docker.{{.Name}}
コンテナは指定した場所にある Fluentd デーモンに接続できなければ、コンテナは直ちに停止します。このロギング・ドライバの動作に関する詳細情報は fluentd ロギング・ドライバ をご覧ください。
Amazon CloudWatch Logs オプションの指定¶
Amazon CloudWatch ロギングドライバは、以下のオプションをサポートしています。
--log-opt awslogs-region=<aws_region>
--log-opt awslogs-group=<log_group_name>
--log-opt awslogs-stream=<log_stream_name>
このロギング・ドライバの動作に関する詳細情報は awslogs ロギング・ドライバ をご覧ください。
参考
- Configuring Logging Drivers
- https://docs.docker.com/engine/admin/logging/overview/