変数コントロールによるKibanaダッシュボードのインタラクション性の向上

Kibana 8.18+の変数コントロールを使用して、個々の可視化をフィルタリングし、時間間隔を調整し、Kibanaダッシュボード内の異なるフィールドでグループ化する方法を学びます。

単一のソリューションでデータを監視、保護、検索します。アプリケーション監視から検出まで、Kibanaはユースケースに対応する多機能なプラットフォームです。今すぐ14日間の無料トライアルを始めましょう。

バージョン8.18以降および9.xシリーズすべてのKibanaダッシュボードで変数コントロールが利用できるようになりました。ダッシュボードユーザーから最も継続的にリクエストされていた追加機能の1つがついに導入されました 🎉 過去数か月間、変数コントロールの拡張と改良を続けてきたため、変数コントロール専用のブログ投稿を作成するのに絶好のタイミングとなりました。

変数コントロールとは何ですか?

Kibanaのダッシュボードを使用したことがある方なら、クラシックなダッシュボードコントロール(データの値を表示する便利なドロップダウン)をご存知でしょう。これにより、数回のクリックでフィルタリングできます。

変数コントロールは表面上では似ていますが、巧妙な工夫が施されています。ダッシュボード上のすべてのパネルを自動的にフィルター処理するのではなく、個々の可視化内の ES|QLクエリに直接プラグインすることができます。

つまり、各コントロールを適用する場所をユーザーが決定できるということです。さらに、時間間隔の調整、内訳フィールドの切り替え、可視化パラメーターの即時変更など、さまざまなクリエイティブなトリックに使用できます。基本的に、ダッシュボードに真のインタラクティブな体験を提供し、より速く、より簡単に洞察を得られるようにしています。

変数コントロールのユースケース

変数コントロールは便利そうですが、実際に何ができるのでしょうか?ダッシュボードをレベルアップさせる例をいくつかご紹介します。

選択された可視化をフィルター

一部の可視化をフィルターし、他の可視化はそのままにしておきたい場合は、変数コントロールがまさに最適です。必要なパネルを選択して、可視化の背後にあるES|QLクエリでそれらを接続できます。

異なる時間間隔を選択

ユーザーが「5分」、「1時間」、「1日」など、適切な時間枠を切り替えることができるようにします。事前定義された間隔で変数コントロールを構築し、それを時系列クエリに接続します。

機能を変更

各操作ごとに複数のチャートを作成する代わりに、ダッシュボードユーザーが最大値、平均値、異なるパーセンタイル、またはその他のアグリゲーターを選択できるようにします。

異なるフィールドでグループ化

調査中に、データをさまざまな次元で分類する必要がある場合があります。変数コントロールを使用すると、複数の「グループ化」フィールドを定義し、ダッシュボードユーザーが分析情報を明らかにするのに役立つフィールドを選択できるようにすることができます。

作成方法

変数コントロールを作成する最も簡単な(そしておそらく最も楽しい)方法は、可視化のES|QLクエリエディタから直接作成することです。クエリを入力し始め、オートコンプリートメニューを使用すれば、Kibanaが役立つコントロールを自動的に作成します。

ただし、変数自体から開始したい場合は「パネルを追加」→「コントロール」→「変数コントロール」に進み、コントロールを作成した後で変数を可視化に追加することもできます。

例1:複数値選択によるフィルタリングコントロール

1. ES|QLクエリを利用した可視化を選択し、WHERE句内の「コントロールを作成」をクリックします。

2. 自動的に変数作成のポップアップにリダイレクトされます。ここでは「クエリからの値」タイプが自動で選択され、変数の名前も既に入力されています。可視化クエリで動作するよう、コントロールの名前は常に「?...」で始める必要があります。

通常、フィールドから値を取得し、ダッシュボードで選択した時間範囲に応じて値を更新するには、次のようなクエリが必要になります。

