OSSの監視ツール『Graphite』を徹底解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/7953cae0-4040-b8dc-4a06-52e2dc995c4a.png)


オープンソースの監視ツールのGraphiteと聞いて、ご存知の方はどれくらいいらっしゃるでしょうか？

インフラの監視というものは、昨今において必要不可欠なものとなり、どの企業もどのように監視を行っていこうかと必ず悩むものだと思います。有名なOSSの監視ツールといえば、Prometheus、Zabbix、Grafanaなどといったものが有名でありますが、その他にもあなたが知らない監視ツールがいくつか存在しています。今回の記事では、その一つであるGraphiteについて、そのアーキテクチャや基礎知識を中心に、解説していきます。

#監視をするための必要項目

監視を行うにあたって、どのように監視していくにしても必要となってくるコンポーネントがあります。それが以下です。

- データ
- コレクター
- ストレージ
- 可視化ツール


データに関しては、ユーザーが監視したいデータということになりますので、特に気にする必要はありませんが、コレクター、ストレージ、可視化ツールについては、何かしらのツールを使用することになります。
例としては、コレクターはCollectD、可視化ツールはGrafanaということになり、Graphiteはこのコンポーネントの中の、ストレージにあたります（可視化という役割を担うことも出来る）。

#Graphiteとは

Graphiteのできることは、上記で述べたように２つになります。

1.時系列データ(time-series data)の保管
2.データのグラフ化

Graphiteは、拡張性の高いリアルタイムグラフ作成システムです。 ユーザーは、グラフ化したい時系列データをデータ収集用のアプリケーションを使用し、そのデータをGraphiteの処理バックエンドであるcarbonに送信します。このバックエンドは、データをGraphiteの専用データベースに保存します、データはgraphiteのWebインターフェイスを介して視覚化できます。

#Graphiteはどのように使用されるのか？

基本的にgraphiteを使用することが適しているのは、時間の経過と共に変化するデータの値をチェックしたい時ということになります。時間の経過とともに変化する可能性のある数値があり、時間の経過とともに値をグラフで表したい場合は、Graphiteがおそらくニーズを満たすことができます。

Graphiteは数値の時系列データを処理するように設計されています。 たとえば、Graphiteは、株価が時間とともに変化する数値であるため、株価のグラフ化に使用されたりもします。 数個のデータポイントであろうと、数千台のサーバーからの数十のパフォーマンスメトリックであろうと、Graphiteを使用することが出来ます。 ボーナスとして、あなたは必ずしもそれらのものの名前を前もって知っている必要はありません（誰がそのような巨大な構成を維持したいですか？）。 メトリック名、タイムスタンプ、および値を送信するだけで、残りはGraphiteが処理します。

#Graphiteのコンポーネント

Graphiteは以下の３つのコンポーネントを基盤として作られています。

1. Carbon
2. Whisper
3. Graphite-web

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/bc25c305-592b-a66f-0ff7-1282f78ca4d1.png)

###1. Carbon

Carbonは時系列データをリッスンするデーモンです。Carbonの中でも、いくつかの役割があり、

- **carbon-relay**: データをリッスンする
- **carbon aggregation**: データを他のCarbonにリレーする
- **carbon-cache**: データを集計する

というものに、分かれています。これらの機能を駆使して、時系列データ（メトリック）を次の段階のWhisperに渡します。

###2. Whisper

Whisperは時系列データを保存するためのシンプルなデータベースライブラリです。また、ここで、データを1秒間隔のデータポイントに変更することも出来ます。

###3. Graphite-web

Graphite-webpapは、ストレージに収集されたメトリックを視覚化するダッシュボードを含むWebUIを提供する役割を担っています。

これら３つからGraphiteが構成されています。

#コレクター

コレクターに関しては、Graphiteと相性の良いツールはいくつかあります。[こちら](https://graphite.readthedocs.io/en/latest/tools.html?highlight=CollectD)を参照してください。

今回の記事では、コレクターとして CollectDを推奨します。
CollectDはシステムパフォーマンス統計を定期的に収集し、RRDを含むさまざまな方法で値を格納するメカニズムを提供するデーモンです。 収集したメトリックをGraphiteのCarbonに送信することが出来ます。

#可視化ツール　

先ほど、Graphiteにもデータをグラフ化する可視化機能があると言いました。ただ、このGraphiteはあまり、美しくなく操作性が欠けることから、あまりお勧めできません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/9c0efdbb-99a9-4fa5-83a9-26f845bb2aee.png)


そこで、可視化ツールもGrafanaと組み合わせることを強くお勧めします。Grafanaは、柔軟で強力なオープンソースのダッシュボードソフトウェアであり、Grafanaプラグインを介して、Graphite以外のさまざまなデータソースからのメトリックのクエリもサポートしています。 Grafanaを使用することで、カスタマイズ可能な美しいグラフを手に入れることができますので、多くのユーザーにGraphite＋Grafanaのコンビネーションが支持されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/586acf13-3bdf-f5e9-5d9a-d5e33bae5c14.png)

#まとめ

Graphiteという洗練されたオープンソースの監視ツールについて解説してみました。興味のある方は、是非[Graphiteをダウンロード](https://qiita.com/MetricFire/items/3ba5d2e89dacec0a6ad9)して、実際に使ってみてはいかがでしょうか？

Graphiteの基本概念について、もっと詳しく知りたい方は、[【Graphiteによる監視の基本】アーキテクチャとその概念](https://qiita.com/MetricFire/items/4925de84200e41a07ab5)もチェックしてみてください。

また、上記のセットアップを自分で行うのが大変であると思う方は、上記のセットアップが完了しサービスとして[MetricFire](https://www.metricfire.com/japan/?GAID=2038175526.1567400116&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Graphite)が提供しているHosted Graphiteをチェックしてみてください。セットアップやメンテナンスなどの無駄な時間を割く事なく、すぐにgraphiteとGrafanaの使用を開始できます。興味のある方は、是非こちらの[デモを予約](https://www.metricfire.com/demo-japan/?GAID=2038175526.1567400116&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Graphite)して、詳細を確認してみてください。