Fluentd ロギング・ドライバ¶
fluentd ロギング・ドライバは、コンテナのログを Fluentd コレクタに構造化したログ・データとして送信します。それから、ユーザは Fluentd の様々な出力プラグイン を使い、ログを様々な送信先に送れます。
ログ・メッセージ自身に加え、 fluent ログ・ドライバは以下のメタデータを構造化ログ・メッセージの中に入れて送信できます。
| フィールド | 説明 |
|---|---|
container_id |
64 文字の完全コンテナ ID |
container_name |
開始時のコンテナ名。 docker rename でコンテナの名称を変えても、新しい名前は journal エントリに反映されない |
source |
stdout か stderr |
このロギング・ドライバの使用時は、 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
- https://docs.docker.com/engine/admin/logging/fluentd/