変数を使用すると、クエリ内の値を動的に変更できます。変数は、${{variable_name|default_value}} または ${{variable_name|default_value|prefix}} という構文をプレースホルダーとして使用します。変数を定義することで、基になるクエリ文を変更することなく、単一のチャートまたはダッシュボード全体のデータをフィルタリングできます。このトピックでは、ダッシュボード全体と個々のチャートをフィルタリングする方法について説明します。
ダッシュボードのフィルタリング
フィルタータイプ
各チャートはクエリ文に基づいています。ダッシュボードにフィルターを追加して、すべてのチャートのクエリ条件を同時に変更できます。これにより、ダッシュボード全体に表示されるデータを絞り込むことができます。Simple Log Service (SLS) は、次のフィルタータイプをサポートしています。
-
フィルター:ログフィールドの
key:valueペアに基づいてデータをフィルタリングします。このフィルターは、特定のキーと値のペアを含む、または含まないログを検索することで、クエリの結果を絞り込みます。たとえば、さまざまなリクエストメソッドのページビュー (PV) を表示するには、動的リスト項目を持つフィルターを追加できます。 -
変数置換:クエリ文内のプレースホルダーを、ユーザーが選択した値に置き換えます。まず、チャートのクエリ文に変数を追加します。次に、その変数に値を提供するフィルターを作成します。これにより、クエリを直接編集することなく、動的に変更できます。たとえば、10 秒、60 秒、600 秒ごとなど、さまざまな時間間隔で PV を表示するために使用できます。
-
メトリックフィルター:メトリックラベルと値に基づいて時系列データをフィルタリングします。メトリックデータを収集した後、ダッシュボードにメトリックフィルターを追加できます。複数の条件を指定でき、それらは論理 AND 演算で結合されます。
標準フィルター
変数置換フィルター
メトリックフィルター
変数置換によるチャートのフィルタリング
[変数置換] を単一のチャートに適用できます。SLS はチャートの左上隅にフィルターを追加し、そのデータを独立してフィルタリングできるようにします。次の例は、異なる時間間隔で PV を表示するようにテーブルを設定する方法を示しています。
1. 変数置換の設定
-
チャート編集ページで、時間範囲、Logstore、および変数を含むクエリ文を設定します。
異なる時間間隔でページビュー (PV) を表示するためのクエリ文は次のとおりです。ここで、
${{date|60}}は、デフォルト値が 60 の変数dateを設定します。* | select __time__ - __time__ % ${{date | 60}} as time, COUNT(*) as pv, avg(request_time) as duration, request_method GROUP BY time, request_method order by time limit 1000
-
変数置換の設定を行います。
-
チャート編集ページの右側で、チャートタイプとして [テーブル] を選択し、 をクリックします。

-
[変数置換] ダイアログボックスで、[変数キー] を
dateに、[表示名] をTimeに設定します。次に、値を定義します。たとえば、[表示名] の値がminとhourで、対応する変数値が60と3600の 2 つのオプションを作成します。
-
-
ページの右上隅で [OK] をクリックします。次に、[保存] をクリックします。[ダッシュボードを保存] ダイアログボックスで、[確認] をクリックします。
2. チャートのフィルタリング
設定を保存すると、チャートの左上隅にフィルターが表示されます。値を選択すると、SLS は新しい値でクエリを実行します。たとえば、[hour] を選択した場合、実行されるクエリは次のようになります。
(*)| select __time__ - __time__ % 3600 as time, COUNT(*) as pv, avg(request_time) as duration, request_method GROUP BY time, request_method order by time limit 1000

インタラクションイベントでの変数の使用
チャートに [インタラクションイベント] を設定する際に、変数を設定できます。イベントをトリガーするチャート上の値をクリックすると、変数は自動的にその値に更新されます。これにより、チャートをリンクしてさらなる分析を行うことができます。例については、「設定例」をご参照ください。

プレフィックス付き変数の高度な使用法
ダッシュボードまたはチャートをフィルタリングする際に、${{variable_name|default_value|prefix}} 構文を使用してプレフィックスを含めることができます。
-
変数の値が選択されていない場合、クエリはデフォルト値を使用します。
-
値が選択されている場合、クエリはプレフィックスと選択された値を結合します。
HTTP メソッド (http_method) によるダッシュボードのフィルタリング
変数フォーマット
-
変数フォーマット:
${{method_filter|http_method in ('GET','POST')|http_method =}} -
クエリ文:
(*)|select status, count(1) as err_count where ${{method_filter|request_method in ('GET','POST')|request_method =}} and status>=400 group by status-
変数値が設定されていない場合:クエリは、状態コードが 400 以上の GET および POST リクエストのエラーディストリビューションを計算します。実行されるクエリ文は次のとおりです。
(*)|select status, count(1) as err_count where request_method in ('GET','POST') and status>=400 group by status -
変数値が
'DELETE'に設定されている場合:クエリはDELETEメソッドのエラーステータスを分析します。実行されるクエリは次のとおりです。(*)| select status, count(1) as err_count where request_method ='DELETE' and status>=400 group by status
-
手順
-
チャートの設定:ページの左側で、時間範囲、Logstore、および変数を含むクエリ文を設定します。右側で、チャートタイプを選択します。[適用] をクリックしてチャートをプレビューし、[OK] をクリックして保存します。

-
変数フィルターの設定:[フィルター] パネルで、次の図に示すように、
method_filter変数の選択可能な値を追加します。
-
ダッシュボードのフィルタリング:フィルターをクリックし、
DELETEを選択します。ダッシュボードは次のクエリ文に基づいて更新されます:(*)| select status, count(1) as err_count where request_method ='DELETE' and status>=400 group by status
request_time しきい値によるチャートのフィルタリング
変数フォーマット
-
変数フォーマット:
${{slow_query|request_time>50|request_time>}} -
クエリ文:
(*)| select request_uri, avg(request_time) as avg_time where ${{slow_query|request_time>50|request_time>}} group by request_uri order by avg_time desc-
変数値が設定されていない場合:クエリは、リクエスト時間が 50 ミリ秒を超える API をフィルタリングし、平均リクエスト時間の降順でソートします。実行されるクエリ文は次のとおりです。
(*)| select request_uri, avg(request_time) as avg_time where request_time>50 group by request_uri order by avg_time desc -
変数値が
1000msに設定されている場合:クエリは、1,000 ミリ秒以上かかる遅い API を分析します。実行されるクエリは次のとおりです:(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time desc
-
手順
-
チャートの設定:チャート編集ページで、時間範囲、Logstore、および変数を含むクエリ文を設定します。

-
変数置換の設定:チャート編集ページの右側で、[変数置換] をクリックします。[変数置換] ダイアログボックスで、次の図に示すように、
slow_query変数の選択可能な値を追加します。
-
チャートのフィルタリング:チャートの左上隅にあるフィルターをクリックします。
1000msを選択すると、チャートは次のクエリを使用して統計を表示します:(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time desc







