【re:Invent2017レポート】ExpediaにおけるAmazonElasticsearchServiceを用いたログ解析

Nov 28, 2017   #aws  #reinvent2017  #elasticsearch 

はじめに

こんにちはえのかわです。下記のセッションレポートです。
ABD331 - Log Analytics at Expedia Using Amazon Elasticsearch Service

Amazon Elasticsearch Service について

まず AWS の Principal Product Manager である Carl Meadows 氏から簡単に Elasticsearch と Amazon Elasticsearch Service(以下ES)についての説明がありました。

現在、機械的に生成されたデータは多い

  • 手動による IT から DevOps への移行
  • IoT デバイス
  • クラウドベースのアーキテクチャ

Elasticsearch のベネフィット

  • オープンソース
  • 素早い価値創出

ELK Stack とは下記の 3 つをまとめたもの

  • Elasticsearch
  • Logstash
  • Kibana

Elasticsearch のユースケース

  • アプリケーションモニタリング と Root-cause Analysis(根本原因解析)
  • Security Information and Event Management(SIEM)
  • IoT & モバイル
  • ビジネス & クリックストリーム分析

ES について

  • マネージド Elasticsearch + Kibana
  • ベネフィット
    • オープンソース
    • 簡単
    • スケーラブル
    • セキュア
    • 高可用性
    • 他 AWS サービスとの連携

事例

  • Adobe
  • Netflix など

Expedia における ES のユースケース

Expedia の Kuldeep Chowhan(@this_is_kuldeep) 氏から Expedia のユースケースについて発表がありました。

使用量

  • 150 以上の ES クラスタ
  • 450 台以上の EC2
  • 300 万以上の ドキュメント
  • 30TB 以上のデータ

なぜ ES を選んだか

  • セットアップが容易
  • 高可用性
  • セキュア
  • ディスクの拡張/タイプ変更が可能
  • CloudWatch でのモニタリング & バックアップの作成が容易

ログ解析のアーキテクチャ

  • Docker startup logs to Elasticsearch Docker の起動ログ解析
    • ECS(agent / log driver) -> Docker(log_driver) -> fluentd -> ES <- Kibana
  • AWS CloudTrail のログ解析
  • CI/CD プラットフォームの KPI 解析
    • ruby app / node.js app -> SNS -> Lambda -> ES <- node.js app
  • 分散トレーシングのプラットフォーム解析
    • Microservices -> java library -> Kinesis <- java app -> kafka <- java app -> ES <- nodejs app

まとめ

  • ES Cluster がスケールすると同時にデータも同期される
  • クラスタの監視と最適化が可能
  • Elasticsearch のバージョンアップグレードができない
    • 手動での移行が必要
  • ディスクをどれだけ利用しているかがメトリクスから読み取りづらい
  • ベネフィット
    • セットアップが容易
    • 高可用性
    • セキュア
    • モニタリング&バックアップ可能

おわりに

実は僕はまだ Elasticsearch や ES を使ったことがないので何とも言えないのですが、単にログを可視化するだけではなくそのログからどのような問題を見出す&解決するかが重要だと感じました。当たり前かもですが。とりあえず触ってみます。あとクラスメソッドさんの記事も出てました。勉強になります。