RRDtool x Grafana で可視化する


Click here for English version

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

RRDtool

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

Grafana

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

Grafana RRD Server

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

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

RRDtool(MRTG)環境の構築

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

net-snmp のインストール

yum install net-snmp net-snmp-utils

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

rrdtool のインストール

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

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

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 の画面が表示されるようになるとおもいます。

Grafana RRD server のインストール

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

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

$ rrdtool
RRDtool 1.5.6  Copyright by Tobias Oetiker <[email protected]>
               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 をインストールします。手順は公式のドキュメントを参照するのが良いかと思います。

最後に 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 上にあるので、必要に応じて変更することも出来ます。
以上で、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)でログインします。

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

=>

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

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

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

グラフの作成

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

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

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

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