Fluentd ロギング・ドライバ¶
fluentd
ロギング・ドライバは、コンテナのログを Fluentd コレクタに構造化したログ・データとして送信します。それから、ユーザは Fluentd の様々な出力プラグイン を使い、ログを様々な送信先に送れます。
ログ・メッセージ自身に加え、 fluent
ログ・ドライバは以下のメタデータを構造化ログ・メッセージの中に入れて送信できます。
フィールド |
説明 |
---|---|
|
64 文字の完全コンテナ ID |
|
開始時のコンテナ名。 |
|
|
このロギング・ドライバの使用時は、 docker logs
コマンドを利用できません。
使い方¶
必要であれば、同じ --log-opt
オプションを何度も指定可能です。
fluentd-address
:localhost:24224
に接続するhost:port
を指定します。tag
: fluentd メッセージに送るタグを指定します。{{.ID}}
、{{.FullID}}
、{{.Name}}
、docker.{{.ID}}
のようなマークアップ形式です。
デフォルトのロギング・ドライバを設定するには、Docker デーモンに --log-driver
オプションを使います。
docker daemon --log-driver=fluentd
特定のコンテナに対してロギング・ドライバを指定する場合は、 docker run
に --log-driver
オプションを指定します。
docker run --log-driver=fluentd ...
このロギング・ドライバを使う前に、Fluentd デーモンを起動します。ロギング・ドライバは、デフォルトで localhost:24224
のデーモンに接続を試みます。 fluentd-address
オプションを使えば、異なったアドレスに接続できます。
docker run --log-driver=fluentd --log-opt fluentd-address=myhost.local:24224
コンテナが Fluentd デーモンに接続できなければ、コンテナは直ちに停止します。
オプション¶
--log-opt NAME=VALUE
フラグで Fluentd ロギング・ドライバのオプションを追加できます。
fluentd-address¶
デフォルトでは、ロギング・ドライバは localhost:24224
に接続します。 fluentd-address
オプションを指定すると、異なったアドレスに接続します。
docker run --log-driver=fluentd --log-opt fluentd-address=myhost.local:24224
tag¶
デフォルトでは、Docker はコンテナ ID の冒頭 12 文字を tag log メッセージで使います。このログフォーマットをカスタマイズするには、 log tag オプションのドキュメント をご覧ください。
label と env¶
label
と env
オプションは、どちらもカンマ区切りでキーを指定できます。 label
と env
キーが重複する場合は、 env
の値が優先されます。どちらのオプションもロギング・メッセージの特別属性(extra attributes)に追加フィールドを加えます。
fluentd-async-connect¶
Docker は Fluentd にバックグラウンドで接続します。接続が確立できるまでメッセージはバッファされます。
Docker と Fluentd デーモンの管理¶
Fluentd
そのものについては、 プロジェクトのウェブページ と ドキュメント をご覧ください。
このロギング・ドライバを使うには、ホスト上に fluentd
デーモンを起動します。私たちは Fluentd docker イメージ の利用を推奨します。このイメージが特に役立つのは、各ホスト上にある複数のコンテナのログを統合する場合です。そして、ログはデータを統合する用途として作成した、別の Fluentd ノードに転送できます。
コンテナのログ記録をテスト¶
設定ファイル (
test.conf
) に入力ログをダンプするよう記述します。
<source>
@type forward
</source>
<match docker.**>
@type stdout
</match>
Fluentd コンテナを、この設定を使って起動します。
$ docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc -e FLUENTD_CONF=test.conf fluent/fluentd:latest
fluentd
ロギング・ドライバを使うコンテナを更に起動します。
$ docker run --log-driver=fluentd your/application
参考
- Fluentd logging driver