GitHub プロジェクトのelastic/beats-dashboardsには、Kibana 定義を (JSON に、定義ごとに 1 つのファイルに) ダンプするためのPython スクリプトと、それらのエクスポートされた定義を Elasticsearch インスタンスにロードするためのシェル スクリプトが含まれています。
Python スクリプトはすべての Kibana 定義をダンプしますが、これは私の場合、私が望む以上のものです。
Elasticsearch インスタンスのすべてのダッシュボードではなく、一部の定義のみを配布したいと考えています。具体的には、いくつかのダッシュボード (およびそれらの視覚化と検索) の定義です。
特定のダッシュボード定義を取得するスクリプトを作成し、その定義を解析して、引用されたビジュアライゼーションと検索定義を取得するなど、さまざまなオプションを検討しましたが、今のところ、次のソリューションを採用しました (エレガントではありませんが実用的です)。
Kibana で各定義を編集し、その定義がエクスポート対象であることを示す文字列を [説明] フィールドに挿入しました。たとえば、"#exportme"
.
定義をダンプする Python スクリプト (beats-dashboards から) では、検索関数呼び出しにクエリ パラメーターを導入し、その識別文字列を持つ定義に制限しました。例えば:
res = es.search(
index='.kibana',
doc_type=doc_type,
size=1000,
q='description:"#exportme"')
(実際には、「ハッシュタグ」をハードコーディングするよりも、コマンドライン引数で指定する方が良い方法です。)
Elastic/beats-dashboard で提供される dump'n'load スクリプトの 1 つの側面で特に気に入っているのは、定義ごとに 1 つの JSON ファイルという粒度です。これはバージョン管理に便利だと思います。