RRDtool x Grafana で可視化する


Click [here](http://qiita.com/atfujiwara/items/58cda0dbe44b1e03ac7f) for English version

既存のRRDtool のデータを利用して、Grafana で(比較的？)手軽に可視化する方法です。
以下3つを組み合わせて使用します。手順の説明は CentOS の利用を想定しています。

# RRDtool

RRDtool は、画像を出力する使い方が一般的かと思いますが、JSON でのデータ出力にも対応(ver1.4.6以降)しています。
今回はもう少し新しめのver1.5.6を使用します。

# Grafana

数多くの時系列データベース(Graphite, OpenTSDB, Influxdb etc.)をサポートしていますが、プラグインを導入することで、その幅をさらに広げることができます。
その中の一つに [SimpleJSON](https://grafana.com/plugins/grafana-simple-json-datasource) というものがあり、指定した URL から JSON 形式のデータを取得し、グラフ化することができます。

# Grafana RRD Server

https://github.com/doublemarket/grafana-rrd-server

Go で書かれたシンプルな HTTP サーバですが、上記の SimpleJSON プラグインからのリクエストを受け取り、RRD ファイルからデータを読み込んで応答を返します。

以下、具体的な手順を説明します。

# RRDtool(MRTG)環境の構築

すでに手順を説明する記事が豊富にあると思われるので、ここでは詳細な説明は省きます。
最終的に、RRD ファイルにデータが保存されるようになっていれば OK です。

## net-snmp のインストール

```
yum install net-snmp net-snmp-utils
```

設定方法はこちらを参考に

https://www.ipentec.com/document/document.aspx?page=linux-configuration-net-snmp-snmpd

## rrdtool のインストール
パッケージをインストールすることもできますが、バージョンが古いと JSON に対応していないため、下記よりソースをダウンロード、コンパイルして入れてやります。

http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.5.6.tar.gz

具体的なインストール手順は下記が参考になります(ファイル名やバージョンの部分だけ読み替えてください)。

https://www.cyberciti.biz/faq/howto-install-rrdtool-on-rhel-linux/
http://linux.rakunet.jp/linux/rrdtool/rrdtool.html

## MRTG のインストール

MRTGのインストール手順
http://easyramble.com/install-and-setup-mrtg.html

MRTGとRRDtoolの連携
http://www.mrtg.jp/doc/mrtg-rrd.html

また、上記でも説明されていますが、RRD ファイルから画像を表示するための CGI も必要になります。

14all.cgi
http://my14all.sourceforge.net/

ここまでで、http://(ホスト名)/mrtgにアクセスすることで、おなじみの MRTG の画面が表示されるようになるとおもいます。

![mrtg.png](https://qiita-image-store.s3.amazonaws.com/0/140282/87a220aa-eebf-0d9c-c3d1-31436232d01c.png)


# Grafana RRD server のインストール

ここでも RRDtool が必要となりますが、上記で構築したMRTGの環境にインストールする場合は、すでにインストール済みのためそのままで OK です。
すでにある RRD ファイルを使う場合は、Grafana RRD server を動かすために、JSON 出力に対応した RRDtool が必要となるため、バージョンを確認し、1.4.6以下であれば、より新しいバージョンのものを入れる必要があります。（インストールすることで既存の環境を壊さないよう注意）

何もオプションを付けずに実行するとバージョンを確認できます。

```
$ rrdtool
RRDtool 1.5.6  Copyright by Tobias Oetiker <tobi@oetiker.ch>
               Compiled Jul 12 2017 04:55:38

Usage: rrdtool [options] command command_options
Valid commands: create, update, updatev, graph, graphv,  dump, restore,
		last, lastupdate, first, info, fetch, tune
		resize, xport, flushcached

RRDtool is distributed under the Terms of the GNU General
Public License Version 2. (www.gnu.org/copyleft/gpl.html)

For more information read the RRD manpages
```

続いて Go をインストールします。手順は公式のドキュメントを参照するのが良いかと思います。

http://golang-jp.org/doc/install

最後に Grafana RRD server をインストールします。
手元の環境では、GOPATH に加えて、下記の環境変数も設定が必要でした。

```
export PKG_CONFIG_PATH=/opt/rrdtool-1.5.6/lib/pkgconfig/
export GOPATH=$HOME/go
```

また、下記の Symbolic link も必要でした。

```
cd /opt/rrdtool/lib/
ln -s librrd.so.4.3.5 librrd.so.4
```

以上を設定したら、Github よりコードを取得します。

```
go get github.com/doublemarket/grafana-rrd-server
```

起動時のオプションは以下のようにします。

```
$HOME/go/bin/grafana-rrd-server -s 300 -r /var/www/mrtg/ &
```

これにより、デフォルトではTCP/9000番で Grafana RRD server が起動します。その他、詳しいオプションの説明は、[Github](https://github.com/doublemarket/grafana-rrd-server) 上にあるので、必要に応じて変更することも出来ます。
以上で、Grafana から RRD ファイルのデータを参照する準備ができました。

# Grafana のインストール

Grafana は、MRTGの環境と同じホスト上である必要は無く、上記の Grfana RRD server のポートに対して、HTTP通信ができれば、別のホスト上にインストールすることも出来ます。

## Grafana のインストールと起動

パッケージをダウンロードしてインストールします。

```
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.3-1.x86_64.rpm 
sudo yum localinstall grafana-4.4.3-1.x86_64.rpm 
```

続いて SimpleJSON プラグインをインストールします。

```
grafana-cli plugins install grafana-simple-json-datasource
```

Grafana を起動します。

```
service grafana-server start
```

## Data Source の設定

起動したら、http://(ホスト名):3000/ にアクセスすることでログイン画面が表示されます。デフォルトの admin ユーザ(初期パスワード: admin)でログインします。

<img src="https://qiita-image-store.s3.amazonaws.com/0/140282/4ab7af36-131d-50ba-7e3b-fe321726a768.png" alt="grafana_login.png" width=50%>

左上の Grafana のアイコンからメニューを開き、Data Sources をクリックすると、データソースの追加画面が表示されます。

![data_sources.png](https://qiita-image-store.s3.amazonaws.com/0/140282/c368bc45-a8e4-4120-a43b-c141733b2a88.png) => ![data_sources2.png](https://qiita-image-store.s3.amazonaws.com/0/140282/b67e888a-2ea9-6017-3fd4-b6449786c991.png)

[+Add data source]をクリックして、以下の項目を設定します。

|項目名|値|
|:--|:--|
| Name | rrd (なんでも良い) |
| Type | SimpleJson |
| Url  | http://(Grafana RRD serverのホスト名):9000/ |

設定に問題が無ければ、[Save & Test] をクリックした際に、"Success"のメッセージが表示されます。

![datasource_save.png](https://qiita-image-store.s3.amazonaws.com/0/140282/201ce4fb-ee07-0481-4e07-e12e8b97ab7a.png)

## グラフの作成

新規ダッシュボードを作成して、Graph パネルを追加したら、以下のように設定します。

1. Panel Data Source で、先ほど設定した rrd を選択します。
2. クエリエディタの "select metric" のところに、RRD ファイル名と RRD の DS名のリストが表示されるので、必要なものを選択します。

これで選択した RRD ファイル内のデータが、グラフとして表示されるようになります。Add Queryをクリックして、1つのグラフに2つ以上のデータ系列を表示することもできます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/140282/7dd65067-32e6-1ec1-bb07-d316377fd9b6.png" alt="Graph" width="50%">

同様の操作を繰り返すと、先ほどの MRTG と同様のダッシュボードを作成できます。

![dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/140282/40a46e98-4116-6e2e-2e0b-c711ce1232db.png)