naoki86star

インターネットの片隅でなにかしら書いてみる

carbon+grafana on raspberry pi2 in 2019

 実例の非常に多いであろう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

f:id:naoki86star:20190312201153p:plain
何年か分の温度湿度
 これも思い出話、以前一時期バッチで毎日一日分をgnuplot+perlでpngのチャートに落として指定日分を見れるようにはしていたことあれど、数日数か月とおしてみることはできなかったです。ソフトウェア環境進化するものです、ありがたやありがたや。

*1:raspberry pi2なのは(3でないのは)電源持っていないから。

*2:ドキュメントのoverview

*3:初見でもモダンに見えましたが、いろいろ見た目さらに格好よく見えてくる

*4:設定を維持するためには設定のファイルの配置とかの理解は必要かも

*5:おととしに使っていたarmデバイスが壊れて、それ以来つなぎ直しもせず放置を、今回測定も復活