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

ログを集約する(EFK)

EFK (ElasticSearch + Fluentd + Kibana)と略されるソフトウエア群一式は、 代表的なログの収集、集約そして可視化の仕組みです。

これらをdockerコンテナベースで構築してみましょう。 なお、設定は最低限の変更だけしかしませんので、 より細かなカスタマイズが必要な場合は、公式ドキュメントや参考書を読んでください。

[構成図]

コンテナ1 --> 
コンテナ2 --> fluentd --> elasticsearch <-- kibana
コンテナ3 -->
  • 前提としてdockerのlogネットワークを作成し、全コンテナをlogに接続させます
  • 各コンテナはfluentdにログを送信します
  • fluentdが一度各コンテナからのログを受けて、 ログの集約・バッファリング(ここでログの加工なども可)したあと、 ElasticSearchへ転送します
  • ElasticSearchでログを受け、データを集積します
  • Kibanaで可視化します(kibanaからelasticsearchにデータを取りにいきます)
    無事に構築できていればhttp://localhost:5061/でKibanaの画面が出るはずです
  • 動作確認: nginxからログを流してKibanaで見られるか試してみましょう

ちなみにdockerの場合はじめからfluetnd対応の仕組みがしこまれているので簡単です。 ただし、ログをstdoutとstderrに出すように各コンテナを作りこむ必要があります。 dockerコンテナを--log-driver=fluentdオプションをつけて実行すれば、 コンテナの標準出力(stdout)と標準エラー(stderr)をfluentdに送信します。

操作

EFK 三つを起動するスクリプトもあります

起動

cd appendix/logaggr
sh scripts/start.sh

停止

cd appendix/logaggr/
sh scripts/stop.sh

備考

最近では、こういった構成はPub/Subメッセージングモデルなどと呼ばれています

  • Publisher = ログを送信するコンテナなど(出版者)
  • Subscriber = ログを受ける(購読者)
  • (あと、たいてい、この構成の真ん中に、メッセージのキューイングなどをおこなう部分があります)

リファレンス

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.