BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Atlas: Netflixの代表的なテレメトリプラットフォーム

Atlas: Netflixの代表的なテレメトリプラットフォーム

原文(投稿日:2015/01/31)へのリンク

NetflixがAtlasをオープンソース公開した。同社が2012年初めから開発を続けてきた,次世代監視プラットフォームの一部分にあたる。同社がAtlasを開発したのは,時系列データを保存することで,運用状況をほぼリアルタイムに把握可能にするためだ。インメモリのデータストレージを備えることにより,非常に大量の測定情報を収集,保存し,レポートすることができる。その規模についてはRoy Rapoport氏が,“Atlasでは日常的に,毎秒数十億のデータポイントのフェッチとグラフ化を行っています。” と述べている。

Atlasは,同社のそれまでのソリューションであった,Epicと呼ばれる内製ツールと市販製品との組み合わせに代えて,同社の生成するデータの増え続けるボリュームに対処するために開発された。2011年の時点でNetflixは,同社のストリーミングサービスに関連して200万件の計測情報を監視していたが,2014年にはそれが12億件にまで跳ね上がっている。

Atlasの設計に際して開発チームが重視したのは,その目標 – 運用全般の状況把握を行うこと – に対して,適切なトレードオフを行うことだった。彼らのいう運用状況の把握とは,動作記録的なものに限らず,今現在何が起こっているかを判断できるということだ。これが最終的に,運用データに関する次のようなルールにまとめられた。

  • データが古くなると,その価値は指数級数的に低下する。
  • データ損失の防止よりもサービス復旧を優先せよ。
  • 徐々に機能を低下するように努めよ。

実行速度を確保するために,データの大部分をメモリ上に保持することにした。さまざまなバックエンドを試した結果,最終的に,JVMヒープ内または外部のメモリ上に大部分のデータを置いて参照可能にする方法を選択したのだ。この結論はパフォーマンス的には優秀であるものの,運用面では高価なシステムになる。しかし彼らは,この点を緩和するための工夫も凝らしている。最初は,複製するデータ数を抑制することだ。同社ではデータのレプリカを,クエリのパフォーマンス向上ではなく,主として冗長性のためのみに使用している。永続的に保存されるような古いデータは,単一のレプリカのみで運用する。これによって50%以上のコストを削減している。第2の戦略は自動ロールアップに関するものだ。これは,古くてそれほど重要でない計測情報の余剰なデータを削除するもので,6時間以上経過したものを対象に,ノードディメンジョンなどを削除してストレージスペースを節約する。

自動ロールアップが重要である理由を示す例として,次元を持った計測情報がサイズ的爆発を起こす理由を,Royの示す次の例から考えることができる。

過去3時間にサービスに届いた1秒あたりの要求数を示す,簡単なグラフを考えてみましょう。最終的な出力の最小単位を180データポイントとしておきます。通常のサービスでは,要求数を示すノード毎にひとつの時系列を取得しますから,もしノードが100台あれば,中間的な処理結果は約18,000データポイントということになります。ひとつのサービスに対して,ユーザがデバイス(~1000)や国(~50)で要求をブレークダウンしようとすれば,ノードあたりの時系列数は50,000に到達します。ここで同じく100ノードを仮定すれば,同じ3時間のラインが約9億データポイントに達するのです。

Atlasは,Netflixがオープンソース化の意向を示している数多くの製品中,最初の部分であるに過ぎない。その他のものとしては,

  • ユーザインターフェース
    • データの閲覧とクエリ構築のためのメインUI
    • ダッシュボード
    • アラート
  • プラットフォーム
    • ストレージ層の手前で実行される,通知データのインライン集約
    • オフヒープメモリとLuceneを使用したストレージオプション
    • パーセンタイルを行うバックエンド
    • 公開と永続化を行うアプリケーション
    • ロールアップと分析を行うEMR処理
    • SNMPポーリング,ヘルスチェックなど
  • クライアント
    • ServoとAtlasの統合サポート
    • ローカルロールアップとアラート
  • リアルタイム分析
    • 計測情報のボリュームレポート
    • 自動カナリア分析
    • 外れ値と異常値の検出
    • 外れ値の特性に基づいたサーバの自動選択

より詳細な情報については,こちらのWikiを参照してほしい。

この記事に星をつける

おすすめ度
スタイル

BT