Grafanaグラフ保存スキーム
引用する
InfluxDBはシーケンスデータベースとして一般的に保存されているデータは限られており、データ量を制御するためにはRetentionPolicyを設定してデータの定期的なクリーンアップを行うことが一般的である.では、問題が発生しました.履歴データをどのように保存して抽出しますか?
フロントエンドレポートとしてGranfanaを選択しましたが、その中のレポートを抽出してPNGとして保存できますか?方法については後述する.
Grafana Serverエンドレンダリング機能
まずGrafanaで希望するグラフを設定し、Shareを選択します.
リンクページの一番下に「Direct link renderd image」というリンクがあります.
クリックすると、レンダリングされた画像ページにジャンプします.
飛び出した画像が黒い画面の場合、phantomjsレンダリングに問題があることを示します.Grafanaのログを確認してください.
tail /var/log/grafana/grafana.log
2016/07/19 15:31:00 [I] Listen: http://0.0.0.0:3000
2016/07/19 15:31:22 [I] PhantomRenderer::renderToPng url http://localhost:3000/dashboard-solo/db/redis_performance?panelId=1&from=1468891881256&to=1468913481256&var-instance=10.1.100.219%3A7013&width=1000&height=500
2016/07/19 15:31:23 [I] Completed 127.0.0.1 - "GET /query HTTP/1.1" 500 Internal Server Error 0 bytes in 238254us
上のログは私が3.0.4バージョンをインストールしたときに発見した問題で、最新の3.1.0バージョンにアップグレードすれば問題ありません.
curl -s https://packagecloud.io/install/repositories/grafana/stable/script.rpm.sh | sudo bash
sudo yum install grafana-3.1.0-1468321182.x86_64
まだ問題がある場合はphantomjsがコンパイルに成功したかどうかを確認してください.
#/usr/share/grafana/vendor/phantomjs/phantomjs -v
2.1.1
コンパイルに失敗した場合は、依存パッケージがインストールされていない可能性があります.確認してください.
sudo yum -y install gcc gcc-c++ make flex bison gperf \
ruby openssl-devel freetype-devel fontconfig-devel \
libicu-devel sqlite-devel libpng-devel libjpeg-devel
Grafana API Key
admin->API Keys
勝手にキーの名前を入力し、RoleはViewer(読み取り専用)を選択し、Addをクリックした後
キーを保存する
キーが使えるかどうかをテストします
curl -H "Accept: application/json" \
-H "Authorization: Bearer key " \
"http://redis.daily.vdian.net:3000/render/dashboard-solo/db/host_performance?panelId=1&fullscreen&from=1468889495822&to=1468911095822&var-host=%24__all"
開くことができるかどうかは、検証に合格したことを示します.
抽出保存
Grafanaドキュメントで紹介されているのはHubotですが、hubotはS 3をストレージとしてPNGを保存しているので、私の天朝のネットワークには向いていません.ここではGrafana-imagesを紹介して実現します
インストールコンパイル
git clone https://github.com/lanyonm/grafana-images.git
git checkout master
このツールはGo書き込みで、インストール前にGo環境がインストールされていることを確認します.
make
コンパイルが終わったら実行できます.
3つのパラメータ
#./grafana-images --help
Usage of ./grafana-images:
-imageHost string
host for the saved images (default "http://grafana.example.com/saved-images")
-imagePath string
location on disk where images will be saved (default "/opt/saved-images")
-port int
grafana-images listening port (default 8080)
パラメータを持ち込んでgranfana-images テスト
もう一つの端末を開き、Grafana-imagesで画像を取得できるかどうかをテストします.
curl -d '{"imageUrl":"http://redis.daily.vdian.net:3000/render/dashboard-solo/db/host_performance?panelId=1&fullscreen&from=1468889495822&to=1468911095822&var-host=%24__all"}' \
-H "Accept: application/json" \
-H "Authorization: Bearer Key" \
http://redis.daily.vdian.net:8080/grafana-images
成功すると、次の戻り値が返されます.
{"pubImg":"http://redis.daily.vdian.net/download/fc9e541e5c1e4a15fb7afbd61ba26f61.png"}
ブラウザで画像を開くことができても成功します.
まとめ
上記の方法では、パフォーマンスピクチャをピクチャとして保存することができ、スクリプトによってタイミングよく保存することをお勧めします.これらの履歴情報にアクセスするピクチャをスケジュールするには、別のフロントエンドページが必要になる場合があります.ここでは説明しません.