変数の追加と管理 - Amazon Managed Grafana

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

変数の追加と管理

このドキュメントトピックは、Grafana バージョン 10.x をサポートする Grafana ワークスペース向けに設計されています。

Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 9 での作業

Grafana バージョン 8.x をサポートする Grafana ワークスペースについては、「」を参照してくださいGrafana バージョン 8 での作業

次の表に、Grafana の変数のタイプを示します。

変数タイプ 説明

Query

メトリクス名、サーバー名、センサー IDs、データセンターなど、クエリによって生成された値のリスト。

カスタム

カンマ区切りリストを使用して変数オプションを手動で定義します。

[テキストボックス]

オプションのデフォルト値を使用してフリーテキスト入力フィールドを表示します。

定数

非表示の定数を定義します。

データソース

ダッシュボード全体のデータソースをすばやく変更します。

[間隔]

間隔変数は時間範囲を表します。

アドホックフィルター

データソースのすべてのメトリクスクエリに自動的に追加されるキーと値のフィルター (Prometheus、Loki、InfluxDB、Elasticsearch のみ)。

グローバル変数

クエリエディタの式で使用できる組み込み変数。

連鎖変数

変数クエリには、他の変数を含めることができます。

一般的なオプションの入力

作成する任意のタイプの変数の一般的なオプションを入力する必要があります。

一般的なオプションを入力するには
  1. 変数を作成するダッシュボードに移動し、ページ上部のダッシュボード設定 (歯車) アイコンを選択します。

  2. 変数 タブで、新しい変数 を選択します。

  3. 変数の名前を入力します。

  4. タイプ リストで、クエリ を選択します。

  5. (オプション) ラベル に、変数ドロップダウンの表示名を入力します。

    表示名を入力しない場合、ドロップダウンラベルは変数名です。

  6. 非表示オプションを選択します。

    • 選択なし (空白) – 変数ドロップダウンには変数またはラベル値が表示されます。

    • ラベル – 変数ドロップダウンには、選択した変数値と下矢印のみが表示されます。

    • 変数 – ダッシュボードには変数ドロップダウンは表示されません。

クエリ変数の追加

クエリ変数を使用すると、メトリクス名、タグ値、またはキーのリストを返すことができるデータソースクエリを作成できます。例えば、クエリ変数は、サーバー名、センサー IDs、またはデータセンターのリストを返す場合があります。変数値は、データソースクエリでオプションを動的にフェッチすると変化します。

クエリ変数は通常、文字列でのみサポートされます。クエリが数値やその他のデータ型を返す場合は、変数として使用するために文字列に変換する必要がある場合があります。例えば、Azure データソースの場合、この目的のために tostring 関数を使用できます。

クエリ式には、他の変数への参照を含めることができ、実際にはリンクされた変数を作成できます。Grafana はこれを検出し、リンクされた変数のいずれかが変更されると変数を自動的に更新します。

注記

クエリ式はデータソースごとに異なります。詳細については、データソースのドキュメントを参照してください。

クエリ変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. データソースリストで、クエリのターゲットデータソースを選択します。

  3. 更新リストで、変数がオプションを更新するタイミングを選択します。

    • ダッシュボードロード時 — ダッシュボードがロードされるたびにデータソースをクエリします。これにより、ダッシュボードを初期化する前に変数クエリを完了する必要があるため、ダッシュボードのロードが遅くなります。

    • 時間範囲の変更時 — ダッシュボードの時間範囲が変更されると、データソースをクエリします。このオプションは、変数オプションクエリに時間範囲フィルターが含まれているか、ダッシュボードの時間範囲に依存している場合にのみ使用します。

  4. クエリフィールドにクエリを入力します。

    • クエリフィールドはデータソースによって異なります。一部のデータソースにはカスタムクエリエディタがあります。

    • クエリは、 __textおよび という名前の値を返す必要があります__value。例えば、SQL では、 などのクエリを使用できますSELECT hostname AS __text, id AS __value from MyTable。他の言語のクエリは、構文によって異なります。

    • 1 つの入力フィールドクエリエディタでより多くのスペースが必要な場合は、フィールドの右下隅の線の上にカーソルを移動し、下にドラッグして展開します。

  5. (オプション) 正規表現 フィールドに正規表現式を入力して、データソースクエリによって返される名前の特定部分をフィルタリングまたはキャプチャします。例については、「正規表現 で変数をフィルタリングする」を参照してください。

  6. ソートリストで、ドロップダウンリストに表示される値のソート順を選択します。デフォルトのオプション Disabled は、データソースクエリによって返されるオプションの順序が使用されることを意味します。

  7. (オプション) 選択オプション を入力します

  8. 値 のプレビューで、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  9. 追加 を選択して、変数をダッシュボードに追加します。

