ようへいの日々精進XP

よかろうもん

私的な Graphite の Render API ちょっとだけチュートリアル

1500 万人の Graphite ファンの皆さん、おはようございます。かっぱです。

はじめに

  • Graphite には Render API というグラフを描画する為の API が備わっている
  • ドキュメントを元にして個人的に気になった機能をピックアップしてみたいと思う

ドキュメント


基本的なこと

/render へアクセスすることから始める

The graphite webapp provides a /render endpoint for generating graphs and retreiving raw data. This endpoint accepts various arguments via query string parameters. These parameters are separated by an ampersand (&) and are supplied in the format:

上記のように Graphite ホストの /render というエンドポイント対してアクセスするとグラフやグラフの元になるデータを生成してくれる。このエンドポイントに以下のような & で括られたパラメータを渡せる。

&name=value

尚、素の http://GRAPHITE_HOST:GRAPHITE_PORT/render にブラウザでアクセスすると以下のような表示となる。

f:id:inokara:20140602062016p:plain

いとさみし。

for example

せっかくなのでエンドポイントを叩きながら例。

http://172.17.0.2/render?target=carbon.agents.17ad4c40d35a-a.cpuUsage&from=-1hours&lineMode=connected&height=400&width=600

にアクセスすると...

f:id:inokara:20140602063705p:plain

target には carbon によって収集されたメトリクス carbon.agents.17ad4c40d35a-a.cpuUsage を指定して from で「過去一時間分」のデータを指定、さらに lineMode では connected を指定、そして縦 400 ピクセル、横 600 ピクセルのグラフが生成されている。尚、デフォルトでは png 形式の画像が表示される。

http://172.17.0.2/render?target=carbon.agents.17ad4c40d35a-a.*&from=-1hours&lineMode=connected&height=400&width=600

にアクセスすると...

f:id:inokara:20140602064016p:plain

target には上記と同じく carbon で収集したメトリクス carbon.agents.17ad4c40d35a-a.* を指定する。末尾の * を指定するとその名の通り、全てのメトリクスが対象となる。


少し突っ込んで

Graphing Metrics

ドキュメント的にはこちら。キモになるのが以下のパラメータ。

target

target の指定の方法については Graphite のドットで区切られたパスを指定することになるが、パス内で * の指定も可能。以下、例。

carbon.agents.17ad4c40d35a-a.cpuUsage
carbon.agents.17ad4c40d35a-a.*

また、* 以外にも簡単なパターンマッチでの指定や target=xxxx&target=yyyyy のように target を複数指定することも可能。更にこちらのように標準で用意された関数でパスを囲んで target として指定することで計算させたり、ひと手間加えた結果をグラフで表示することも可能となる。以下、例。

http://172.17.0.2/render?target=averageSeries(*.file.buffer_total_queued_size)&from=-24hours&lineMode=connected&format=png&height=400&width=600

子供のお絵かきみたいで恐縮だが...

f:id:inokara:20140602065937p:plain

複数ホストの td-agent で動いている monitor_agent から収集したメトリクスの中で、プラグインタイプ filebuffer_total_queued_size の平均値をグラフで表示した。


最後に

  • Render APIは手軽に HTTP から呼べるので色々と応用出来そうな気がする
  • ちなみにこれのメトリクスグラフは Render API を呼んでいる