Grafanaグラフ保存スキーム

3829 ワード

引用する


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つのパラメータ
  • imageHost:保存した画像に他のアプリケーションがアクセスできるように、本機で別のHTTPサービスを実行する必要があり、URLが指すディレクトリがimagePath構成ディレクトリと一致することに注意して構成する.
  • imagePath:画像はローカルディレクトリ
  • に保存される
  • port:ここでのportはgrafana-images独自のportであり、imageHostのURLに関係なく
    #./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"}

    ブラウザで画像を開くことができても成功します.

    まとめ


    上記の方法では、パフォーマンスピクチャをピクチャとして保存することができ、スクリプトによってタイミングよく保存することをお勧めします.これらの履歴情報にアクセスするピクチャをスケジュールするには、別のフロントエンドページが必要になる場合があります.ここでは説明しません.