変数の作成と管理

IBM® Cloud Logs では、変数はクエリーで使われる値のプレースホルダーである。 カスタムダッシュボードで使用すると、ダッシュボードのクエリが更新され、その値のデータが表示されます。

変数はダッシュボードをよりインタラクティブでダイナミックなものにする。 サーバー、アプリケーション、センサーの特定の名前をクエリーに入れる代わりに、変数を使うことができます。 異なるデータ・ビューを簡単に切り替えることができる。 つまり、複雑でカーディナリティの高いメトリクスがある場合、変数を追加して、気になる特定の値にズーム・インすることができます。 変数は、変数のソース・タイプに関係なく、すべてのデータ・タイプについてウィジェット全体で使用できます。

変数型

さまざまな変数タイプから選ぶことができる。

静的値変数
数値やカンマで区切られた数値の文字列など、固定された変数値のリストを手動で定義することができる。 例えば、変更されることのない国名がある場合、データソースのクエリ変数ではなく、静的な値の変数として作成するとよいでしょう。
クエリー変数
変数値は、ログまたはメトリクス・データ・ソース・クエリから取得されます。 例えば、クエリー変数は、サーバー名、センサーID、またはデータセンターのリストを生成し、データソースクエリーを使用してオプションをフェッチすることによって値を動的に更新することができる。 クエリ変数は、複数のデータ・ソース・インスタンスを管理する場合、特に多様な環境にまたがって管理する場合に有益である。

カスタムダッシュボード用の変数の定義

  1. IBM Cloud アカウントにログインしてください。

  2. IBM Cloud Logs インスタンスにアクセスする

  3. ダッシュボードアイコン ダッシュボードアイコン ダッシュボード > カスタムダッシュボードをクリックします。

  4. 新規または既存のダッシュボードで、 Managed Variable アイコンをクリックします。 { }.

  5. クリック +変数。

  6. すべての変数タイプについて、以下のフィールドを設定する:

    • 変数タイプ。

    • 変数名。 このフィールドに入力されたテキストによって、クエリ内で変数名がどのように表示されるかが決まります。例えば、 {{ podvalues }}。 変数名に大文字やスペースは使用できない。

    • 表示名(オプション)。 このフィールドに入力されたテキストは、ドロップダウンリストの一部として選択項目に表示されます。

    • 選択オプション。

      複数値
      Multi-valueは、ユーザーが特定の変数内の複数の値を選択できることを指定します。 {{ variablename }} のように、複数の値をサポートしないクエリもあります。 クエリが複数の値をサポートする場合にのみ、このオプションを選択してください。
      すべてを含む
      複数値オプションが有効な場合、 すべてを含めるを選択できる。 このクエリは、特定の時間枠で利用可能な、そして将来のすべての値を選択します。 両方のオプションが選択されている場合、すべての変数オプションがデフォルトで選択され、1つ以上を選択解除することができる。 どちらのオプションも指定されていない場合は、一度に1つの変数値を選択できる。
  7. query 変数の場合:

    • クエリ・ソースを指定する(logs または metrics )。

    • variable type の場合は values を、 logs の場合は を指定してください。 metrics には metric names、 metric labels、 label values を指定する。 metric labels を選択した場合は、表示値に使用するラベルを選択します。

    • logs の場合、照会したいログキーを選択してフィールドを定義する。 現在の変数値のリストは、 値プレビューに英数字順に表示されます。

    • metrics の場合、 Metrics regex に正規表現を入力して、表示させたいメトリクスのリストを取得します。 たとえば、 ^kube(.*) は、kube で始まるすべてのメトリック名を返します。

      • label values, メトリックラベルの場合、表示される値のラベルを選択します。 例えば Pod Name = {{ pod }} のように、変数を挿入してラベルをダイナミックにする。

      • label valuesラベル・フィルターでは、1つ以上のネストされた変数と、クエリーの追加フィルター・レイヤーを作成します。 例えば、 {{ podvalue }} またはハードコードされたクラスタ名を選択することで、クラスタ別にラベルをフィルタリングすることができます。

      • metrics の場合、「 変数値表示名 」で、ドロップダウン選択リストでの値の表示方法を定義する。

        フィールドの現在の変数値のリストが値プレビューに表示されます。

    • 値の並べ替えでは、 値のプレビューでデータを並べ替える方法を選択します。

  8. 保存 をクリックします。

変数は、定義された変数のリストから編集または削除することもできます。

照会での変数の使用

カスタムダッシュボードでの変数の使用に加えて、定義された変数を Lucene、 DataPrime,、 PromQL クエリで使用できます。

Lucene クエリ

定義された変数を Lucene クエリで使用できます。 例えば、 product_id:{{ pid }}。 pid は変数名(表示名ではない)、

DataPrime クエリ

変数が作成された後、 $p.<variable_name> を使用することで、 DataPrime クエリのクエリパラメータとして、ユーザが選択した変数値を使用することができます。

PromQL クエリ

クエリー言語 PromQL で {{ variable_name }}。

たとえば、 PromQL クエリ sum(kube_pod_owner{pod=~"{{ pod }}"}) は、 Kubernetes ポッドに関連するメトリックを集約するために使用されます。 {pod=~"{{ pod }}"} は、 kube_pod_owner メトリックを、変数名と値が一致する特定のポッドに対してフィルタリングするラベル・セレクタです。 {{ pod }} プレースホルダはテンプレート変数で、クエリ実行時に実際のポッド名に置き換わります。

PromQL クエリーで定義済みの変数を使用することもできます。

定義済みの PromQL 変数
変数 説明 例
${__range} この変数はダッシュボードの時間範囲の長さを表す。 PromQL でサポートされている区間文字列としてレンダリングされる。 例えば、 13.00 から 14.30 までの時間範囲を選択した場合、 ${__range} 変数は 90m として計算される。 1d, 5m
${__range_s} 選択された時間枠内の秒数として計算される。 60s, 180s
${__range_ms} 選択した時間枠内のミリ秒数として計算される。 60ms, 180ms

例えば、 sum_over_time で __range variable を使うかもしれない。

sum_over_time(kube_pod_owner[${__range}])