カスタム変数の追加

数値や文字列など、変更されない値にはカスタム変数を使用します。

例えば、変更されないサーバー名やリージョン名がある場合は、クエリ変数ではなくカスタム変数として作成できます。これらは変更されないため、他のクエリ変数ではなく連鎖変数で使用できます。これにより、連鎖変数が更新されたときに Grafana が送信する必要があるクエリの数が減少します。

カスタム変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. カンマで区切られた値 リストで、この変数の値をカンマ区切りリストに入力します。スペースとコロンで区切られた数値、文字列、またはキーと値のペアを含めることができます。例えば key1 : value1,key2 : value2 です。

  3. (オプション) 選択オプション を入力します

  4. 値 のプレビューで、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  5. 追加 を選択して、変数をダッシュボードに追加します。

テキストボックス変数の追加

テキストボックス変数には、オプションのデフォルト値を含むフリーテキスト入力フィールドが表示されます。任意の値を入力できるため、これは最も柔軟な変数です。カーディナリティの高いメトリクスがある場合、またはダッシュボード内の複数のパネルを同時に更新する場合は、このタイプの変数を使用します。

テキストボックス変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. (オプション) デフォルト値 フィールドで、変数のデフォルト値を選択します。このフィールドに何も入力しない場合、Grafana はユーザーがテキストを入力するための空のテキストボックスを表示します。

  3. 値 のプレビューでは、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  4. 追加 を選択して、変数をダッシュボードに追加します。

定数変数の追加

定数変数を使用すると、非表示の定数を定義できます。これは、共有するダッシュボードのメトリクスパスプレフィックスに役立ちます。ダッシュボードをエクスポートすると、定数変数がインポートオプションに変換されます。

定数変数には柔軟性がありません。各定数変数は 1 つの値のみを保持し、変数設定を更新しない限り更新できません。

定数変数は、クエリに含める必要があるが、すべてのクエリで再入力したくない複雑な値がある場合に便利です。例えば、 というサーバーパスがある場合i-0b6a61efe2ab843gg、それを という変数に置き換えることができます$path_gg

定数変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. フィールドに、変数値を入力します。文字、数字、記号を入力できます。raw 形式 を使用している場合は、ワイルドカードを使用することもできます。

  3. 値 のプレビューで、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  4. 追加 を選択して、変数をダッシュボードに追加します。

データソース変数の追加

データソース変数を使用すると、ダッシュボード全体のデータソースをすばやく変更できます。これらは、データソースのインスタンスが複数ある場合に便利です。場合によっては、異なる環境にもあります。

データソース変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. Type リストで、変数のターゲットデータソースを選択します。

    Open advanced data source picker を選択して、データソースの追加 (管理者のみ) など、その他のオプションを表示することもできます。詳細については、「データソースに接続する」を参照してください。

  3. (オプション) インスタンス名フィルター で、データソースインスタンスを選択する正規表現フィルターを変数値のドロップダウンリストから入力します。すべてのインスタンスを表示するには、このフィールドを空のままにします。

  4. (オプション) 選択オプション を入力します

  5. 値 のプレビューでは、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  6. 追加 を選択して、変数をダッシュボードに追加します。

