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は単純なクラスター構成を組むことができます。 負荷分散目的のクラスターと、冗長化目的のレプリケーションという種類があります。
...ここまで書いてめんどくさくなったので、詳細はそのうち書きます。