変数タイプ
このドキュメントのトピックは、Grafana バージョン 8.x をサポートする Grafana ワークスペース向けです。
Grafana バージョン 10.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 10 での作業」を参照してください。
Grafana バージョン 9.x をサポートする Grafana ワークスペースについては、「Grafana バージョン 9 での作業」を参照してください。
Grafana は、変数のタイプをいくつか使用します。
変数タイプ | 説明 |
---|---|
クエリ | メトリクス名、サーバー名、センサー ID、データセンターなど、クエリによって生成された値のリストです。詳細については、「クエリ変数の追加」を参照してください。 |
カスタム | カンマ区切りリストを使用して変数オプションを手動で定義します。詳細については、「カスタム変数の追加」を参照してください。 |
テキストボックス | 任意のデフォルト値を使用してテキスト入力フィールドを表示します。詳細については、「テキストボックス変数の追加」を参照してください。 |
定数 | 非表示の定数を定義します。詳細については、「定数変数の追加」を参照してください。 |
データソース | ダッシュボード全体のデータソースをすばやく変更します。詳細については、「データソース変数の追加」を参照してください。 |
間隔 | 間隔変数は時間範囲を表します。詳細については、「間隔変数の追加」を参照してください。 |
アドホックフィルター | データソースのすべてのメトリクスクエリに自動的に追加されるキー/値のフィルターを指します (InfluxDB 、Prometheus、OpenSearch のみ)。詳細については、「アドホックフィルターの追加」を参照してください。 |
グローバル変数 | クエリエディタの式で使用できる組み込み変数です。詳細については、「グローバル変数」を参照してください。 |
連鎖変数 | 変数クエリには、他の変数を含めることができます。詳細については、「連鎖変数」を参照してください。 |
クエリ変数の追加
クエリ変数を使用すると、メトリクス名、タグ値、またはキーのリストを返すデータソースクエリを記述できます。例えば、クエリ変数は、サーバー名、センサー ID、またはデータセンターのリストを返す場合があります。変数値は、データソースクエリでオプションを動的に取得するにつれて変化します。
クエリ式には、他の変数への参照を含めることができ、実際にはリンクされた変数を作成できます。Grafana はこれを検出し、リンクされた変数のいずれかが変更されると変数を自動的に更新します。
クエリ式
クエリ式はデータソースごとに異なります。詳細については、データソースに接続するのデータソースに関するドキュメントを参照してください。
一般的なオプションの入力
クエリ変数の一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の[名前]を入力します。
-
[タイプ] 一覧で、[クエリ] を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル] – 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
クエリオプションの入力
クエリ変数のクエリオプションを入力するには
-
[データソース] リストで、クエリのターゲットデータソースを選択します。データソースの詳細については、「データソースに接続する」を参照してください。
-
[更新] リストで、変数がオプションを更新するタイミングを選択します。
-
[なし] - 変数クエリをキャッシュし、値は更新されません。これは、値が変更されない場合は問題ありませんが、動的で大きく変更される場合は問題になります。
-
[ダッシュボード読み込み時] - ダッシュボードが読み込まれるたびにデータソースにクエリを実行します。これにより、ダッシュボードの読み込みが遅くなります。ダッシュボードを初期化する前に変数クエリを完了する必要があるためです。
-
[時間範囲の変更時] - ダッシュボードの時間範囲が変更されたときにデータソースにクエリを実行します。このオプションは、変数のクエリオプションに時間範囲フィルターが含まれているか、ダッシュボードの時間範囲に依存している場合にのみ使用します。
-
-
[クエリ] フィールドにクエリを入力します。
-
クエリフィールドはデータソースによって異なります。一部のデータソースには、カスタムクエリエディタがあります。
-
1 つの入力フィールドクエリエディタにより多くのスペースが必要な場合は、フィールドの右下隅にある線で一時停止し、下にドラッグして展開します。
-
-
(オプション) [正規表現] フィールドに正規表現を入力して、データソースクエリによって返される名前の特定部分をフィルタリングまたはキャプチャします。例については、「正規表現での変数のフィルタリング」を参照してください。
-
[ソート] リストで、ドロップダウンリストに表示される値のソート順序を選択します。デフォルトのオプション [無効] では、データソースクエリによって返されるオプションの順序が使用されます。
-
(オプション) [選択オプション] を入力します。詳細については、「変数選択オプションの入力」を参照してください。
-
[値のプレビュー] では、Grafana ワークスペースに現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
カスタム変数の追加
変更されない値にはカスタム変数を使用します。これは、数値、文字列、またはその他の変数である場合があります。
例えば、サーバー名やリージョン名が変更されない場合は、クエリ変数ではなくカスタム変数として作成できます。これらは変更されないため、他のクエリ変数ではなく、連鎖変数で使用できます。これにより、連鎖変数が更新されたときに Grafana が送信する必要があるクエリの数が減少します。連鎖変数の詳細については、「連鎖変数」を参照してください。
一般的なオプションの入力
カスタム変数のクエリオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで [カスタム] を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル] – 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
カスタムオプションの入力
カスタム変数のカスタムオプションを入力するには
-
[カンマで区切られた値] リストで、この変数の値をカンマ区切りリストに入力します。コロンで区切られた数値、文字列、その他の変数、またはキーと値のペアを含めることができます。
-
(オプション) [選択オプション] を入力します。詳細については、「変数選択オプションの入力」を参照してください。
-
[値のプレビュー] では、Grafana ワークスペースに現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
テキストボックス変数の追加
テキストボックス変数は、任意のデフォルト値を使用してテキスト入力フィールドを表示します。これは、任意の値を入力できるため、最も柔軟な変数です。カーディナリティの高いメトリクスがある場合や、ダッシュボード内の複数のパネルを同時に更新する場合は、このタイプの変数を使用します。
一般的なオプションの入力
テキストボックス変数の一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで、[テキストボックス] を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル]– 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
テキストオプションの入力
テキストボックス変数のテキストオプションを入力するには
-
(オプション) [デフォルト値] フィールドで、変数のデフォルト値を選択します。このフィールドに何も入力しない場合、Grafana はテキストを入力できる空のテキストボックスを表示します。
-
[値のプレビュー] には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
定数変数の追加
非表示の定数を定義するには、定数変数を使用します。定数変数は、共有するダッシュボードに対するメトリックパスの接頭辞に有用です。ダッシュボードをエクスポートすると、定数変数がインポートオプションに変換されます。
定数変数は複数設定できません。各定数変数は 1 つの値のみを保持します。更新するには、変数設定を更新する必要があります。
定数変数は、クエリに含める必要がある複素数値があっても、単一クエリすべてに再入力したくない場合に便利です。例えば、「i-0b6a61efe2ab843gg
」というサーバーパスがある場合、それを「$path_gg
」という変数に置き換えることができます。
一般的なオプションの入力
定数変数の一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで [Constant] (定数) を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。これがデフォルトです。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。
-
[ラベル]– 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
定数オプションの入力
定数変数の定数オプションを入力するには
-
[値] フィールドに変数値を入力します。英数字と記号を入力できます。高度な変数の形式オプションを使用する場合は、ワイルドカードを使用することもできます。詳細については、「高度な変数フォーマットオプション」を参照してください。
-
[値のプレビュー] では、Grafana ワークスペースに現在の変数値が表示されます。これを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
データソース変数の追加
ダッシュボード全体のデータソースをすばやく変更するには、データソース変数を使用できます。データソースのインスタンスが複数ある場合、おそらく異なる環境にある場合に便利です。
一般的なオプションの入力
データソース変数の一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで、[Datasource] を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル]– 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
データソースオプションの入力
データソース変数のデータソースオプションを入力するには
-
[タイプ] リストで、変数のターゲットデータソースを選択します。データソースの詳細については、「データソースに接続する」を参照してください。
-
(オプション) [インスタンス名フィルター] には、変数値のドロップダウンリストからデータソースインスタンスを選択する正規表現フィルターを入力します。このフィールドは空のままにして、すべてのインスタンスを表示します。
-
(オプション) [選択オプション] を入力します。詳細については、「変数選択オプションの入力」を参照してください。
-
[値のプレビュー] には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
間隔変数の追加
間隔変数を使用して、1m
、1h
、1d
などの時間範囲を表します。これらはダッシュボード全体の group-by-time コマンドと考えることができます。間隔変数は、視覚化でのデータのグループ化方法を変更します。また、[自動] オプションを使用して、時間範囲ごとに複数のデータポイントを返すこともできます。
間隔変数を時間 (InfluxDB の場合)、日付ヒストグラム間隔 (OpenSearch の場合) でグループ化するパラメータとして、または要約関数パラメータ (Graphite の場合) として使用できます。
一般的なオプションの入力
間隔変数の一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで [間隔] を選択します。
-
(オプション) [ラベル]には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル]– 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
間隔オプションの入力
間隔変数の間隔オプションを入力するには
-
[値] フィールドに、変数ドロップダウンリストに表示する時間間隔を入力します。次の時間単位に対応しています:
s (seconds)
、m (minutes)
、h (hours)
、d (days)
、w (weeks)
、M (months)
、y (years)
。次のデフォルト値を使用または編集することもできます:1m,10m,30m,1h,6h,12h,1d,7d,14d,30d
。 -
(オプション)
auto
オプションをリストに追加する場合は、[Auto Option] を(自動オプション) オンにします。このオプションを使用して、現在の時間範囲を分割して現在のauto
時間範囲を計算する回数を指定します。オンにすると、さらに次の 2 つのオプションが表示されます。-
[ステップ数] – [最大データポイント]クエリオプションと同様に、現在の時間範囲を分類して値を計算する回数を選択します。例えば、現在の表示時間範囲が 30 分の場合、
auto
間隔はデータを 1 分単位× 30 でグループ化します。デフォルト値は 30 ステップです。 -
[最小間隔] – ステップ数の間隔が時間を分類しない最小しきい値です。引き続き 30 分の例を挙げる場合、最小間隔を
2m
に設定すると、Grafana はデータを 2 分単位× 15 でグループ化します。
-
-
[値のプレビュー] には現在の変数値の一覧が表示されます。これらを確認して、期待どおりであることを確認します。
-
[追加] を選択してダッシュボードに変数を追加します。
間隔変数の例
Graphite 関数でテンプレート変数 myinterval
を使用する例:
summarize($myinterval, sum, false)
より複雑な Graphite の例:
groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5), '$interval', 'sum', false), 2, 'sum')
アドホックフィルターの追加
1 回限りのフィルターまたはアドホックフィルターを使用して、指定されたデータソースを使用するすべてのメトリクスクエリに自動的に追加されるキー/値フィルターを追加できます。他の変数とは異なり、クエリでは 1 回限りのフィルターを使用しません。代わりに、アドホックフィルターを使用して既存のクエリのフィルターを書き込みます。
注記
注: 1 回限り、またはアドホックのフィルター変数は、InfluxDB 、Prometheus、および OpenSearch データソースでのみ機能します。
一般的なオプションの入力
アドホックフィルターの一般的なオプションを入力するには
-
変数を作成するダッシュボードに移動し、ページ上部の [ダッシュボード設定] (歯車) アイコンを選択します。
-
[変数] タブで、[新規] を選択します。
-
変数の名前を入力します。
-
[タイプ] リストで、[Ad hoc filters] (アドホックフィルター) を選択します。
-
(オプション) [ラベル] には、変数ドロップダウンリストの表示名を入力します。表示名を入力しない場合、ドロップダウンラベルは変数名になります。
-
[非表示] オプションを次から選択します。
-
選択なし (空白) – 変数ドロップダウンリストには、変数の名前またはラベル値が表示されます。これがデフォルトです。
-
[ラベル]– 変数ドロップダウンリストには、選択した変数値と下矢印のみが表示されます。
-
[変数] – ダッシュボードには変数ドロップダウンリストが表示されません。
-
オプションの入力
アドホックフィルターのオプションを入力するには
-
[データソース] リストで、ターゲットデータソースを選択します。データソースの詳細については、「データソースに接続する」を参照してください。
-
[追加] を選択してダッシュボードに変数を追加します。
アドホックフィルターの作成
アドホックフィルターは、利用可能な最も複雑で変更可能な変数オプションの 1 つです。変数オプションの通常リストの代わりに、この変数によりダッシュボード全体のアドホッククエリを構築できます。この方法で適用するフィルターは、ダッシュボード上のすべてのパネルに適用されます。
連鎖変数
連鎖変数は、リンクされた変数またはネストされた変数とも呼ばれ、変数クエリ内において 1 つ以上の他の変数を持つクエリ変数です。このセクションでは、連鎖変数がどのように機能するかを説明し、連鎖変数を使用するダッシュボード例へのリンクを共有します。
連鎖変数クエリはデータソースごとに異なりますが、前提はすべて同様です。連鎖変数クエリは、それらをサポートする任意のデータソースで使用できます。
複雑なリンクされたテンプレートダッシュボードを 5 階層または 10 階層深く構築できます。技術的には、どれだけ深く、複雑にできるかに制限はありませんが、リンクが多いほどクエリの負荷が大きくなります。
ベストプラクティスとヒント
以下のプラクティスにより、ダッシュボードと変数の使用が容易になります。
新しい連鎖変数の作成
-
連鎖変数は親子の依存関係を作成します。ラダーまたはツリー構造として想定できます。
-
新しい連鎖変数を作成する最も簡単な方法は、新しい変数の基盤となる変数をコピーすることです。変数リストで、変数エントリの右側にある [Duplicate variable] (変数の複製) アイコンを選択してコピーを作成します。その後、親変数のクエリに追加できます。
-
この方法で作成した新しい連鎖変数は、リストの下部に表示されます。リストに論理的順序を付けるには、変数をリスト内の別の位置にドラッグします。
変数の順序
ダッシュボードの変数リストにある変数の順序を変更するには、各エントリの右側にある上下の矢印を選択します。Grafana ワークスペースは、このリストに従って左から右に変数ドロップダウンリストを一覧表示し、左端のリストの上部に変数を表示します。
-
子変数の前に、親変数と依存関係のない変数のリストを作成します。
-
各変数は、依存している変数に従う必要があります。
-
UI は、依存関係を持つ変数を示しません。変数を論理的な順序で一覧表示して、エンドユーザー (および自分自身) に明確にします。
複雑さに関する考慮事項
変数の依存関係のレイヤーが多いほど、変数を変更した後にダッシュボードを更新するのに時間がかかります。
例えば、4 項目がリンクされた一連の変数 (国、地域、サーバー、メトリック) があり、ルート変数値 (国) を変更する場合、Grafana ワークスペースはダッシュボード内の視覚化を更新する前に、すべての従属変数に対してクエリを実行する必要があります。
グローバル変数
Grafana には、クエリエディタの式で使用できるグローバル組み込み変数があります。このトピックでは、それらをアルファベット順に一覧表示し、定義します。これらの変数は、クエリ、ダッシュボードリンク、パネルリンク、データリンクに役立ちます。
$__dashboard
この変数は、現在のダッシュボードの名前です。
$__from および $__to
Grafana には、「$__from
」と「$__to
」の 2 つの組み込み時間範囲変数があります。これらは現在、デフォルトでは常にエポックミリ秒として補間されていますが、日付の書式設定をユーザーが管理できます。
構文 | 結果の例 | 説明 |
---|---|---|
${__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}
」を使用しても機能します。
この変数は URL でも使用できます。例えば、6 時間前から現在までの時間範囲を示すダッシュボードにエンドユーザーを送信するには、次の URL を使用します。https://play.grafana.org/d/000000012/grafana-play-home?viewPanel=2&orgId=1?from=now-6h&to=now
$__interval
$__interval
変数を時間 (InfluxDB 、Myself、Postgres、MSSQL の場合)、日付ヒストグラム間隔 (OpenSearch の場合) でグループ化するパラメータとして、または[要約]関数パラメータ (Graphite の場合) として使用できます。
Grafana ワークスペースは、クエリで時間別にグループ化するために使用できる間隔を自動的に計算します。グラフに表示されるデータポイントよりも多い場合、クエリはより長い間隔でグループ化することで、より効率的になります。例えば、3 か月分のデータを調べる場合、1 日でグループ化する方が 10 秒でグループ化するよりも効率的です。グラフは同じように見え、クエリは高速になります。$__interval
は、時間範囲とグラフの幅 (ピクセル数) を使用して計算されます。
概算: (from - to) / resolution
例えば、時間範囲が 1 時間でグラフが全画面表示の場合、間隔は 2m
で計算され、ポイントは 2 分間隔でグループ化されます。時間範囲が 6 か月で、グラフが全画面表示の場合、間隔は 1d
(1 日) で、ポイントは日ごとにグループ化されます。
InfluxDB データソースでは、レガシー変数 $interval
は同じ変数です。代わりに $__interval
を使用します。
InfluxDB データソースと OpenSearch データソースには、間隔をハードコード化したり、>
構文 -> Group by time
interval
を使用して $__interval
変数の最小制限を設定したりするために使用される >10m
フィールドがあります。
$__interval_ms
この変数はミリ秒単位の $__interval
変数であり、時間間隔形式の文字列ではありません。例えば、$__interval
が 20m
の場合、$__interval_ms
は 1200000
です。
$__name
この変数は Singlestat パネルでのみ使用でき、[オプション] タブのプレフィックスまたはサフィックスフィールドで使用できます。変数は系列名またはエイリアスに置き換えられます。
$__org
この変数は、現在の組織 ID です。変数 ${__org.name}
は、現在の組織名称です。
$__user
変数 ${__user.id}
は現在のユーザー ID です。変数 ${__user.login}
は、現在のユーザーのログインハンドルです。変数 ${__user.email}
は、現在のユーザーの E メールアドレスです。
$__range
この変数は現在、Prometheus データソースでのみサポートされています。この変数は、現在のダッシュボードの範囲を表します。to - from
で計算されます。ミリ秒は $__range_ms
、秒は $__range_s
で表示されます。
$timeFilter または $__timeFilter
$timeFilter
変数は、現在選択されている時間範囲を式として返します。例えば、時間間隔「Last 7
days
」の式は time > now() - 7d
です。
この変数は、次のようないくつかの場所で使用されます。
-
InfluxDB データソースの WHERE 句。クエリエディタ では、Grafana は InfluxDB クエリに自動的に追加します。テキストエディタモードでは、
WHERE $timeFilter
を手動で追加できます。 -
Log Analytics は、Azure Monitor データソースでクエリを実行します。
-
SQL は、MySQL 、Postgres、MSSQL でクエリを実行します。
-
$__timeFilter
変数は MySQL データソースで使用されます。