3. コントロールを保存すると、それがダッシュボードのトップに表示され、可視化クエリが変数コントロール名で更新されます。

4. コントロールに多重選択を追加したい場合は、ステップ2でクエリ内の MV_CONTAINS 関数を使用し、「複数選択を許可」を選択する必要があります(9.3以降で利用可能)。

例 2: 時間間隔制御

時系列を構築する場合は、日付ヒストグラム間隔に変数コントロールを簡単に追加できます。

1. 時系列のES|QLクエリを記述するときは、「コントロールを作成」をクリックします。変数を間隔用に作成する際は、BUCKET の代わりに TBUCKET を使用する方が良いです。これにより、「1 hour」、「1 day」などの見やすい間隔を受け入れることができます。TBUCKETには、時間範囲に自動的に適応できる自動オプションも近日中に導入される予定です。

2. ドロップダウンメニューでオプションを入力する間隔を定義します。

3. ドロップダウンメニューで異なる間隔を選択し、可視化がどのように変化するかを確認します。

例3:関数の変数

  1. 「静的値」タイプのコントロールを使用して変数を作成し、ドロップダウン値に関数名を追加します。関数を置き換えるには、「??...」で始まる変数名を使用することが重要です。

2. ES|QLクエリに変数名を含めます。

例4:フィールドの変数

  1. 「静的値」タイプのコントロールを使用して、必要なフィールドの名前を書き留めることができます。フィールドで機能させるためには「??...」で始まる変数名を使用することが重要です。

2. 可視化クエリで任意の場所に変数を参照します。

Discoverの変数コントロール

変数コントロールは単なるダッシュボードの特徴ではなく、DiscoverのES|QLエディターでも直接利用可能です。Discoverでより高速なデータ探索エクスペリエンスを実現するコントロールを構築し、それをダッシュボードに表示したり、その逆を行ったりすることができます。

技術的な詳細

ここまでで、変数コントロールには、クエリのどの部分を参照できるか、使用すべき命名プレフィックス(値の場合は「?...」、フィールドまたは関数の場合は「??...」)などのいくつかのルールがあることに気付かれたでしょう。これは、変数がクライアント上で行われる単純な文字列置換ではなく、実際にはクエリ言語自体の第一級オブジェクトであるためです(ES|QL ではパラメーターと呼ばれます)。

この設計にはいくつかの大きな利点があります。1つは、Kibanaが各変数のコンテキストを理解できるため、設定を自動的に生成して事前入力できることです。また、この言語が変数の入力を厳密に検証し、悪意のある挿入を防ぎ、何かおかしい点があれば適切にエラーを出力するため、安全性もはるかに高くなります。さらに、複雑な検証とエラー処理をクライアントではなくサーバー側に移動することで、パフォーマンスと安定性が向上します。パフォーマンスに関する注意点として、ベストプラクティスは、高速クエリを含む変数を構築することです。これにより、ダッシュボードよりも先に読み込まれ、遅いクエリがダッシュボード全体のパフォーマンスに影響を与えることを防ぎます。

もちろん、このアーキテクチャーにも(現時点では)いくつかの制限があります。変数はまだフィルタリング用の「任意」オプションをサポートしておらず、現在、LIKE FROM(データソースの切り替え用)のような特定の演算子では使用できません。幸い、当社はこれらの機能を追加するために積極的に取り組んでいます。

コントロールの今後

この機能はまだ完成ではありません。以下のような改善を予定しています。

✨ ダッシュボードのどこにでもコントロールを配置できる機能

✨ コントロールの連鎖(一つのコントロールの出力が次のコントロールのインプットになるよう)

✨ 変数の「任意」選択のようなより良い選択オプション

✨ 新しいコントロールタイプ(検索するタイプのコントロールとデータソースの変数)

✨ さらに、ユーザーの皆様のご要望に応え、通常コントロールの事前フィルタリングなどの操作性の改善

アイデアやご意見があれば、ぜひお聞かせください。

関連記事

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう