2019年7月9日火曜日

docker-compose + fluentd driver のサンプル

概要

docker-compose で fluentd logging driver を使ったサンプルを紹介します

環境

  • macOS 10.14.5
  • docker for mac 18.09.2
  • docker-compose 1.23.2

サンプル

  • mkdir conf
  • vim conf/fluent.conf
<source>
  @type forward
</source>

<match docker.**>
  @type stdout
</match>
  • vim docker-compose.yml
version: '3.7'
services:
  logger:
    image: fluent/fluentd
    ports:
      - "24224:24224"
    volumes:
      - ./conf:/fluentd/etc
  web:
    image: nginx
    ports:
      - "80:80"
    logging:
      driver: fluentd
      options:
        fluentd-address: 192.168.99.1:24224
        tag: docker.container_1
    depends_on:
      - logger
  • docker-compose up -d

ポイント

  • 必ず host を経由して fluentd コンテナにアクセスしなければならない

fluentd-address: 192.168.99.1:24224 という感じで fluentd のエンドポイントを指定していますが例えばこれを fluentd-address: logger:24224 という感じで service 名にしてもエラーになります

  • fluent.conf がデフォルト別の名前の場合は FLUENTD_CONF という環境変数をセットすること

デプロイするパスは /fluentd/etc にしましょう

  • logging.options.tag の指定がない場合はデフォルトはホスト名が tag になる

fluent.conf の match タグで使うことになります
コンテナ名は指定しないと基本的にランダムな文字列になるので tag を指定しましょう

動作確認

  • docker-compose logs -f logger
  • curl localhost

で logger サービスのログに以下のように表示されれば OK です

logger_1  | 2019-07-02 11:03:36.000000000 +0000 docker.container_1: {"source":"stdout","log":"192.168.0.1 - - [02/Jul/2019:11:03:36 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.54.0\" \"-\"","container_id":"a091e2f50d1c9619ca50dae39b6d559c36cd7829dd48573f24a1040da9ae8d10","container_name":"/try_docker_compose_with_fluentd_web_1"}

ちなみに web サービス側のコンテナにはログが表示されなくなるので注意してください

0 件のコメント:

コメントを投稿