間隔変数の追加

間隔変数を使用して、1m1h、 などの時間範囲を表します1d。これらは、ダッシュボード全体のグループとしてタイムコマンドで考えることができます。間隔変数は、視覚化でのデータのグループ化方法を変更します。自動オプションを使用して、時間範囲ごとに設定された数のデータポイントを返すこともできます。

間隔変数は、時間 (InfluxDB の場合)、日付ヒストグラム間隔 (Elasticsearch の場合)、または要約関数パラメータ (Graphite の場合) でグループ化するパラメータとして使用できます。

間隔変数を追加するには
  1. 上記のように、一般的なオプションを入力します。

  2. フィールドに、変数ドロップダウンリストに表示する時間間隔を入力します。次の時間単位がサポートされています: s (seconds)m (minutes)h (hours)d (days)、、w (weeks)M (months)、および y (years)。デフォルト値 を承諾または編集することもできます1m,10m,30m,1h,6h,12h,1d,7d,14d,30d

  3. (オプション) オプションをリストに追加する場合は、自動autoオプションをオンにします。このオプションを使用すると、現在の時間範囲を分割して現在のauto時間範囲を計算する回数を指定できます。オンにすると、さらに 2 つのオプションが表示されます。

    • ステップ数最大データポイントクエリオプションと同様に、現在の時間範囲を分割して値を計算した回数を選択します。例えば、現在の表示時間範囲が 30 分の場合、auto間隔はデータを 30 1 分単位でグループ化します。デフォルト値は 30 ステップです。

    • 最小間隔 — ステップカウント間隔が時間を割かない最小しきい値。30 分の例を続行するには、最小間隔が 2m に設定されている場合、Grafana はデータを 15 の 2 分単位でグループ化します。

  4. 値 のプレビューでは、Grafana は現在の変数値のリストを表示します。これらを確認して、期待どおりであることを確認します。

  5. 追加 を選択して、変数をダッシュボードに追加します。

間隔変数の例

次の例は、Graphite 関数myintervalのテンプレート変数を示しています。

summarize($myinterval, sum, false)

アドホックフィルターの追加

アドホックフィルターを使用すると、指定したデータソースを使用するすべてのメトリクスクエリに自動的に追加されるキーと値のフィルターを追加できます。他の変数とは異なり、クエリではアドホックフィルターを使用しません。代わりに、アドホックフィルターを使用して既存のクエリのフィルターを記述します。

注記

アドホックフィルター変数は、Prometheus、Loki、InfluxDB、および Elasticsearch データソースでのみ機能します。

  1. 上記のように、一般的なオプションを入力します。

  2. データソースリストで、ターゲットデータソースを選択します。

    Open advanced data source picker を選択して、データソースの追加 (管理者のみ) など、その他のオプションを表示することもできます。詳細については、「データソースに接続する」を参照してください。

  3. 追加 を選択して、変数をダッシュボードに追加します。

アドホックフィルターを作成する

アドホックフィルターは、利用可能な最も複雑で柔軟な変数オプションの 1 つです。この変数では、変数オプションの通常のリストの代わりに、ダッシュボード全体のアドホッククエリを構築できます。この方法で適用したフィルターは、ダッシュボード上のすべてのパネルに適用されます。

変数選択オプションの設定

選択オプションは、可変オプションの選択を管理するために使用できる機能です。すべての選択オプションはオプションであり、デフォルトではオフになっています。

複数値変数

複数の値が選択された変数を補間することは、変数が使用される特定のコンテキストで有効な文字列に複数の値をフォーマットする方法が単純ではないため、難しいです。Grafana は、各データソースプラグインが複数の値に使用する形式をテンプレート補間エンジンに通知できるようにすることで、この問題を解決しようとします。

注記

