実例の非常に多いであろうraspberry pi2*1でデータを貯めてgrafanaでみてみよう、みたいなことを、今時点(2019年)で、こんな手順で、みたいなメモです。
データストアとしてgraphite-carbon(whisper)を使い、これもpi2の中に押し込んで、データ量青天井とか同時大量アクセスとかは望めないなれど、一人分の一人使い用途としてはいい感じと思ってます。
思い出話
graphiteをはじめて知ったのは、自分の場合fastnetmonというddosのツールを試してみたときです。それは当時はまだtrialを容易にダウンロードして実行できるようになっていました。必要なコンポーネントをダウンロード・ビルドしてくれるperlスクリプトを起動して環境を作るような手順になってたと記憶してます。バックエンドのdbの選択肢のひとつとして、graphiteが使われていて、それが最初に知ったきっかけです。
ほどなくしてgrafanaというフロントエンドの描画ツールもよく見かけるようになり、それが最初に提案してくるdatasourceのひとつにgraphiteが現れてくるので注目してみるようになった次第です。
graphiteというのは時系列データベースと、要求に応じたチャートの描画のための機能(データを供給する)から構成されていて、時系列データベースとしてwhisterとceresという2つが開発されてきてます*2
最初この辺のコンポーネントの区切りが飲み込めてなくてgraphiteを調べるのに全体ceresとかdjangoを使ったgraphite-webとかひっくるめてみていたのでよくわからずフラストレーションになってました。
今の時点の自分が見る限り、graphiteのそれ自身のUIツールにあたるgraphite-webはちょっと取り残されちゃった、そんな印象なんですが、それが最初よく分からんかったのです。
本題
CPUも非力てことで、本家版でなくより処理効率がいいかもってことでgolang版をトライしてみました。パッケージはなさそうな気がしたので、cloneしてpi2の上でgoでbuildしました。golangもaptでなくdownloadサイトから1.11を落としてきました。
buildは、すんなり通ってくれましたね。
設定ファイルの雛形がdeployフォルダにあり、go-carbon.conf, storage-schema.confを調整して、./go-carbon -c go-carbon.confですんなり起動してくれます。ここまでで、whisperデータベースファイルのフォルダが作られ、tcp/udpとしては、2003-2004,7002が開きます。
echo metric 100 `date +'%s'` | nc 127.0.0.1 2003
みたいなコマンドでwhisper/metric.wspとかのファイルができていると、お動いてる、と実感できます。
比較的時間のたった記事ですが自分にはこれが有用でした。graphite-carbonはgo-graphiteで置き換えますけど、Installing graphite-apiのブロックに書かれているまとめ方は大変助かりました。
graphite-apiというpythonのモジュールが、
graphite-api.ymlのcarbonに関するパスを書き換えたのと、これはしょうもないことですが、go-carbonはgraphite-api.yamlという名前で参照していたみたいなので、ファイル名を変えました。
- grafana
開発が活発みたい*3が、datasourceとのインタフェースがwebからダウンロードして展開するのが容易だと思いました。grafanaの動いている環境で一旦grafanaのみremoveして新しいバージョンにするのは(今のところ)多分難しくないです。*4
ここを参照してパッケージシステムにお世話になってインストールです。
wget https://dl.grafana.com/oss/release/grafana_6.0.1_armhf.deb sudo dpkg -i grafana_6.0.1_armhf.deb
具体例
数年計っていた部屋の温度湿度をインポートしたイメージです。*5
これも思い出話、以前一時期バッチで毎日一日分をgnuplot+perlでpngのチャートに落として指定日分を見れるようにはしていたことあれど、数日数か月とおしてみることはできなかったです。ソフトウェア環境進化するものです、ありがたやありがたや。