Server Build Exercises on AWS (Amazon Web Services) 2022 edition

Fluentd (EFK想定)

  • docker公式イメージを使います
  • elasticsearchのプラグインが必要なので、 公式イメージにプラグイン(fluent-plugin-elasticsearch)を入れたコンテナを作成します。 fluentdはrubyなのでgemというパッケージシステムでインストールです。
  • ここでは設定ファイルfluent.confもコンテナ内に入れて(COPYして)います
  • 全コンテナは仮想ネットワークlogに接続する想定です。 start.shスクリプトは、もしlogネットワークがないようなら作成します

操作

  • コンテナイメージの作成
cd appendix/logaggr/fluentd-efk/
cd docker
sh build.sh
  • コンテナの起動
cd appendix/logaggr/fluentd-efk/
sh scripts/start.sh
  • コンテナの停止
cd appendix/logaggr/fluentd-efk/
sh scripts/stop.sh

ファイル群の説明

appendix/logaggr/fluentd-efk/docker/Dockerfile
appendix/logaggr/fluentd-efk/docker/build.sh
appendix/logaggr/fluentd-efk/docker/files/fluent.conf
appendix/logaggr/fluentd-efk/scripts/start.sh
appendix/logaggr/fluentd-efk/scripts/stop.sh
  • docker/Dockerfile
  • docker/build.sh … docker build のスクリプト
  • docker/files/fluent.conf … fluetndの設定ファイル
  • scripts/start.sh … コンテナの起動
  • scripts/stop.sh … コンテナの停止

Dockerfile

docker公式イメージに、 プラグイン(fluent-plugin-elasticsearch)を入れたコンテナを作成しています。 fluentdはrubyなのでgemというパッケージシステムでインストールします。 その後、設定ファイルをコピーし、実行ユーザを fluent へ変更しています。

FROM fluent/fluentd:v1.14-debian-1

USER root
RUN gem install fluent-plugin-elasticsearch --no-document -- version 5.1.4 && \
gem install fluent-plugin-rewrite-tag-filter

COPY files/fluent.conf /fluentd/etc/fluent.conf

USER fluent

コンテナの生成

docker build -t fluentd-efk -f Dockerfile .

コンテナの起動

コンテナを起動する呪文は以下のとおりで、ポートを3つ開けています

docker run -d			\
       --network=log		\
       --name=fluentd-efk	\
       -p 24224:24224		\
       -p 24220:24220		\
       -p 24224:24224/udp	\
       fluentd-efk

備考

  • 上記の説明は docker 内臓の fluent へ送信する仕組みを使う前提です。 docker ではなく、ホスト側にはtd-agentを入れてください

fluentd ファミリー

トレジャーデータ社が製作したものです

  • fluentd
    • サーバもクライアントも fluentd を使います
    • コミュニティバージョンという位置づけ(なの?)
  • td-agent (== fluentd)
    • td-agent は fluentd と同じものですが、トレジャーデータ社が配布している版
  • embulk
    • バッチ処理むけ fluentd
  • fluent-bit
    • 組み込み機器を想定して、重たい Ruby ではなくC言語で書き直したもの
    • それなら最初からC言語で書けばいいのに
    • いろいろ反省したらしい
    • 設定ファイルも fluentd と異なる …
    • fluentd に比べてプラグインが少ないと言われるけれど、 だいぶ増えてきたみたいだし、 いまからなら fluenet-bit が分かればいいのでは? と思うのところですが、 クライアント側は fluent-bit でいいのですが、 サーバ側は、あいかわらず fluentd なので両方勉強してください orz ;-)
  • td-agent-bit (== fluent-bit)
    • トレジャーデータ社が配布している版

リファレンス

Last updated on 11 Jan 2022
Published on 11 Jan 2022
Copyright (C) 2021-2022 Ken'ichi Fukamachi, All rights reserved. CC BY-NC-SA 4.0
We appreciate AWS Academy Japan for the offer of the learning environment.

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.