Grafana がすべての値を 1 つの文字列にフォーマットするには、変数のカスタムオール値オプションが空白である必要があります。空白のままにすると、Grafana はクエリ内のすべての値を連結 (結合) します。例えば value1,value2,value3 です。カスタムall値を使用する場合は、代わりに *または になりますall

Graphite データソースを使用した複数値変数

Graphite は glob 式を使用します。この場合、複数の値を持つ変数は、現在の変数値が host1host2、host3 {host1,host2,host3}であるかのように補間されます。

Prometheus または InfluxDB データソースを使用する複数値変数

InfluxDB と Prometheus は正規表現式を使用するため、同じ変数が として補間されます(host1|host2|host3)。すべての値も正規表現エスケープされます。そうでない場合、正規表現制御文字を持つ値は正規表現式を破棄します。

Elastic データソースを使用した複数値変数

Elasticsearch は Lucene クエリ構文を使用するため、同じ変数が としてフォーマットされます("host1" OR "host2" OR "host3")。この場合、値に Lucene コントロールワードと引用符のみが含まれるように、すべての値がエスケープされます。

複数値変数のトラブルシューティング

自動エスケープとフォーマットは問題を引き起こす可能性があり、その背後にあるロジックを把握するのは難しい場合があります。特に InfluxDB および Prometheus では、正規表現構文を使用するには、 変数を正規表現演算子コンテキストで使用する必要があります。

Grafana でこの自動正規表現エスケープとフォーマットを実行しない場合は、次のいずれかを実行する必要があります。

  • 複数値をオフにするか、すべて含めるオプションオプションを選択します。

  • raw 形式 を使用します。

すべてを含める オプション

Grafana は変数ドロップダウンリストにAllオプションを追加します。ユーザーがこのオプションを選択すると、すべての変数オプションが選択されます。

すべてのカスタム値

このオプションは、Include All オプションが選択されている場合にのみ表示されます。

Custom all value フィールドに regex、globs、または Lucene 構文を入力して、 All オプションの値を定義します。

デフォルトでは、 All値には結合式内のすべてのオプションが含まれます。これは非常に長くなり、パフォーマンスの問題が発生する可能性があります。ワイルドカード正規表現のように、カスタムのオール値を指定する方がよい場合があります。

カスタム正規表現、globs、または Lucene 構文を Custom all value オプションに含めるには、エスケープされないため、データソースに有効な値は何かを検討する必要があります。

グローバル変数

Grafana には、クエリエディタの式で使用できるグローバル組み込み変数があります。このトピックでは、それらをアルファベット順にリストし、定義します。これらの変数は、クエリ、ダッシュボードリンク、パネルリンク、およびデータリンクに役立ちます。

$__dashboard

この変数は、現在のダッシュボードの名前です。

$__from および $__to

Grafana には、 $__fromと の 2 つの時間範囲変数が組み込まれています$__to。現在、デフォルトでは常にエポックミリ秒として補間されますが、日付の書式を制御できます。

構文 結果の例 説明

${__from}

1594671549254

Unix ミリ秒エポック

${__from:date}

2020-07-13T20:19:09.254Z

引数なし、デフォルトは ISO 8601/RFC 3339

${__from:date:iso}

2020-07-13T20:19:09.254Z

ISO 8601/RFC 3339

${__from:date:seconds}

1594671549

Unix 秒エポック

${__from:date:YYYY-MM}

2020-07

: 文字を含まないカスタム日付形式

上記の構文は でも機能します${__to}

$__ 間隔

$__interval 変数をパラメータとして使用して、時間 (InfluxDB 、MySQL 、Postgres、MSSQL の場合)、日付ヒストグラム間隔 (Elasticsearch の場合)、または要約関数パラメータ (Graphite の場合) でグループ化できます。

Grafana は、クエリで時間別にグループ化するために使用できる間隔を自動的に計算します。グラフに表示されるデータポイントよりも多くのデータポイントがある場合、間隔を長くしてグループ化することでクエリをより効率的に行うことができます。例えば、3 か月分のデータのグラフを見ると、分レベルで詳細を表示できない場合があります。時間または日でグループ化すると、グラフの表示内容に影響を与えることなく、クエリの効率が向上します。$__interval は、時間範囲とグラフの幅 (ピクセル数) を使用して計算されます。

