データサイエンティストに聞いてわかったデータ分析基盤アーキテクチャの勘所

データサイエンティストに聞いてわかったデータ分析基盤アーキテクチャの勘所

ログ収集&可視化のためのアーキテクチャについて、同僚のデータサイエンティストからお知恵を拝借しました。

お聞きした内容がかなり有益だったため、メモを残しておきます。

ログの保存場所

  • 生ログは必ず全件保存すること
  • 分析タイミングや分析ツールの都合で、適したDWHとなるデータストアに保存すること

とりあえず、S3に保存してさえおけば分析はできる

  • athena quicksight使えば良い

ElasticSearchのindexの作成単位

  • 細かく分けておくと分析しやすい
  • 細かく分けておくとライフサイクルを変えることができる
    • ログローテートをするかしないか、する場合の期間など
    • 例)
      • BIツールで使う分析用データは半永久的に保存しておく
      • OSやkubernetes関係の統計データは2週間程度で捨てる
  • アプリごとにindexをわけておくのが良い
  • ログの種類ごとのものもindexをわけておくこともある
    • warnとerrorログは抽出して別indexにしておく、とか
  • indexがわかれても、統合して横断的に検索する方法はある
    • 横断的に検索したい対象のindexは、前方一致でHITするように名前の付け方を工夫する
      • e.g.
        • our-awesome-application-2019.07.22
        • our-special-application-2019.07.22
          • our-*とすれば、awesomeとspecialの両方のindexが検索対象になる

S3に保存した過去の生データを分析する必要が出てきたら?

  • 選択肢は3つ
    1. athena quicksightを使う
    2. S3をデータソースに使えるその他の可視化ツールを使う
    3. 分析しやすいDWHを用意してそこに突っ込む

生データを用途別に仕分ける方法

  • AWSならkinesisかlambdaが使えそう
    • リアルタイム性が必要な場合
      • fluentdからkinesisに流してそこから分岐させる
    • リアルタイム性が不要
      • S3にログをアップロードする。そのイベントを拾ってlambdaを発火して分岐させる