変数を使用すると、元のクエリステートメントを変更せずに、個々のチャートまたはダッシュボード全体をフィルターできます。変数は、 ${{variable_name|default_value}} または ${{variable_name|default_value|prefix}} の構文を使用して、クエリステートメント内のプレースホルダーを動的に調整します。ダッシュボード全体、または単一のチャート内でデータをフィルターできます。
ダッシュボード全体のフィルタリング
フィルタータイプ
各チャートはクエリ文で動作します。フィルターは、ダッシュボード上のすべてのチャートに対してクエリ条件を変更するか、プレースホルダー変数を置き換えます。Simple Log Service (SLS) は、3 種類のフィルターをサポートしています。
-
フィルター: ログフィールドのキーと値のペアを使用してデータを絞り込みます。クエリ結果から、特定の
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クエリを実行した後、 [Logstore] を [website_log] に設定し、時間範囲を [15 Minutes(Relative)] に設定します。 クエリ結果には、時間とリクエストメソッドでグループ化された PV と平均リクエスト時間がテーブルに表示されます。
-
変数置換を設定します。
-
グラフ編集ページの右側で、グラフタイプとしてテーブルを選択し、 をクリックします。
-
「変数置換」ダイアログボックスで、変数キー を date に、表示名 を time に設定します。変数値については、表示名 を min と hour に、対応する置換値をそれぞれ 60 と 3600 に設定します。
-
-
ページの右上隅で、OK をクリックします。次に、保存 をクリックします。ダッシュボードの保存 ダイアログボックスで、確認 をクリックします。
ステップ 2:チャートをフィルタリングする
設定を保存すると、チャートの左上にフィルターが表示されます。フィルターから値を選択すると、 SLS は新しい値でクエリを再実行します。たとえば、[hour] を選択した場合、 SLS は次のクエリ文を実行します。
* | 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
インタラクションイベントでの変数の使用
チャートに インタラクションの発生 を設定する際に、変数を定義することもできます。インタラクションをトリガーすると、システムはそのインタラクションの値で変数を自動的に更新します。これにより、ドリルダウン分析のためにチャートが動的に連携されます。詳細については、「設定例」をご参照ください。
[Logstoreを開く] 設定ウィンドウで、website_log などの対象 Logstore を選択します。 [フィルタークエリ] 入力ボックスで、[変数の追加] をクリックして変数を参照します。 たとえば、クエリ * | SELECT date_format(__time__ - __time__ % 60, '%H:%i:%s') as "${time}" では、${time} は、インタラクションイベントで定義した変数です。
高度な使用法:プレフィックス付きの変数の使用
変数にプレフィックスを含めることで、フィルタリングを強化できます。構文は ${{variable_name|default_value|prefix}} です。
-
変数に値が選択されていない場合、クエリはデフォルト値を使用して実行されます。
-
値が選択されている場合、クエリはプレフィックスと選択された値を結合します。
ダッシュボードのフィルタリング:HTTP メソッドによるフィルタリング
変数
-
変数形式:
${{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-
値が選択されていない場合: デフォルトでは、クエリは GET および POST リクエストのエラー分布 (ステータスコード 400 以上) を分析します。有効なクエリは次のとおりです:
(*)|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 をクリックして保存します。
クエリ文の例は
* | select status, count(1) as err_count where ${{method_filter|request_method in ('GET','POST')|request_method =}} and status>=400 group by statusです。ここで、${{method_filter|...|...}}は変数の構文です。データソースを website_log に設定します。 -
変数フィルターを設定します。[フィルター] パネルで、
method_filter変数用のドロップダウンリストに値を追加します。[タイプ] を [変数置換] に設定します。[静的リスト項目] セクションで、
'GET'、'POST'、'PUT'、'DELETE'を追加します。次に、[OK] をクリックします。 -
ダッシュボードをフィルターします。フィルターをクリックして
'DELETE'を選択します。 ダッシュボードが更新され、(*)| select status, count(1) as err_count where request_method ='DELETE' and status>=400 group by statusクエリステートメントに基づいて統計が表示されます。
チャートのフィルタリング:リクエスト時間のしきい値によるフィルタリング
変数
-
変数の形式:
${{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 ms を超える API を検索し、平均時間で降順にソートします。有効なクエリは次のとおりです:
(*)| select request_uri, avg(request_time) as avg_time where request_time>50 group by request_uri order by avg_time desc -
もし
[1000]が選択された場合:クエリは、1,000 ms を超える低速 API を分析するように調整されます。有効なクエリは次のとおりです:(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time desc
-
操作手順
-
チャートを設定します。チャート編集ページで、時間範囲、Logstore、および変数を含むクエリ文を設定します。
右側で、チャートタイプに [テーブル] を選択します。左下のパネルで、変数を含めてクエリ文を編集します。右側の [変数置換] セクションで、変数キーと表示名を設定します。完了したら、[OK] をクリックします。
-
変数置換の設定。 グラフ編集ページの右側で、[変数置換] をクリックします。変数置換 ダイアログボックスで、
slow_query変数の値を追加します。変数値のリストに、次の項目を追加します:表示名 50 ms (置換値
50、デフォルトとして設定)、100 ms (置換値100)、200 ms (置換値200)、300 ms (置換値300)、400 ms (置換値400)、500 ms (置換値500)、および 1000 ms (置換値1000)。次に、[OK] をクリックします。 -
チャートをフィルタリングします。
1000ms(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time descチャートの左上隅にあるフィルターをクリックします。 を選択すると、チャートが更新され、 クエリ文に基づいて統計が表示されます。


