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)に追加フィールドを加えます。
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/