概要
ダッシュボードは、複数のソースからデータを収集し、そのデータを視覚化として表示します。
ダッシュボードをモニター通知に関連付けたり、キーとなる技術指標やビジネス指標を観察するためにスクリーンボードとして使用したり、ランブックで参照してコンテキストを追加したりできます。ダッシュボードを使用すると、インタラクションだけでなく、プラットフォームの現在の状態のスナップショットを見ることができるため、問題を先取りして、専門ページでより深く分析することができます。
以下のビデオは、Web アプリケーションの概要ダッシュボードを見るユーザーを想定しています。ユーザーは、技術的なメトリクスでスパイクを特定し、詳細を確認するためにズームインし、根本的な原因をチェックするために基礎となるホストダッシュボードにアクセスします。
このガイドでは、ダッシュボードにおけるコンテキストリンクを紹介し、以下の内容について説明します。
- コンテキストリンクの仕組みと、それを正確なニーズに適合させる方法。
- Example use cases of the context links configuration.
Introduction to context links
コンテキストリンクは、ダッシュボードウィジェットと Datadog の他のページ、およびワークフローに統合したサードパーティアプリケーションとの橋渡しをします。
ダッシュボードの編集権限を持つユーザーは、リンク一覧でアクセスできるリンクを構成することができます。
デフォルトのコンテキストリンク
デフォルトでは、ウィジェットメニューには、ホスト、トレース、ログへのリンクと、ウィジェットのデータソースに対応するリンクが表示されます。たとえば、ウィジェットが RUM データを使用している場合、メニューには RUM エクスプローラーへのリンクが表示されます。ドロップダウンメニューの他のリンクを表示するには、More Related Data Actions をクリックします。
このウィジェットには、以下のページへのリンクが含まれています。
該当する場合、コンテキストリンクは以下を埋め込みます。
- ウィジェットフィルターとテンプレート変数 (もしあれば) を組み合わせたフィルターで、grouped-by クエリの場合、ユーザーがクリックするシリーズ。
- 時間範囲。時系列とヒートマップウィジェットでは、時間範囲はデータポイントの時間バケットに対応します。他のウィジェットでは、時間範囲はウィジェット全体の時間範囲となります。
コンテキストリンクのカスタマイズ
一般的なウィジェットの場合、編集モードに入り、Context Links セクションにアクセスします。独自のコンテキストリンクを作成したり、デフォルトのリンクをオーバーライドしたり、リンクを表示または非表示にすることができます。
カスタムリンクを定義したり、デフォルトリンクをオーバーライドするには、Label フィールドにリンク名を、URL フィールドにリンクパスを指定します。Key-value ヘルパーを使用するには、+ Add URL Parameter をクリックします。
Context Links variables
コンテキストリンクで利用可能な変数タイプは以下の通りです。
- 時間範囲変数
{{timestamp_start}}
と {{timestamp_end}}
。これらの変数は、ウィジェットの時間範囲に対応します。 - クエリ変数 (上記の例では
{@MerchantTier}
と {@MerchantTier.value}}
)。これらの変数は、グループ化されたクエリを持つウィジェットのためのもので、ユーザーがクリックした特定のグループを識別します。 - ダッシュボードテンプレート変数 (上記の例では
{$env}}
と {$env.value}}
)。これらの変数は、ユーザーがクリックしたときに、テンプレート変数に使用される現在の値を識別します。 {{tags}}
、上記のすべての変数のデフォルトの組み合わせです。
{{something}}
と {{something.value}}
のどちらかを選ばなければならないとき:
{{something}}
は、そのキーにプレフィックスを付けた値を返します。例えば、env:prod
です。{{something.value}}
は生の値を返します。例えば、prod
です。- 複数の変数を構成するユースケース例を参照してください。
この例では、View in Acme をクリックすると、リンク先がhttps://prod.acme.io/search?what=basic&when=1643021787564
になります。
コンテキストリンク:
{{env.value}}
を prod
に置き換えます{{@MerchantTier.value}}
を basic
に置き換えます- そして、
{{timestamp_end}}
を 1643021787564
に置き換えます。
コピーアンドペーストによるコンテキストリンクのブートストラップ
多種多様なパラメーターをエンコードする複雑なコンテキストリンクの場合、URL 全体を URL フィールドにコピーアンドペーストして構成をブートストラップし、そこから変数を作り直した方が便利な場合があります。
URL エンコーディング
Datadog は、コンテキストリンクの URL エンコーディングを処理します。
上記の例では、クエリパラメーターに status:error source:nginx {{@shopist.webstore.merchant.tier}}
を指定してリンクを表示しています。ここで、{{@shopist.webstore.merchant.tier}}
は @shopist.webstore.merchant.tier:basic
として解釈されます。そして、完全なクエリパラメーターは &query=status%3Aerror%20source%3Anginx%20%40shopist.webstore.merchant.tier%3Abasic
に変換されます。
使用例
このセクションでは、コンテキストリンクを活用して、ダッシュボードをワークフローに統合する方法を示す例を紹介します。
ダッシュボードからカスタマーサポートソリューションへのリンク
次の例では、ダッシュボード内のユーザーから、対応する Zendesk ユーザーページへのリンクを作成する方法を説明します。
コンテキスト
Datadog を使用して、マーチャントサイトを監視しています。カスタマーサポートチームは、フロントエンドとセキュリティチームが設定したダッシュボードを使用して、最も関与している顧客や問題のある経験を持つ顧客を積極的に特定し、場合によっては彼らに連絡することができます。
このトラブルシューティングのワークフローを加速するために、カスタマーサポートチームは、ダッシュボードとサポートソリューション (例: Zendesk) の間の直接接続を希望しています。
アプローチ
Datadog でプラットフォーム全体のログに記録されたユーザーを追跡する主要な ID は、いくつかのダッシュボードウィジェットに表示されるファセットであるユーザーのメールアドレスです。
ユーザーを検索するための典型的な Zendesk のリンクは https://acme.zendesk.com/agent/search/1?type=user&q=email%3Ashane%40doe.com
で、ユーザーのメールアドレスが検索パラメーターになります。
URL に変数を追加すると、テンプレートリンクが https://acme.zendesk.com/agent/search/1?type=user&q=email:{{@usr.email.value}}
になります。
結果
カスタマーサポートチームのダッシュボードウィジェットには、適切なコンテキストを持つカスタマーサポートプラットフォームに移動するためのコンテキストリンクが含まれています。
Zendesk User Page のリンクをクリックすると、Zendesk のこのユーザーのページが表示されます。
ダッシュボードから AWS コンソールへのリンク
次の例では、ダッシュボードウィジェットのホストから、AWS コンソールの対応する Amazon EC2 インスタンスページへのリンクを作成する方法を説明します。
コンテキスト
プラットフォームは Amazon EC2 インスタンスでホストされており、プラットフォームのスケールアップおよびスケールダウンの手順は、ほとんど手作業です。
Datadog のダッシュボードには、インフラストラクチャーの主要なヘルスメトリクスが集約されています。
この運用ワークフローを加速するために、このダッシュボードと AWS コンソールを直接接続したいと考えます。例えば、t2.micro
から t2.large
にアップグレードするためです。
アプローチ
典型的な Amazon EC2 インスタンスの概要リンクは https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#InstanceDetails:instanceId=i-04b737b9f8bf94a94
です。
eu-west-3
: サブドメインと URL のパラメーターとして表示される、データセンターのリージョン。i-04b737b9f8bf94a94
: ハッシュパラメーターとして表示されるホスト ID。
プラットフォームが 1 つのリージョンでしか動作していない場合は、コンテキストリンクのテンプレートにホスト ID を注入して、https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#InstanceDetails:instanceId={{host.value}}
となるようにします。
プラットフォームが複数のリージョンで動作している場合、ウィジェットの構成は以下に依存します。
- リージョンがクエリ集計の一部である場合 (例えば、以下のスクリーンショット)、テンプレートリンクは
https://{{region.value}}.console.aws.amazon.com/ec2/v2/home?region={{region.value}}#InstanceDetails:instanceId={{host.value}}
で、ここで {{region.value}}
は query 変数です。
- If the region is part of the query aggregation (for example, in the screenshot below), the templated link is
https://{{$region.value}}.console.aws.amazon.com/ec2/v2/home?region={{$region.value}}#InstanceDetails:instanceId={{host.value}}
, where {{region.value}}
is a template variable.
結果
ダッシュボードウィジェットには、AWS コンソールの適切なホストに移動するためのリンクが含まれています。
Amazon EC2 Instance Summary のリンクをクリックすると、AWS コンソールの Amazon EC2 インスタンスページに移動します。
ダッシュボードから Datadog の保存ビューとリマップされた属性へのリンク
次の例では、ダッシュボードウィジェットの RUM イベントから対応するログへのリンクを作成する方法を説明します。
コンテキスト
Datadog で企業サイトを監視しています。RUM でユーザーを把握し、Logs でより技術的な観点から API Gateways の監視を行うことがあります。
フロントエンドエンジニアは通常、RUM の概要情報を表示するダッシュボードを使用します。API Gateways チームは、ログエクスプローラーの保存ビューを維持します。これは、フロントエンドモニタリングチームが自分たちに関連する情報を監視するために信頼する、微調整された視点です。
このトラブルシューティングのワークフローを加速するために、フロントエンドのモニタリングチームは、ダッシュボードの現在のコンテキストで保存ビューにアクセスしたいと考えています。
保存ビューへのアプローチ
保存ビューは、ログエクスプローラーのデフォルトのクエリ、視覚化、および構成オプションを定義します。典型的な保存ビューのリンクは https://app.datadoghq.com/logs?saved_view=305130
で、これは内部でログエクスプローラーの URL をエンコードしています。
保存ビューのショートリンクを追加して、結果のログエクスプローラー URL の任意のパラメーターをオーバーライドすることができます。
例えば、https://app.datadoghq.com/logs?saved_view=305130&query=@source:nginx @network.client.ip:123.123.12.1
とすると、保存ビューを最初に開いたようにログエクスプローラーに移動しますが、デフォルトのクエリフィルターは @source:nginx @network.client.ip:123.123.12.1
に置き換えられます。
属性のリマップへのアプローチ
ウェブサイトでのナビゲーションが匿名の場合、ユーザーを特定するために IP アドレスをプロキシとして使用する場合があります。
You would like to identify the @session.ip
attribute from your RUM events with the @network.client.ip
attribute from your logs. The two attributes have different names because they generally have different meanings, but in this context of authentication logs, you can identify both.
そのためには、@network.client.ip
を元にしたフィルターに @session.ip
を注入し、適切なフィルター @network.client.ip:{{@session.ip.value}}
を構築します。
セッション IP ごと、および特定の国ごとのインサイトを表示する RUM ダッシュボードウィジェットについては、このリンクの構成に従います。
結果
API Gateways チームは、受信ログの最新の更新を考慮して保存ビューを更新するため、コンテキストリンクは最新の状態に保たれます。
IP アドレスをリマップすることで、RUM イベントと対応するログをつなぐコンテキストリンクが作成されます。
複数の変数の構成
次の例では、コンテキストリンククエリで複数の変数と条件を構成する方法を説明します。
コンテキスト
特定のログや条件を調査するためのコンテキストリンクを追加します。
- 同じコンテキストで複数のタグ値を持っている場合 (例:
env:production OR env:prod
)。 - ログを複数の条件で絞り込みたい場合 (例:
env:prod AND service:backend
)
アプローチ
トラブルシューティングしたいテンプレート変数を選択すると、コンテキストリンク構成はそれらのテンプレート変数を取り込み、クエリに挿入します。注: 構文と括弧はクエリに影響します。
例えば、service:backend
AND (env:production
OR env:prod
) でコンテキストリンクを構成したい場合は、以下の構成を使用します。
service:backend (env:{{$env.value}})
結果
括弧は (env:{{$env.value}})
を (env:*)
に変換し、コンテキストリンククエリに複数の変数を入力できるようにします。
その他の参考資料