Graphiteとは、2008年にリリースされたオープンソースの時系列系データの監視プラットフォームです。このツールを使えば、時系列データを取得して、そのメトリクスを収集し、記録して視覚化出来るため、インフラ監視のためによく使われています。
MetricFireでは、ただのGraphiteを進化させたHosted Graphiteを提供しています。普通のGraphiteのサービス開始当初は画期的なサービスであったにもかかわらず、モニタリングのニーズの変化に常に追いついていませんでした。そこで、Hosted Graphiteは、現在のエンジニアが直面している現実の状況に対応するために一から構築されました。それ以来、MetricFireのSREチームはこれらの変化に対応するために拡張と改善を続けてきました。
ここでは、普通のGraphiteでは苦戦しているところ、Hosted Graphiteがそれを改善している点をいくつかご紹介したいと思います。
#StatsDの代わりにData Viewsを使用する
Graphiteの入門書のほとんどが、アプリケーションのメトリクスを送信するためにStatsDを使用するように説明しています。StatsDは事前集計サービスであり、普通のGraphiteの制限により必要になってきます。具体的にはGraphiteのWhisperデータベースはタイムスタンプごとに1つのデータポイントしか受け付けることができません。StatsDは、10秒ごとにデータポイントを収集し、受信した値から新しいメトリクスを作成することでこれに対処します。
これは、複雑さと潜在的な失敗のポイントを追加することになりました。また、複数のStatsDサーバーを運用している場合、各メトリックのデータポイントがすべて同じインスタンスに送信されることを確認する必要があり、基本的なStatsDサーバーにはマルチスレッド機能がないため、負荷がかかる可能性があるため、スケーリングの妨げにもなります。
Hosted GraphiteはData Viewsを使用して自動的にデータポイントの集計を行います。Data Viewsは新しいユーザーがすぐに始められるようにし、アプリケーションの監視に加えてStatsDを扱う手間を省くことができます。Hosted Graphiteが受け取る全てのメトリックは9つ以上の異なるデータビューとして保存され、いつでもビューを切り替えることができます。必要なのは、メトリックのサフィックスを変更するだけです。
#容易なスケーリングのためのネイティブクラスター
Hosted GraphiteがGraphiteのWhisperストレージを上回るもう一つの利点は、クラスターベースであるためスケーリングが容易で、毎分何百万ものデータポイントを取り込むことができることです。
Whisperは各メトリクスの解像度ごとに1つのファイルを使用しているため、準備なしで新しいメトリクスを作成することができます - これはGraphiteが開発当初に導入した大きな進歩でした。残念なことに、現代のクラウドやコンテナベースのサービスの監視では、メトリクスは高頻度で頻度が低い傾向にあります。Whisperのファイルベースモデルは、このような負荷がかかると苦戦します。
一方、Hosted Graphiteは大規模なクラスターベースの非リレーショナルデータベースを中心に構築されており、Whisperの全ファイルシステムとは異なり、受信したデータポイントのみを保存します。データポイントは必要なときにのみ保存・取得され、読み込みよりも書き込みが優先されます。
#9つのビュー、9倍の価値
この全体のセットアップの利点の1つは、メトリックの制限が最初に表示されるよりも多くの値を与えてくれることです。標準の Graphite では、タイマーメトリクスの平均、最小、最大、95パーセンタイルの4種類を見たい場合、4つのStatsDメトリクスを保存する必要があります。しかし、Hosted Graphiteでは、これらのすべてのビューを自動的に利用することができます。Hosted Graphiteでは、標準のGraphiteの4つのメトリックではなく、1つのメトリックで同じ情報を見ることができ、パーセンタイル値をその場で選択することができます。
Hosted Graphite を使用すると、StatsDを必要とせずに直接メトリクスを送信できるシンプルさ、クラスタベースのモデルの信頼性とスピード、そして、受信したメトリクスごとに 9 つのメトリクスに相当するメトリクスを保存することで、ユーザーはより多くの利益を得ることができるのです。