Graphiteを利用して構築したMetrics収集システムについて

Graphiteを利用した監視システム

  • Graphiteシステムについて
  • GraphiteへのMetricsの送信
  • Graphiteのクラスターについて
    • Graphiteの冗長性の担保
    • Graphiteのスケーラビリティ

前回のブログで、だいぶ前になっちゃったけど、CactiをやめてGraphiteを使おうよ、と書きました。 今回は、僕の会社で、実際にCactiからGraphiteへ移行するプロジェクトを進めてみての知見についてまとめます。 ちな、現在進行形で置き換えを頑張ってます、手が遅いので…

Graphiteシステムについて

前にも書いたと思いますが、Graphiteとは単一のApplicationではありません。 幾つかのApplicationが組み合わさって構成されるシステムです。 下記のソフトウェアを組み合わせて使います。

  • graphite-web

    • Grapheを作るところ
  • carbon-cache

    • Metricsを受信し、whisperと呼ばれるRRDと似た仕組みでtime serise dataを格納する
  • carbon-relay

    • 受信したMetricsを特定のルールに従って、carbon-cacheへ分配する
  • carbon-aggregator

    • Metricsに対して処理を行う

これらを適当に組み合わせて、Metricsを収集し、グラフ化するシステムを構築していきます。 最低限、

- graphite-web
- carbon-cache

は必要ですね。

GraphiteへのMetricsの送信

前述したシステムには、Metricsを送信するApplicationがありませんでした。 Cactiのようなシステムを作成するには、サーバーの情報を取得し、carbon-cacheへ送信する仕組みがなければなりません。

このような、ApplicationはGraphiteシステムには存在していません。 Graphite(carbon-cache)に対応している、任意のApplicationを用います。 私は「collectd」というApplicationを使用しています。

collectd

ここで、Graphiteシステムからは外れますが、「collectd」について紹介しておきましょう。 collectdはC言語で実装された、軽量な、Metrics収集、送信システムです。 Pluginにより、様々な拡張が可能であり、自由度も高いです。

私は、collectdにcarbon-cacheへMetricsを送信するPluginを組み込んで使用しています。

Graphiteのクラスターについて

Graphiteは単純なクラスター構成を組むことができます。 負荷分散目的のクラスターと、冗長化目的のレプリケーションという種類があります。

...ここまで書いてめんどくさくなったので、詳細はそのうち書きます。