Kibanaダッシュボード作成の自動化について


#1

現在、json形式のデータをElasticsearchへ投入し(elasticsearch-pyを使用)、その後手動でkibanaのビジュアライズやダッシュボードでグラフを作成しています。
この手動で行っている部分を自動化(スクリプト化)したいと考えています。

具体的には、以下のような事ができないか考えています。
サンプル等(elasticsearch-py)見つける事ができず問い合わせさせていただきました。実現可否と、可能な場合のサンプルを教えて頂けますと幸いです。
また、もし実現可能であっても部分的であればそれでも構いません。

■実現したい事は以下(最終的にはグラフによる可視化を自動化したい)
・Create index pattern
・visualizeで折れ線グラフや棒グラフ等を作成
(可能ならindex名に含まれる文字列に応じて折れ線グラフや棒グラフ等を作成したいです。CPUという文字列が含まれる場合は折れ線グラフ、DISK使用量という文字列が含まれる場合は積み上げ棒グラフなど)
・指定したグラフを指定した順でDashboardに表示
(例えば、サーバ1のCPU使用率のグラフ、サーバ2のCPU使用率のグラフを先頭に配置し、次にサーバ1のメモリ使用率のグラフ、サーバ2のメモリ使用率のグラフ等)

■私の環境
・Windows 10 64bit
・Elasticsearch 6.5.4
・kibana 6.5.4
・elasticsearch-py 6.3.1


(Makoto Nozawa) #2

kibanaのvisualizeやdashboardの情報もESのdocumentとして表現されるので、グラフ化したい対象データの定義(つまりmapping)から可視化する際のデザインが一意に、機械的に決定できるのであれば可能そうですね。

デザイン次第なのでサンプルは出せませんが、手動で作ったvisualize/dashboardの情報をkibanaのindex(デフォルト名は.kibana)から探してみるのが良いと思います。
vusualizeのみであればkibanaを参照する際のgetパラメータとしても表現できるのでそちらでも代用できるかもしれません。

何れにせよESの外でスクリプトを書いて実現することになるのかなと。


(tsgkdt) #3

KibanaのDashboard Import APIを実行することで、ダッシュボードの作成自動化はできるかと思います。

詳細は以下をご覧ください。
https://www.elastic.co/guide/en/kibana/current/dashboard-import-api.html

Traditionally, developers would perform this level of integration by writing documents directly to the .kibana index. Do not do this! Writing directly to the .kibana index is not safe and it will result in corrupted data that permanently breaks Kibana in a future version.

.kibanaインデックスに直接データを書き込むのはしないで、とあります。

Importの方を見ていただくと、 Examplesのところにindex-patternやvisualizationの書き方が書いてあります。

また、filebeatやmetricbeatもダッシュボードをセットアップする仕組みがあります。
jsonサンプル例としては、
beatの下の方に kibana/6/dashboardやindex-patternの下にあるjsonも参考になるかと思います。

あとはcurlなりpythonなりでKibanaのAPIを実行すれば良いかと思います。

ご参考になれば幸いです。