2020年12月4日金曜日

docker stack deploy で logging driver の fluentd を使う方法

概要

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 件のコメント:

コメントを投稿