概算計算: (to - from) / resolution

例えば、時間範囲が 1 時間でグラフが全画面表示の場合、間隔は に計算され、ポイントは 2m 2 分間隔でグループ化されます。時間範囲が 6 か月で、グラフが全画面表示の場合、間隔は 1d (1 日) で、ポイントは日別にグループ化されます。

InfluxDB データソースでは、レガシー変数$intervalは同じ変数です。代わりに $__interval を使用する必要があります。

InfluxDB および Elasticsearch データソースには、間隔をハードコードしたり、$__interval変数の最小制限を設定したりするために使用するGroup by time intervalフィールドがあります ( などの>構文を使用>10m)。

$__interval_ms

この変数はミリ秒単位の$__interval変数であり、時間間隔形式の文字列ではありません。例えば、 $__intervalが の場合20m$__interval_msは です1200000

$__org

この変数は現在の組織の ID です。 ${__org.name}は現在の組織の名前です。

$__user

${__user.id} は現在のユーザーの ID です。 ${__user.login}は現在のユーザーのログインハンドルです。 ${__user.email}は現在のユーザーの E メールです。

$__range

Prometheus および Loki データソースでのみサポートされます。この変数は、現在のダッシュボードの範囲を表します。これは によって計算されますto - from。ミリ秒と および という 2 $__range_ms 番目の表現があります$__range_s

$__rate_interval

Prometheus データソースでのみサポートされます。$__rate_interval 変数は rate 関数で使用するためのものです。

$timeFilter または $__timeFilter

$timeFilter 変数は、現在選択されている時間範囲を式として返します。例えば、時間範囲間隔Last 7 days式は ですtime > now() - 7d

これは、次のようないくつかの場所で使用されます。

  • InfluxDB データソースの WHERE 句。Grafana は、クエリエディタモードで InfluxDB クエリに自動的に追加します。テキストエディタモードで手動で追加できます: WHERE $timeFilter

  • Azure Monitor データソースに分析クエリをログ記録します。

  • MySQL 、Postgres、MSSQL の SQL クエリ。

  • $__timeFilter 変数は MySQL データソースで使用されます。

$__タイムゾーン

$__timezone 変数は、現在選択されているタイムゾーン、utcまたは IANA タイムゾーンデータベースのエントリ (例: ) を返しますAmerica/New_York

現在選択されているタイムゾーンがブラウザの時刻 の場合、Grafana はブラウザのタイムゾーンを決定しようとします。

連鎖変数

連鎖変数 は、リンクされた変数 またはネストされた変数 とも呼ばれ、変数クエリに 1 つ以上の他の変数を含むクエリ変数です。

連鎖変数クエリはデータソースごとに異なりますが、前提はすべての で同じです。連鎖変数クエリは、それらを許可する任意のデータソースで使用できます。

非常に複雑なリンクされたテンプレート化されたダッシュボードは、深さが 5 レベルまたは 10 レベルまで可能です。技術的には、どれだけ深く、複雑に行けるかに制限はありませんが、リンクが多いほど、クエリの負荷が大きくなります。

ベストプラクティスとヒント

以下のプラクティスにより、ダッシュボードと変数の使用が容易になります。

リンクされた新しい変数の作成

  • 変数を連鎖すると、親/子の依存関係が作成されます。これらは、はしごまたは木として構想できます。

  • 新しい連鎖変数を作成する最も簡単な方法は、新しい変数のベースとなる変数をコピーすることです。変数リストで、変数エントリの右側にある重複変数アイコンをクリックしてコピーを作成します。その後、親変数のクエリに を追加できます。

  • この方法で作成された新しい変数は、リストの下部に表示されます。論理的な順序にするには、リスト内の別の位置にドラッグする必要がある場合があります。

