AWS X-Ray で実現する分散トレーシング - マイクロサービスのパフォーマンス分析
マイクロサービスのリクエスト全経路をサービスマップで可視化し、フィルター式で問題トレースを絞り込む。OpenTelemetry との統合パターンも紹介します。
X-Ray の概要
X-Ray は分散アプリケーションのリクエストをトレースし、パフォーマンスのボトルネックを特定するサービスです。API Gateway → Lambda → DynamoDB のようなサービスチェーンで、各ステップの所要時間とエラーを可視化します。サービスマップでマイクロサービスの依存関係を視覚的に把握し、レイテンシの高いサービスやエラー率の高いサービスを即座に特定できます。
トレースとサンプリング
計装ライブラリをアプリケーションに組み込むと、HTTP リクエスト、AWS SDK コール、SQL クエリなどが自動的にトレースされます。新規に実装する場合の第一手段は AWS Distro for OpenTelemetry (ADOT) による計装です。従来の X-Ray SDK と X-Ray デーモンは 2026 年 2 月 25 日に保守モードへ移行し、新機能の追加が行われないため、これから作るアプリケーションでは選びません。Lambda はアクティブトレーシングを、API Gateway は REST API のステージ設定でトレースを有効にするだけで、計装なしにトレースが開始されます。サンプリングルールでトレースの収集率を制御します。デフォルトでは毎秒 1 リクエスト + 追加リクエストの 5% がサンプリングされます。高トラフィックのサービスではサンプリング率を下げてコストを抑え、低トラフィックのサービスでは 100% サンプリングで全リクエストをトレースします。
サービスマップとパフォーマンス分析
X-Ray のサービスマップはトレースデータから自動生成され、マイクロサービス間の依存関係、各サービスのレイテンシ、エラー率を視覚的に表示します。ノードの色がレイテンシやエラー率に応じて変化するため、問題のあるサービスを一目で特定できます。特定のノードをクリックすると、そのサービスのレスポンスタイム分布 (ヒストグラム) が表示され、 P50 、 P95 、 P99 のレイテンシを確認できます。フィルター式を使って特定の条件 (エラーが発生したトレース、レイテンシが 3 秒を超えたトレースなど) に絞り込むことで、問題の根本原因を効率的に調査できます。 Insights 機能はサービスの障害率を統計モデルで監視し、想定される範囲を超えた変動を異常として検出したうえで、影響を受けたリクエストのサンプルトレースを提示します。自動で全体に効くものではなく、トレースのグループ単位で Insights を有効化する操作が必要です。
OpenTelemetry との統合と実装パターン
X-Ray は OpenTelemetry (OTel) との統合をサポートしており、AWS Distro for OpenTelemetry (ADOT) を使って OTel SDK で計装したアプリケーションのトレースを X-Ray に送信できます。OTel SDK はベンダー中立な計装 API を提供するため、将来的にバックエンドを Jaeger や Zipkin に変更する場合もアプリケーションコードの修正が不要です。Lambda 関数では X-Ray のアクティブトレーシングを有効にするだけで自動計装され、追加のライブラリ組み込みは不要です。ECS や EKS では ADOT Collector をサイドカーコンテナ (EKS ではデーモンセット) として配置し、アプリケーションコンテナが送るトレースデータを受け取って X-Ray へ転送します。かつてこの役割を担っていた X-Ray デーモンは前述のとおり保守モードに入っているため、新規構成では ADOT Collector を使います。カスタムサブセグメントを作成して、外部 API 呼び出しやデータベースクエリの個別のレイテンシを計測することも可能です。
X-Ray の料金
X-Ray の料金はトレースの記録数、取得 (スキャン) 数、そして Insights が処理したトレース数の 3 つで構成されます。以下は 2026 年 8 月時点・東京リージョンの単価です。トレースの記録は最初の 100,000 件/月が無料で、以降は 100 万件あたり 5.00 USD です。トレースの取得 (スキャン) は最初の 1,000,000 件/月が無料で、以降は 100 万件あたり 0.50 USD です。Insights を有効にしたグループでは、処理されたトレース 100 万件あたり 1.00 USD が記録料金とは別に課金されます。追加料金なしで使える機能ではないため、監視したいグループに絞って有効化するのが基本です。サンプリングレートを調整してトレース量を制御することが最も効果的なコスト最適化策です。高トラフィックのサービスではサンプリングレートを 1% に下げ、低トラフィックのサービスでは 100% にする差別化が推奨されます。なお、サンプリングで間引かずに広い範囲のスパンを検索したい場合は CloudWatch の Transaction Search を有効にする選択肢もありますが、課金軸がトレース件数ではなく取り込んだスパンのデータ量 (GB) とインデックス化したスパン数に変わります。単価はリージョンで異なるため公式の料金表で確認してください。
ボトルネックの特定と根本原因分析
マイクロサービスでは、一つのリクエストが多数のサービスを経由するため、どこで遅延や障害が起きているのかを把握するのが困難です。X-Ray は、リクエストが通過した各サービスの所要時間を可視化し、どの区間が遅いのかを特定できます。処理を細かく区切って計測することで、データベースへの問い合わせや外部 API の呼び出しといった、ボトルネックとなっている箇所まで絞り込めます。エラーが発生した場合も、どのサービスのどの処理で起きたかをトレースから追跡できます。分散した処理を一連の流れとして可視化することが、根本原因の迅速な特定を可能にします。
運用での活用
X-Ray は、障害対応だけでなく、平常時の継続的な監視にも役立ちます。サービス同士の依存関係を示すサービスマップを見れば、システム全体の構成と健全性を一目で把握できます。レイテンシやエラー率の傾向を追い、性能が徐々に劣化していないかを監視します。メトリクスやログと組み合わせれば、数値の異常を検知した際に、トレースで具体的な原因を深掘りする、という流れで調査を進められます。性能の目標を定め、トレースのデータで達成状況を確認することもできます。可視化されたトレースを日常的に活用することが、安定したサービス運用を支えます。
まとめ
X-Ray はマイクロサービスアーキテクチャにおけるリクエストの全経路を可視化する分散トレーシングサービスです。サービスマップによる依存関係の把握、フィルター式による問題トレースの絞り込み、OpenTelemetry との統合によるベンダー中立な計装が主な特徴です。Lambda のアクティブトレーシングや ADOT サイドカーなど、デプロイ形態に応じた計装方法を選択できます。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトおよび公式ドキュメントです。最新の仕様 / 料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。