Instiq
第5章 · トラブルシューティングと最適化·v2.1.0·更新 2026/6/28·読了目安 約8分

変更要約: in-scopeサービス網羅(軸B): s1(CloudWatch)にAthena/OpenSearch Serviceによる大規模ログ分析の定義・役割・選択基準を追記。

5.2X-Ray による分散トレースとデバッグ

この節の要点

AWS X-Ray による分散トレース(リクエストの経路と各区間の遅延)、ボトルネックやエラーの特定、サービスマップといったデバッグ手法を理解します。

複数サービスにまたがる処理では「どこで遅い/失敗しているか」の把握が難しくなります。AWS X-Ray はリクエストを追跡し、各区間の遅延やエラーを可視化します。

5.2.1トレースとサービスマップ

API Gateway(5ms)→Lambda(40ms)→DynamoDB(8ms)→外部 API(210ms・遅い)というリクエストの各区間の遅延を X-Ray が示し、サービス横断でボトルネックを特定できることを表した図。
X-Ray のトレースでボトルネックを特定
  • トレース:1リクエストが通る各サービスの区間(セグメント)と遅延を記録する。
  • サービスマップ:サービス間の依存と健全性を図で可視化する。
  • 遅い区間やエラー率の高い区間を特定し、ボトルネックの切り分けに使う。

X-Ray の構造を押さえます。1リクエスト全体が トレース、各サービスでの処理区間が セグメント、その内部の細かい処理(DB 呼び出しなど)が サブセグメント です。全リクエストを記録すると重いので サンプリング で一部だけ取得し、コストと網羅性のバランスを取ります。注釈(Annotation) はインデックス付きでフィルタ検索でき、メタデータ(Metadata) は検索対象外の付加情報です。Lambda や API Gateway は設定で アクティブトレースを有効化でき、EC2/ECS では X-Ray デーモン(またはサイドカー)がトレースを送信します。アプリには SDK を組み込み、外部呼び出しを計測します。サービス間でトレースをつなぐには トレースヘッダー(X-Amzn-Trace-Id) が伝播される必要があります。可視化された サービスマップ で、エラー率やレイテンシが高いノードを一目で特定できます。

用語意味
トレース1リクエスト全体の記録
セグメント各サービスでの処理区間
サブセグメント区間内の細かい処理(DB 呼出等)
サンプリング一部のみ記録しコストを抑制

シナリオ:API のレスポンスが時々遅い。 Lambda と API Gateway のアクティブトレースを有効化し、X-Ray のサービスマップでレイテンシの高いノードを特定。トレースを開くと外部 API のサブセグメントが 210ms で支配的——ボトルネックは外部依存と切り分けられます。注釈にユーザー ID を入れておけば、特定ユーザーの遅延だけ絞り込めます。

補足

Q. どこが遅いか知りたい。 X-Ray の分散トレース。Q. 全部記録するの? いいえ、サンプリングで一部。Q. 検索でフィルタしたい値は? 注釈(インデックス付き)。Q. ログとの違いは? ログ=何が起きたか、X-Ray=どこで時間がかかったか(補完関係)。

注意

混同に注意:
①X-Ray は「どこで時間がかかったか」、ログは「何が起きたか」——置き換えではなく補完。
②検索でフィルタしたい値は注釈に入れる(メタデータは検索不可)。
③サービス横断でトレースをつなぐにはトレースヘッダーの伝播が必要。

5.2.2この節のまとめ

  • X-Ray=分散トレースで各区間の遅延/エラーを可視化
  • サービスマップで依存と健全性を把握、ボトルネックを切り分け

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 複数サービスにまたがるリクエストの、どの区間で遅延しているかを特定したい。最も適したサービスはどれですか?

Q2. X-Ray がサービス間の依存関係と健全性を図で示す機能はどれですか?

Q3. 「何が起きたか」を示すログと、「どこで時間がかかったか」を示すトレースの関係として正しいものはどれですか?

理解度を確認第5章「トラブルシューティングと最適化」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。