Fluentd ロギング・ドライバ

fluentd ロギング・ドライバは、コンテナのログを Fluentd コレクタに構造化したログ・データとして送信します。それから、ユーザは Fluentd の様々な出力プラグイン を使い、ログを様々な送信先に送れます。

ログ・メッセージ自身に加え、 以下のメタデータを構造化ログ・メッセージの中に入れて fluent ログ・ドライバが送信できます。

フィールド 説明
container_id 完全な 64 文字のコンテナ ID。
container_name 開始時のコンテナ名。 docker rename でコンテナの名称を変えても、新しい名前は journal エントリに反映されない。
source stdoutstderr

このロギング・ドライバを使うと、 docker logs コマンドは利用できません。

使い方

同じオプションは、必要な回数分の --log-opt 指定がサポートされています。

  • fluentd-addresslocalhost: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

labelenv オプションは、どちらもカンマ区切りでキーを指定できます。 labelenv キーが重複する場合は、 env の値が優先されます。どちらのオプションもロギング・メッセージの特別属性(extra attributes)に追加フィールドを加えます。

Docker と Fluentd デーモンの管理

Fluentd そのものについては、 プロジェクトのウェブページドキュメント をご覧ください。

このロギング・ドライバを使うには、ホスト上に fluentd デーモンを起動します。私たちは Fluentd docker イメージ の利用を推奨します。このイメージが特に役立つのは、各ホスト上にある複数のコンテナのログを統合する場合です。そして、ログはデータを統合する用途として作成した、別の Fluentd ノードに転送できます。

コンテナのログ記録をテスト

  1. 設定ファイル ( test.conf ) に入力ログをダンプするよう記述します。
<source>
  @type forward
</source>


<match docker.**>
  @type stdout
</match>
  1. Fluentd コンテナを、この設定を使って起動します。
$ docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc -e FLUENTD_CONF=test.conf fluent/fluentd:latest
  1. fluentd ロギング・ドライバを使うコンテナを更に起動します。
$ docker run --log-driver=fluentd your/application