コンテンツにスキップ

変数クエリ


ビュー変数のクエリは、変数の値の範囲とデータソースを定義するために使用します。値の範囲がダッシュボードの時間ウィジェットと連動するかどうかを設定でき、さまざまなデータフィルタリング要件に対応します。

値の範囲の制御

クエリで取得できる選択肢の値について、ダッシュボードの時間範囲の影響を受けるかどうかを選択できます。

モード 説明 適用シーン
ダッシュボードに連動 ダッシュボードの時間ウィジェットに従ってデータをフィルタリング 最近アクティブなホストのみを表示し、過去の不要なデータを排除
ダッシュボードに連動しない すべての履歴データを一覧表示 全件列挙が必要な場合、例:すべてのサービス名(サービスは頻繁に増減しないため)

主なクエリ方式

ビュー変数は現在、6 種類のクエリ方式をサポートしています。必要に応じて選択してください。

クエリ方式 適用シーン 主な特長
DQL クエリ ログ、オブジェクト、トレースなどの非メトリクスデータのクエリ 唯一の全データ型対応、カスケードクエリ対応
PromQL クエリ メトリクスデータのみのクエリ、Prometheus に習熟している場合 構文が PromQL エコシステムと互換性あり
データ型クエリ クエリ文を書かずに、簡単に選択して設定 ビジュアル選択、コード不要
外部データベース 外部の MySQL などのデータベースとの連携 SQL クエリを直接使用
外部関数 登録済みの関数を呼び出して動的に候補値を生成 他のビュー変数を引数として参照可能
カスタム 固定された少数の選択肢のみ 直接入力、データベースへのクエリ不要

DQL クエリ

メトリクス、ログ、インフラストラクチャー、オブジェクト、トレース、RUM など、すべてのデータ型に対応しており、最も機能が充実しています。

詳しくは DQL の定義と構文 をご参照ください。

基本構文

データ型::データソース:(distinct('属性フィールド名')){フィルタ条件}

例:

# すべての Docker コンテナのホスト名を取得
O::docker_containers:(distinct(`host`))

時間範囲の指定

DQL では、文の中で直接時間範囲を指定できます。ダッシュボードの時間ウィジェットよりも優先されます。

記述 意味
[10m] 直近 10 分間
[1h] 直近 1 時間
[1d] 直近 1 日
未指定 ダッシュボードの時間ウィジェットを使用

例:

# 直近 10 分間にデータがあるホストのみ表示
O::docker_containers:(distinct(`host`)) [10m]

Show 関数クエリ

メトリクス関連のメタデータ情報をクエリする場合に適しています。時間範囲は指定できません。

構文
構文 説明
show_measurement() 現在のワークスペース内のすべてのメジャーメントを返す
show_tag_key(from=["cpu"]) 現在のワークスペース内のメジャーメント cpu のタグを返す
show_tag_key(from=["cpu"],keyin=["host"]) 現在のワークスペース内のメジャーメント cpuhost タグの値一覧をクエリ

詳しくは DQL 関数の説明 をご参照ください。

例:

# すべてのメジャーメントをクエリ
SHOW METRIC_SET()

# 指定したメジャーメントのすべてのタグをクエリ
SHOW LABELS FROM M::cpu

PromQL クエリ

PromQL クエリは手書きのクエリ文をサポートします。デフォルトではダッシュボードの時間ウィジェットで選択した時間を使用してクエリを実行し、データを返します。

PromQL クエリの詳細については、PromQL クイックスタート をご参照ください。

データ型クエリ

クエリ文を書かずに素早く設定したい場合は、データ型を直接選択し、画面上でフィルタ条件を選択できます。

対応するデータ型:

  • メトリクス
  • ベースオブジェクト(ホスト、コンテナ、プロセスなど)
  • リソースカタログ
  • ログ
  • APM
  • RUM

このモードでは、時間範囲の追加や カスケードクエリ の設定はできません。

外部データベース

クエリ対象の選択肢の値が外部のデータベース(MySQL、PostgreSQL など)に保存されている場合は、このクエリ方式を選択して、既存のデータシステムに直接連携できます。

  1. データソースを選択
  2. クエリ文を入力
  3. 並び順を選択

詳細については、外部データソース をご参照ください。

外部関数

クエリ対象の選択肢の値をカスタム関数のロジックで取得する必要がある場合は、このクエリ方式を選択し、ワークスペースに登録済みの外部関数を呼び出して、動的に候補値のリストを生成します。

  1. 関数を選択:現在のワークスペースに登録されている外部関数から選択します。
  2. 必要に応じて関数の引数を追加し、引数名と対応する値を入力します。ダッシュボード内の他のビュー変数を参照する場合は、#{変数名} の形式で指定します。参照する変数が切り替わると、システムは自動的に関数を再度呼び出し、候補値を更新します。
  3. 値のフィールド:関数の戻り値のうち、どのフィールドの値を変数の候補値とするかを指定します(❗️このフィールドは必須項目ではありません。設定しない場合、システムはデフォルトで戻り値の最初のフィールドを取得します。特定のフィールドの値を返す必要がある場合は、手動でフィールド名を入力してください)。

このクエリ方式では、時間範囲の追加やカスケードクエリの設定はできません。

カスタムクエリ

クエリ対象の選択肢の値が固定されており、数が限られている場合、データベースへのクエリは不要です。この場合、ビュー変数に使用する値のセットを直接定義できます。各オプションはカンマ , で区切ります。例:prod,test,dev,staging

このクエリ方式では、時間範囲の追加やカスケードクエリの設定はできません。

カスケードクエリ

複数の変数に階層関係がある場合に使用します。例:

  • 「サービス」を選択すると、「環境」のドロップダウンには、そのサービスの環境のみが表示されます(全環境ではありません)。
  • 「環境」を選択すると、「バージョン」のドロップダウンには、その環境のバージョンのみが表示されます。

設定条件

  1. DQL クエリのみがカスケード設定をサポートします。
  2. 子変数のクエリ文で、#{親変数名} を使用して親変数の現在の値を参照します。

設定例

以下は、RUM の Web アプリケーション概要におけるビュー変数のカスケードフィルタリングの例です。サービス、環境、バージョンに基づく連動クエリの設定を説明します。

ダッシュボードに 3 つの変数クエリ文を設定する必要があります。2 番目と 3 番目のクエリ文では、1 番目のクエリで設定した #{変数名} を使用します。

  • 変数 1(サービス):すべてのアプリケーション一覧をクエリ
T::re(`.*`):(distinct(service))
  • 変数 2(環境):すべてのアプリケーション一覧から、変数 1 で選択された環境の一覧をクエリ
T::re(`.*`):(distinct(env)) { service = '#{service}'}
  • 変数 3(バージョン):すべてのアプリケーション一覧から、変数 2 で選択されたバージョンの一覧をクエリ
T::re(`.*`):(distinct(version)) {service = '#{service}'}

クエリシーンの例

グラフとの連携

  1. グラフのクエリで、フィールドをフィルタリングする際に、value 値として対象の変数を選択します。

  2. シーンビューで変数の値を切り替えると、グラフは変数タグに基づいてフィルタリングされて表示されます。

グラフからの逆方向追加

前提条件

対応する DQL フィルタに by グループ条件が存在すること。

  1. グラフ上の特定の時系列またはデータポイントをクリックします。
  2. ビュー変数に適用 を選択します。
  3. システムが自動的にクエリを補完します。

フィードバック

このページは役に立ちましたか?