概要

Trace Queries を使用すると、トレース構造内の複数のスパンのプロパティとそれらスパン間の関係に基づいて、トレース全体を見つけることができます。トレースクエリを作成するには、2 つ以上のスパンクエリを定義し、それぞれのスパンクエリによって返されるスパンの、検索されたトレース構造内の関係を指定します。

Trace Query エクスプローラーから、トレースの検索、フィルタリング、グループ化、視覚化を行うことができます。

構造ベースのトレースクエリにより、次のような質問に答えることができます。

  • どのトレースが 2 つのサービス間の依存関係を含んでいるか (service Aservice B へのダウンストリームコールを持っている)?
  • バックエンドサービスのエラーによって影響を受ける API エンドポイントは?

Trace Queries を使用して、調査を加速し、関連するトレースを見つけます。

トレースクエリエディタ

Trace Query エディタ

トレースクエリは、2 つ以上のスパンクエリトレースクエリ演算子で結合したものです。

スパンクエリ

スパンクエリ構文を使用して、特定の環境、サービス、またはエンドポイントからのスパンをクエリします。オートコンプリート候補を使用して、ファセットと最近のクエリを表示します。

Add another span query をクリックして、スパンクエリを追加し、トレースクエリステートメントで使用します。

トレースクエリ演算子

abc などのラベルが付けられた複数のスパンクエリを、それぞれのスパンクエリを表す文字の間に演算子を使用して、Traces matching フィールドのトレースクエリに結合します。

スパンクエリをトレースクエリに統合
演算子説明
&&And: どちらのスパンもトレース内にあるサービス web-store のスパンとサービス payments-go のスパンを含むトレース:
service:web-store && service:payments-go
||Or: どちらか一方のスパンがトレース内にあるサービス web-store またはサービス mobile-store からのスパンを含むトレース:
service:web-store || service:mobile-store
->間接関係: 右のクエリにマッチするスパンのアップストリームにある、左のクエリにマッチするスパンを含むトレースサービス checkoutservice がサービス quoteservice のアップストリームにある場合のトレース:
service:checkoutservice -> service:quoteservice
=>直接関係: 右のクエリにマッチするスパンの直接の親である、左のクエリにマッチするスパンを含むトレースサービス checkoutservice がサービス shippingservice を直接呼び出している場合のトレース:
service:checkoutservice => service:shippingservice
NOTExclusion: Traces that do not contain spans matching the queryTraces that contain spans from the service web-store, but not from the service payments-go:
service:web-store && NOT(service:payments-go)

トレースレベルのフィルター

Where ステートメントで、スパン数やトレースのエンドツーエンドの持続時間のようなトレースレベルの属性にフィルターを適用することで、トレースの結果セットをさらにフィルタリングします。

トレースレベルのフィルターの例
フィルター説明
span_count(a)スパンの発生回数10 回を超える mongo データベースへの呼び出しを含むトレース:
- queryA:service:web-store-mongo @db.statement:"SELECT * FROM stores
- Traces matching:a
- Where:span_count(a):>10
total_span_countトレース内のスパン数1000 を超えるスパンを含むトレース:
Wheretotal_span_count:>1000
trace_durationエンドツーエンドのトレース期間エンドツーエンドの実行時間が 5 秒を超えるトレース :
Where:trace_duration:>2s

フローマップ

トレースフローマップ

フローマップを使用すると、Trace Queries にマッチする結果のトレースから、リクエストパスとサービスの依存関係を理解することができます。マップを使用して、エラーパス、異常なサービス依存関係、またはデータベースへのリクエストレートが異常に高いことを特定します。

: フローマップは取り込みトラフィックのサンプルによって生成されます。

スパンクエリにマッチするサービスノードはハイライトされ、クエリ条件がトレースのどの部分を対象としているかを示します。

1 つのサービスに関する詳細情報を得るには、そのサービスのノードにカーソルを合わせると、そのリクエストレートとエラーレートのメトリクスが表示されます。2 つのサービス間のリクエストレートとエラーレートのメトリクスを表示するには、2 つのサービスを接続するエッジにカーソルを合わせます。

特定のサービスへの依存を含まないトレースを除外するには、マップ上のそのサービスのノードをクリックします。

トレースリスト

トレースリスト

トレースリストには、選択した時間範囲内でクエリにマッチする最大 50 のサンプルトレースが表示されます。 レイテンシーブレイクダウンにカーソルを合わせると、リクエスト実行中にどこに (どのサービスに) 時間が費やされたかを知ることができます。

: テーブルに表示される情報は、トレースの root スパンからの属性であり、期間を含みます。トレースのエンドツーエンド期間を表すものではありません

分析

TimeseriesTop ListTable などの他の視覚化のいずれかを選択すると、1 つまたは複数のディメンションでグループ化された結果を経時的に集計することができます。集計オプションの詳細については、スパンの視覚化を参照してください。

これらの集計オプションに加えて、どのスパンクエリ (abc など) からスパンを集計するかを選択する必要もあります。集計オプションでタグと属性を使用するスパンにマッチするクエリを選択してください。

例えば、サービス web-store のスパン (クエリ a) と、いくつかのエラーを含むサービス payments-go のスパン (クエリ b) を含むトレースをクエリし、@merchant.tier でグループ化されたスパンのカウントを視覚化する場合、クエリ a のスパンを使用します。これは、merchant.tier がサービス payments-go の属性ではなく、サービス web-store のスパンの属性であるためです。

時系列ビュー

Trace Queries ソースデータの仕組み

Datadog uses the Intelligent Retention Filter to index data for Trace Queries. It does so by performing:

These two sampling mechanisms capture complete traces, meaning that all spans of a trace are always indexed to ensure that Trace Queries return accurate results.

1% フラットサンプリングと多様性サンプリング

: フラットサンプリングと多様性サンプリングによってインデックス化されたスパンは、インデックス化されたスパンの使用量にカウントされないため、請求には影響しません

1% フラットサンプリング

retained_by:flat_sampled

Flat 1% sampling is applied based on the trace_id, meaning that all spans belonging to the same trace share the same sampling decision. To learn more, read the one percent flat sampling documentation.

多様性サンプリング

retained_by:diversity_sampling

Every 15 minutes, diversity sampling retains at least one span and the associated trace for each combination of environment, service, operation, and resource. This occurs for the p75, p90, and p95 percentile of latencies to ensure that you can always find example traces in service and resource pages, even for low traffic endpoints. To learn more, read the diversity sampling documentation.

その他の参考資料

PREVIEWING: evan.li/clarify-agentless