Grafana2でダッシュボード作成


以前、[Grafanaを使ってGraphiteのデータを表示するダッシュボードを作る](http://www.ryuzee.com/contents/blog/6944)という記事を書きましたが、2015年4月20日に、Grafana2がリリースされたので、改めて導入手順や変更点について紹介します。

## Grafana2系での変更点

* Grafana1系では、実体としては全てクライアントサイドからElasticSearchやその他のデータストアにアクセスしてデータを表示していましたが、Grafana2.x系ではバックエンド側でもアプリケーションを動かすように変更になっている(これによってCORS問題から解放される)
* 新たにログイン機能や、Viewer/Editor/Adminの権限が出来た。これによって単にダッシュボードを見るだけの人も定義可能になっている
* ダッシュボードのスナップショットを共有可能になった。すなわちURLを発行してそれを人に渡せば同じダッシュボードが見えるということ
* パネル単位で、時間軸を指定できるようになった。以前はダッシュボード単位での指定だったが、これによって同じメトリクスを時間軸の長さを変えて配置したりもできる
* その他の詳細は[公式サイト](http://docs.grafana.org/guides/whats-new-in-v2/)を参照すると良い

## インストール

Grafana1系では自分でアプリケーションをチェックアウトしてNodejsのセットアップなどをする必要があったが、Grafana2からはインストーラーが提供されているので非常に簡単にインストールできるようになっている。

ここではAWS上のAmazon Linux環境にインストールします。

### 依存関係のあるモジュールのインストール

Grafana2はfontconfigに依存しているので、まずパッケージをインストールします。

```
yum install -y fontconfig
```

### 本体のインストールとサービスの有効化

```
wget https://grafanarel.s3.amazonaws.com/builds/grafana-2.0.2-1.x86_64.rpm
rpm -Uvh 
/sbin/chkconfig --level 2345 grafana-server on
sudo service grafana-server restart
```

これでとりあえずインストールとサービスの有効化は終わったので、`http://このサーバ:3000/`にアクセスすれば画面は表示されるはずです(AWSを利用している場合はこのインスタンスのセキュリティグループの設定で3000が許可されている必要があります)。

![Grafana2_01.png](https://qiita-image-store.s3.amazonaws.com/0/43246/359b45f5-07fd-edc4-657b-03904d41dab3.png "Grafana2_01.png")


admin / admin でログイン。その後管理画面でパスワードを変更します。


![Grafana2_02.png](https://qiita-image-store.s3.amazonaws.com/0/43246/5e0a51c7-e256-dc41-e075-dd8bf73a3028.png "Grafana2_02.png")

### ポート番号の変更

3000番ポートで受けるのも冴えないので、80番ポートで受けるように変更しましょう。
簡単なのはiptablesを使って以下のようにします。

```
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
```

なお、iptablesを弄くるときは、後で悲しい目にあわないように22番ポートにアクセスできることを確認しておいてくださいw。以下のようにすれば明示的にポリシーが追加されます。

```
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
```


終わったら以下のようにして設定を書き出して終わりです。

```
/etc/init.d/iptables save
```

## あとは使ってみる

### データソースの追加

メニューから`Data sources`を選択し、`Add New`をクリックして新しいデータソースを追加します。以下の例では既存のGraphiteを指定しています。Graphiteの他にElasticSearchやInfluxDB、OpenTSDBなどをデータソースとして使うことができます。
InfluxDBってなんぞという方は、[こちらの資料が神](http://www.slideshare.net/sonots/influxdb-study-20140627)だと思いますのでどうぞ。

![Grafana2_03.png](https://qiita-image-store.s3.amazonaws.com/0/43246/4d57c5a0-f47b-b811-d925-01d303108b4d.png "Grafana2_03.png")

あとはどんどんダッシュボードを作ります。Homeの横の▼をクリックすると以下のような画面が表示されるので`+New`を選択します。

![Grafana2_04.png](https://qiita-image-store.s3.amazonaws.com/0/43246/c24e5ea9-5255-7fbd-50eb-54d74824fc08.png "Grafana2_04.png")

あとは、データソースを選びながら自分でチャートを作っていけばOK。

![Grafana2_041.png](https://qiita-image-store.s3.amazonaws.com/0/43246/e4b1e1ff-e364-881f-53ec-2566eb0f310d.png "Grafana2_041.png")

## 出来上がりイメージ

できあがりのイメージはこんな感じになります。

AWSの月額利用金額をグラフにしたもの

![Grafana2_05.png](https://qiita-image-store.s3.amazonaws.com/0/43246/fb63d2b5-862c-1927-1730-165c92311bec.png "Grafana2_05.png")

Chef Serverのメトリクスだけを表示したもの

![Grafana2_042.png](https://qiita-image-store.s3.amazonaws.com/0/43246/20df4806-5009-f078-41e5-a197f3c05460.png "Grafana2_042.png")

なお、新機能のスナップショット共有機能で発行したURLを参考までに貼っておきます。いつアクセスできなくなるかは分かりませんが。。

[http://grafana.meguro.ryuzee.com/dashboard/snapshot/4pcf5Bh7XZfoVQfaU0EvDApyCZRv8qb7](http://grafana.meguro.ryuzee.com/dashboard/snapshot/4pcf5Bh7XZfoVQfaU0EvDApyCZRv8qb7)