tjinjin's blog

インフラ要素多めの個人メモ

ESを使ったログ基盤っぽいやつがとりあえず形になった

About

ある程度作ったのでメモ用。

イメージ

f:id:cross_black777:20180816235114p:plain

解説

  • ECSで動いているfluentdが一旦S3にログを吐く
  • S3にputされるとS3 eventを使ってその情報がSQSに流れる
  • 別clusterで動いているfluentdコンテナがs3をpollingしていて、sqsから情報を取ってきてS3のログを取得する(fluent-plugin-s3のinputを使っている)
  • 取ってきたログをfluent-plugin-elasticsearchを使ってESに投げる
  • ESは別AWSアカウントで動いていて、別の担当者が構築しているので詳細は省く。
  • AWSアカウント間をまたいでログを流すため、ちょっと工夫している。今回はVPC endpoint(Private link)を使ってVPCを意識せずにログを流すようにした。
  • S3の設定からVPC endpointの設定周りはpythonスクリプト書いて実現した。
  • ログはkibanaで見る感じ。

感想

  • ログを持っているclusterから直接ログを投げてないのは、設定変更のしやすさから切り分けたかったのと、流量が増えた場合に詰まって重くなるのが嫌だったから。
  • sqs方式はコンテナ増やせばいいので悪くないかなと思っている。これで耐えられなかったらkinesisにログを投げてそこから引っ張るとかも考える。
  • この構成の便利ポイントはALBのログも簡単にESに投げられるようになるところ。
  • VPC endpoint楽なので良い。