2018年9月25日 ユーザストーリー

Beatsで1日に数ペタバイトのログを監視するeBay

著者 Renuka Gough

1日に1.2ペタバイトのログと、毎秒500万のメトリックデータポイントが発生するeBayは、トラッキングするデータにはこと欠きません。このEコマース企業のロギングおよび監視チームは、毎日こうしたログとメトリックをすべて収集し可視化するという途方もないタスクに向き合っています。また多くの企業と同じく、HadoopやMySQLなどの色々なアプリケーションを使用し、チームを超えてさまざまなユースケースをバックアップしています。

コンテナが用意されアプリケーションをデプロイする新しい方法が提供されると、チームはDockerでコンテナ化の作業を始めてKubernetesによりデプロイし、Kubernetesをライフサイクル管理に利用します。しかしながら、チームにとって最も大きな課題の一つはアプリと環境が常に進化しており、しかも正確に把握し続けるのが困難だということでした。Beatsの出番です。DockerとKubernetesからログとメトリックを収集しシッピングするために迷わず選ばれたのが、FilebeatとMetricbeatの2つでした。

また、ワークロードが発生するときにそれを把握したいという要求もありました。自動探知機能がBeats (6.2の新機能) に現れる前、eBayは自前でCollectbeatを開発しました。libbeat上に開発されたeBayのBeatはKubernetesクラスターに新しいポッドを発見すると、CollectbeatはKunernetes APIを使用してワークロードを把握し、収集してデータをそろえてから内部監視システムに送信します。このシステムはSherlock.ioといい、フレキシブルな作りで新テクノロジーにうまく適応可能です。

データ収集の段階が解決しても、分析と可視化の部分にはまだ取り組みの必要が残されていました。すべてのデータを収集しても、eBay側のユーザーが使い慣れたラベルで分析できなければ意味がありません。次に当然来るステップは、データが送信される前にメタデータでタグ付けする方法を見出すことでした。そこでeBayのVijay Samuel氏率いるチームは、ログメッセージとメトリックのペイロードを採取して名前やポッドスペースのようなメタデータを付与する「add_kubernetes_metadata」というプロセッサを構築しました。現在GitHubで利用可能なこのプロセッサは、コミュニティドリブンなオープンソースプロジェクトが非常に強力である理由を示す好例です。

もちろん、eBayはまだ進化を続けています。新しいテクノロジーの採用とともに、さらに多くのアプリケーション、ログ、メトリックが生まれているからです。実際、ロギングの増加率は年率50%です。 では、増え続けるデータ量には限られたリソースでどのように対応しているのでしょうか。一つの方策が、階層ベースの割当とリテンション制限を作ることによってホスト/プールレベルでのアプリケーション測定を行うことです。また、特定のタイプのデータの優先度を高くする方法もあります。イベントを最優先とし、見た目で感じられる稼働状況を示すメトリックが第2優先、その次がログです。適切な優先付けを確保するために、イベントスケジューラーを追加してautodiscoverを有効にして設定に重み付けをしています。

eBayチームのツールや戦略にさらに興味をお持ちになったら、Elastic{ON} 2018Vijay氏のプレゼンテーションでSherlock.ioの詳細をご覧ください。Beatsを使ってKubernetesクラスターの全データを監視する方法をご紹介しています。KubernetesとDockerにおけるElastic Stackの利用について詳しくお知りになりたい方は、ウェビナーElastic Stack:Monitoring Kubernetes Applications with Beatsをご覧ください。

monitoring ebay kubernetes beats.png