変数の順序

各エントリの右側にある上矢印と下矢印をクリックして、ダッシュボード可変リスト内の可変の順序を変更できます。Grafana は、このリストに従って変数ドロップダウンを左から右に一覧表示し、変数は左端の上部にあります。

  • 子変数の前に、依存関係のない変数をリストします。

  • 各変数は、依存している変数に従う必要があります。

  • UI には、依存関係を持つ変数が表示されないことに注意してください。他のユーザー (および自分自身) に対して簡単に使用できるように、変数を論理的な順序で一覧表示します。

複雑さに関する考慮事項

変数の依存関係のレイヤーが多いほど、変数を変更した後にダッシュボードを更新するのに時間がかかります。

例えば、リンクされた一連の変数 (国、リージョン、サーバー、メトリクス) があり、ルート変数値 (国) を変更する場合、Grafana はダッシュボードの視覚化を更新する前に、すべての依存変数に対してクエリを実行する必要があります。

変数の管理

変数ページでは、変数を追加したり、既存の変数を管理したりできます。また、変数を検査し、変数が他の変数またはダッシュボードで参照 (または使用されている) されているかどうかを特定することもできます。

移動 — ドラッグアンドドロップを使用して、変数をリストの上または下に移動できます。

クローン – 変数のクローンを作成するには、右側の一連のアイコンからクローンアイコンをクリックします。これにより、 というプレフィックスが付いた元の変数の名前を持つ変数のコピーが作成されますcopy_of_

削除 – 変数を削除するには、右側の一連のアイコンからごみ箱アイコンをクリックします。

正規表現で変数をフィルタリングする

正規表現クエリオプションを使用して、変数クエリによって返されるオプションのリストをフィルタリングするか、返されるオプションを変更します。

このページでは、正規表現を使用して変数ドロップダウンの値をフィルタリング/変更する方法を示します。

正規表現クエリオプションを使用して、変数クエリによって返されるオプションのリストをフィルタリングするか、返されるオプションを変更します。詳細については、正規表現に関する Mozilla ガイドを参照してください。

次の例は、次のオプションリストのフィルタリングを示しています。

backend_01 backend_02 backend_03 backend_04

01または で終わるオプションのみ02が返されるようにフィルタリングする

正規表現:

/ ( 01|02 ) $/

結果:

backend_01 backend_02

正規表現キャプチャグループを使用してオプションをフィルタリングおよび変更し、テキストの一部を返します。

正規表現:

/.* ( 01|02 ) /

結果:

01 02

フィルタリングと変更 - Prometheus の例

このオプションのリストの場合:

up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000 up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000 up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000

この正規表現:

/. *instance=" ( [^"]* ) .*/

次の結果を返します。

demo.robustperception.io:9090 demo.robustperception.io:9093 demo.robustperception.io:9100

名前付きテキストおよび値キャプチャグループを使用してフィルタリングおよび変更する

名前付きキャプチャグループを使用すると、変数クエリによって返されるオプションから個別の「テキスト」部分と「値」部分をキャプチャできます。これにより、変数ドロップダウンリストに、選択できる各値のわかりやすい名前を含めることができます。

例えば、node_hwmon_chip_namesPrometheus メトリクスをクエリする場合、 chip_namechip値よりもはるかにわかりやすいです。そのため、次の変数クエリ結果が得られます。

node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1 node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1

次の正規表現を通過します。

/chip_name="(?<text>[ ^ " ] + ) |chip=" (?<value >[ ^ " ] + )/g

次のドロップダウンリストを生成します。

Display Name Value ------------ ------------------------- enp216s0f0np0 0000:d7:00_0_0000:d8:00_0 enp216s0f0np1 0000:d7:00_0_0000:d8:00_1 enp216s0f0np2 0000:d7:00_0_0000:d8:00_2 enp216s0f0np3 0000:d7:00_0_0000:d8:00_3

text および valueキャプチャグループ名のみがサポートされています。