Cactiを捨ててGraphiteを使うべき理由

導入がひと通り完了したので、Graphiteについて情報を出していくよ。 最初は、Graphiteって一体なんなのか、についてまとめる。

Graphiteって

Graphiteってのは、一言で表すと「収集した情報をグラフにするソフトウェア郡」のことだ。 Graphiteは下記のソフトウェアから構成される。

1. graphite-web
2. carbon

graphite-web

graphite-webとは、実際にグラフを表示する部分だ。 正直、UIの出来はあまり良くない。 こいつの一番の売りは、APIを利用してグラフの見た目をカスタマイズしたり、統計処理をかけられるところにある。 下記に、APIをまとめたページが有る。英語であるが、何となくわかると思う。

このAPIを利用すれば、要件にあったグラフを作ることが簡単にできる。 また、画像としてデータを取り出すだけでなく、json、csv等といった形式でも取り出せるので、javascriptに食わせて かっこいいグラフを書くなんてこともできる。

まぁ、バグも多いけど。 インストールはこのブログの前の記事を見れば問題無いと思う。

carbon

graphiteはrrdを使用しない。 代わりに独自のwhisperと呼ばれる形式でMetricsを集積する。 rrdと比べた際のwhisperのメリットは主に下記の3つ。

  • RRDは最新の更新の前にタイムスロットをアップデートすることができない
  • RRDはイレギュラーなアップデートが出来るように設計されていない
  • 遅滞なく更新が書き込まれる

パフォーマンス

carbonは割りと大量のMetricsを処理することができて、僕は30000を超えるMetricsを30秒から300秒間隔でためているけど、 今のところ問題はない。

Carbonができないこと

ところで、carbonはMetricsを受けるだけで、送信することはできない。 carbonにMetricsを集めさせたければ、対応したMetrics収集ソフトウェアを利用するか、自前で実装するしかない。 だけど、対応している収集ソフトウェアはいろいろあるので、心配しなくて大丈夫。 自分で実装するにしても、パケットフォーマットは単純だし、そこをカバーしてくれるソフトウェアもある。

僕は自前で実装することはせずに

- collectd

というソフトウェアを利用した。 自前で実装するなら、statdと呼ばれるソフトウェアを利用したと思う。

graphiteって何が良いのさ

周辺ソフトウェアの充実に尽きると思う。 graphiteとその周辺のソフトウェアを活用すれば、色々できる。 そして、それなりに動く。

今、僕はGraphiteをCPUの利用率とかそういったMetricsの収集に使っているんだけれども、この分野で、 それなりに動いて、カスタマイズもいっぱい出来て、ていうのを探しているのなら、Graphiteは選択肢に入れても良いと思う。

日本語の情報は殆ど無いけど…。