ようへいの日々精進XP

よかろうもん

Graphite と Grafana を 1 時間位使ってみたメモ

竹富島からこんばんわ。かっぱです。

はじめに

  • GraphiteGrafana を 1 時間位使ってみた
  • どちらともセットアップは簡単(但し、Dockerfile 作るのは苦労した)

参考


環境

  • GraphiteこちらDockerfile を使った
  • Grafana は上記の Dockerfile で構築したコンテナに手動で構築した

Graphite だけなら

以下のような手順で利用可能。

git clone https://github.com/inokappa/dockerfiles.git
cd dockerfiles/graphite
docker build -t your_name/repo_name
docker run -t -d your_name/repo_name

Graphite + Grafana は...

Dockerfile で表現しようとすると色々と面倒なので上記の Graphite コンテナ上に手動で構築した。以下、サクッと手順。(上記の DockerfileGraphite を利用出来る状態からの手順...)

まずは上記の docker コンテナを以下のようにして起動。

docker run -t -i -p 1919:1919 your_name/repo_name /bin/bash

次に tarball をダウンロードして展開。

wget http://grafanarel.s3.amazonaws.com/grafana-1.5.4.tar.gz
tar zxvf grafana-1.5.4.tar.gz

展開したファイルを DocumentRoot 以下に置く。

cp -rfp grafana-1.5.4 /var/www/html/grafana

config.js を下記のように設定、修正する。

--- grafana-1.5.4/config.sample.js      2014-05-13 13:09:27.000000000 -0400
+++ grafana/config.js   2014-05-28 09:07:15.965941347 -0400
@@ -13,7 +13,7 @@
      * elasticsearch url:
      * For Basic authentication use: http://username:password@domain.com:9200
      */
-    elasticsearch: "http://"+window.location.hostname+":9200",
+    //elasticsearch: "http://"+window.location.hostname+":9200",

     /**
      * graphite-web url:
@@ -22,7 +22,7 @@
      * in nginx or apache for cross origin domain sharing to work (CORS).
      * Check install documentation on github
      */
-    graphiteUrl: "http://"+window.location.hostname+":8080",
+    graphiteUrl: "http://172.17.0.2",

     /**
      * Multiple graphite servers? Comment out graphiteUrl and replace with something like this:

上記のように graphiteUrl: のみを設定する。今回 Graphite172.17.0.2 という IP でアクセスしているので graphiteUrl: にも "http://172.17.0.2" を設定する。

また、今回は GraphiteGrafana を同じ Apache で別のポートで動作させたいので以下のようにそれぞれ設定、修正する。

ポイントとしては graphite-web.conf の冒頭に記載されている CORS 対策の以下の記述。

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, OPTIONS"
Header set Access-Control-Allow-Headers "origin, authorization, accept"

CORS の詳細についてはこちらあたりが詳細に書かれている。

monit で全てのサービスを起動する

これで準備完了なので以下のように monit を起動することで関連するサービスが全て起動する。

/etc/init.d/monit start

以下のように起動しているプロセス等が確認出来る。

f:id:inokara:20140528223728p:plain


Graphite と Grafana

関連するプロセスが起動して暫くすると...

Graphite

f:id:inokara:20140528224432p:plain

左ペインから cpuUsage を選択した画面。尚、Graphite > carbon > aggregater 以下のツリーは別の Docker コンテナの情報。carbonaggregater を設定することで他のホストの情報もグラフに表示することが出来る(ようだ)。


Grafana

f:id:inokara:20140528224938p:plain

Graphite に蓄積されているメトリクスから cpuUsagememUsage を表示してみた。設定も簡単で以下のように Graphite の設定が適切であれば自動的に Graphite に蓄積されているメトリクスがプルダウンに表示されて選択するだけで簡単にグラフに落としこむことが出来る。

f:id:inokara:20140528225609p:plain

簡単なのは素晴らしい。


ということで

  • GraphiteGrafana1 時間位使ってみた
  • Sensu では Graphite が標準っぽい状況なのでも少し掘り下げてみたい
  • GrafanaKibana っぽいカッコよさを残しつつ Graphite と連携して簡単にメトリクスを可視化出来るツールでお気に入り!