- 別のダッシュボード。たとえばサービスごとの詳細ダッシュボードのように、その項目だけに絞って確認するための表示です。
- その行の背後にあるログまたはトレースを確認できる、Search の 元のイベント。
専用ダッシュボードでサービスを調査する
Service Detail ダッシュボードを組み合わせます。
詳細ダッシュボードを作成する
Service Detail という名前のダッシュボードを作成し、トレース ログソースに対して、式 ServiceName のカスタムフィルターを追加します。このダッシュボードレベルのフィルターにより、すべてのタイルが単一のサービスに絞り込まれるため、各タイルのクエリにサービス名をハードコードする必要はありません。必要なサービス別ビューを追加します。たとえば、RED の主要指標 (requests、errors、P95 duration) 、レイテンシのパーセンタイルチャート (P50、P95、P99) 、時間ごとのリクエスト率、SpanName でグループ化したエンドポイントごとの内訳などです。次の手順で対象として選択できるよう、まずこのダッシュボードを保存します。サービス一覧を作成する
概要ダッシュボードで、トレース ログソースにServiceName でグループ化した Table タイルを追加します。各サービスを評価するための RED のカラムを追加し、それぞれをエイリアス付きのシリーズにします。Requests: span 数 (rate) 。Errors: error status の span 数。P95 Duration:Durationの95パーセンタイル。カラムの数値フォーマットを duration に設定し、生のナノ秒ではなく288msのように表示されるようにします。
Requests の降順で並べ替え、最もトラフィックの多いサービスが上位に来るようにします。このテーブルがカタログとなり、各サービスが1行ずつ RED で評価されます。行クリックを設定する
一覧テーブルで Row Click Action を開き、Dashboard を選択して、ダッシュボード一覧からService Detail を選びます。ダッシュボードを直接選ぶと、ID で固定されます。これにより、後でダッシュボード名を変更してもリンクは機能し続け、ダッシュボードをエクスポート/インポートしても維持されます。 (行ごとに別のダッシュボードを選ぶ場合のみ Template オプションを使います。行クリックアクションを設定するを参照してください。)Service Detail では ServiceName のカスタムフィルターを定義しているため、ドロワーにはその式に対応する空のフィルターがあらかじめ表示されます。そのテンプレートを入力します。- Expression:
ServiceName(入力済み) - Template:
{{ServiceName}}
ServiceName フィルターに渡されます。行をクリックする
行にホバーすると、テーブル右端にリンク用の操作要素が表示され、操作内容を示すヒント (Open dashboard "Service Detail") が表示されます。行をクリックすると、Service フィルターがクリックした値に設定された状態で Service Detail ダッシュボードが開き、すべてのタイル (RED の主要指標、レイテンシのパーセンタイル、エンドポイントごとの内訳) が、その1つのサービスに絞り込まれます。サービスからそのトレースに移動する
行クリックの遷移先を Search に設定する
一覧テーブルで Row Click Action を開き、Search を選択します。トレースソースを選択します (表示されるのはログソースとトレースソースのみです) 。フィルターを 1 つ追加します。- Expression:
ServiceName - Template:
{{ServiceName}}
行をクリックする
これでサービスの行をクリックすると、そのトレースソースの Search ページが開き、ServiceName = <service> で絞り込まれるため、同じ時間範囲内でそのサービスの span だけを表示できます。ServiceName ではなく操作 (SpanName) や endpoint 属性でグループ化し、そのカラムからフィルターをテンプレート化すれば、各行のクリックでその操作または endpoint に対応するイベントを開けます。map 属性での group-by については、Validation and limitations の alias に関する注記を参照してください。
行クリックアクションを設定する
Row Click Action: Default、Row Click Action: Search、Row Click Action: Dashboard。クリックするとドロワーが開きます。
このドロワーでは 3 つのアクションを選択できます。
- Default: 組み込みの動作です。行をクリックすると、その行の group-by カラムの値と選択した時間範囲でフィルタされた Search ページが開きます。カスタムアクションを設定していない場合はこの動作になります。
- Search: 選択したログソースの Search ページにクリック先を送ります。
- Dashboard: チームが所有する別のダッシュボードにクリック先を送ります。
- Destination: 特定のログソースまたはダッシュボードを選ぶか、Template を選んで、利用可能なログソースまたはダッシュボード名に一致する Handlebars テンプレートを入力します。特定の宛先を選ぶと、その ID に固定されます。単一の固定宛先にはこちらを推奨します。リネームやダッシュボードのエクスポート / インポート後も維持され、ダッシュボードの場合は宛先で宣言済みのフィルタも事前入力されます。行ごとに宛先を変えたい場合は Template を使い、行のカラムを参照して選択します (例:
Errors-{{ServiceName}}) 。 - Filters: Add filter をクリックし、Expression (宛先側のカラムまたは式。例:
ServiceName) と、その値の Template (例:{{ServiceName}}) を指定します。テンプレートでは、クリックした行のカラムを{{columnName}}で参照します (利用できるカラムについては下の注記を参照してください) 。各フィルタは宛先でexpression IN (value)条件として展開され、同じ式を共有するフィルタはマージされます。宛先がダッシュボードの場合、そのダッシュボードで宣言済みの各フィルタについて、ドロワーに空のフィルタが 1 つずつ事前入力されるため、テンプレートだけを埋めれば済みます。 - WHERE (任意) : 上記のフィルタごとの条件に加えて、宛先のグローバルフィルタに展開される Handlebars テンプレートです。宛先で正しく解析されるよう、query language を SQL または Lucene に設定してください。たとえば、SQL テンプレート
ServiceName = '{{ServiceName}}'を使うと、クリックした行の service に宛先を絞り込めます。
テンプレートはテーブルのカラムを参照します
{{...}} テンプレートは、テーブルタイル自身のカラム、つまり group-by カラムと、各 series をその名前または alias で、テーブルに表示されているとおりに参照して解決されます。テーブルが選択していない基盤ログソースのカラムは参照できません。クリックで値を引き継ぐには、その値がテーブル内のカラムである必要があります。そのため、ServiceName はテーブルの group-by カラムなので {{ServiceName}} は機能し、alias が付いたカラムはその alias で参照します。テーブルに存在しない名前を参照すると、クリックは Row has no column '<name>' で失敗します。宛先とフィルターがどのように解決されるか
- 宛先。 特定のログソースまたはダッシュボードを選択すると、その ID に固定されます。Template ターゲットは、クリックされた行に対してレンダリングされた後、チームのログソースまたはダッシュボードと名前で照合されます。解決するには、名前が一意である必要があります。2 つのログソースまたは 2 つのダッシュボードでレンダリング後の名前が同じ場合、リンクはそのどちらか 1 つに解決できません。レンダリング後の名前が空の場合や、一致する名前がない場合も解決に失敗します。
- フィルター。 各フィルターテンプレートはその行に対してレンダリングされ、宛先では
expression IN (value)条件になります。Searchアクションでは、選択したログソースにスコープされた/searchが開き、Dashboardアクションではそのダッシュボードが開きます。どちらの場合も、クリックされた行の時間範囲が引き継がれます。
ダッシュボードを宛先にする場合は、一致するフィルターの宣言が必要ですダッシュボードに引き継がれたフィルターが有効になるのは、宛先ダッシュボードで、そのフィルターの Expression と一致するトップレベルの custom filter が宣言されている場合に限られます。一致する宣言済みフィルターがない場合、その値はクリック時に破棄され、その式についてはフィルター未適用のまま宛先が開きます。これが、ダッシュボードモードで宛先に宣言済みのフィルターが事前入力される理由です。式が一致すると、宛先のドロップダウンにはクリックされた行の値が自動入力されます。
検証と制限事項
- テーブルタイルのみ。 Row Click Action ボタンはテーブルタイルでのみ表示され、チャートビルダーのテーブルと SQL ベースのテーブルの両方で利用できます。その他のタイルタイプでは行クリックアクションは使用できません。
- Search の対象はログソースまたはトレースソースである必要があります。 Metric ソースとセッションソースは Search ページで表示できないため、対象として選択できません。
- Template 名は一意である必要があります。 Template のターゲットは名前で解決されるため、同じ名前の 2 つのソース、または 2 つのダッシュボードを Template ターゲットとして使うことはできません。
- ダッシュボードターゲットでは、引き継いだ値を有効にするには一致する宣言済みフィルター が必要です (上記の注記を参照) 。
- 式による group-by カラムにはエイリアスが必要です。
SpanAttributes['http.route']のような式で group-by すると、結果のカラム名がそのまま生の式になるため、Template から参照しづらくなります。チャートビルダーでカラムにエイリアスを付けてください。Group By 入力で式の後ろにAS <alias>を追加し (たとえばSpanAttributes['http.route'] AS Route) 、Template では{{Route}}を参照します。集計 series も同様に Alias フィールドの値をエイリアスとして使います。ServiceNameのような通常のカラムで group-by する場合は、すでに分かりやすい名前になっているためエイリアスは不要です。