概要
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 件のコメント:
コメントを投稿