データセキュリティ

概要

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

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

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 ソースデータの仕組み

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

Trace Queries は、取り込まれたスパン均一な 1% サンプルに基づいています。詳しくは、1% フラットサンプリングをお読みください。

フラット 1% サンプリングは trace_id に基づいて適用され、これは同じトレースに属するすべてのスパンが同じサンプリング決定を共有することを意味します。1% サンプリングでインデックス化されたスパンは、トレースエクスプローラーでクエリして見つけることもできます。

タグベースの保持フィルターによってインデックス化されたスパンは、Trace Queries では使用できません。保持フィルターは、トレースからのすべてのスパンがインデックス化されていることを保証していないからです。

: フラット 1% サンプリングでインデックス化されたスパンは、インデックス化されたスパンの使用量にはカウントされないため、請求には影響しません

その他の参考資料