概要
Swarm クラスタ上にデプロイしたコンテナで fluentd のロギングドライバを使う方法を紹介します
デプロイには docker-compose を使います
環境
- macOS 10.15.7
- docker-machine 0.16.2
Swarm クラスタ構築
こちらを参考に事前に構築してください
今回は上記で構築した想定で docker-machine + vagrant 上で確認します
fluentd コンテナの起動
まずは fluentd コンテナを起動します
この fluentd に Swarm クラスタ上で動作しているコンテナからログを投げて動作確認します
vim fluent.conf
<source>
@type forward
</source>
<match docker.**>
@type stdout
</match>
docker run -d -p 24224:24224 -p 24224:24224/udp -v $(pwd):/fluentd/etc -e FLUENTD_CONF=fluent.conf fluent/fluentd
docker-machine で構築したのであればリモートの docker を操作してもちゃんとローカルにあるファイルを転送してくれるようです
docker-compose の準備
次に Swarm 上にデプロイするコンテナを定義します
今回は簡単に確認できるように nginx のコンテナでも立ててみます
192.168.100.109
は fluentd コンテナを立ち上げたホストになります
version: '3.7'
services:
web:
image: nginx
ports:
- "80:80"
deploy:
replicas: 2
logging:
driver: fluentd
options:
fluentd-address: 192.168.99.109:24224
tag: docker.{{.ID}}
docker stack deploy -c docker-compose.yml test
動作確認
各ホストにデプロイされた nginx にアクセスしてログがちゃんと fluentd コンテナに飛んでいるか確認します
docker logs -f angry_pare
angry_pare は fluentd コンテナの名前になります
curl $(docker-machine ip master)
curl $(docker-machine ip node1)
これで fluentd 側にログが流れていることが確認できれば OK です
2020-12-03 03:17:25.000000000 +0000 docker.bc58810c5e27: {"log":"10.0.0.2 - - [03/Dec/2020:03:17:25 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.69.1\" \"-\"","container_id":"bc58810c5e2769927422c23098fbe800c8e94b3d7e00a95434057b6642bdc4b8","container_name":"/test_web.1.wm9thorpotwi3v71l064v6b7f","source":"stdout"}
2020-12-03 03:17:32.000000000 +0000 docker.5a3def862387: {"container_id":"5a3def8623872a47750b3a66bf01a7776ddd130c65530f3d26d309a781cc58f5","container_name":"/test_web.2.zd5jilpjax5qk1qkwdr8c021a","source":"stdout","log":"10.0.0.3 - - [03/Dec/2020:03:17:32 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.69.1\" \"-\""}
最後に
fluentd コンテナは fluent.conf ファイルがうまく転送できれば docker-compose に混ぜても良いと思います
あとは転送したログを好きな場所に飛ばせば OK です
0 件のコメント:
コメントを投稿