X-Ray

AWS の分散トレーシングサービスで、リクエストの経路とレイテンシを可視化する

AWSオブザーバビリティ

X-Ray とは

AWS X-Ray は、分散トレーシングサービスで、リクエストが API Gateway → Lambda → DynamoDB のようにどのサービスを通過し、どこで時間がかかっているかを可視化する。マイクロサービスやサーバーレスアーキテクチャのパフォーマンス分析とデバッグに使う。

トレースマップ

[API Gateway][Lambda A][DynamoDB]
  50ms            120ms         30ms[Lambda B][SQS]
                                80ms         10ms
合計: 170ms

X-Ray はリクエストの全経路をトレースマップとして可視化し、ボトルネックを特定する。

Tracing: Active で Lambda の X-Ray トレーシングが有効になる。

トレースの構造

Trace (1 リクエスト全体)
  └── Segment (API Gateway)
        └── Subsegment (Lambda)
              ├── Subsegment (DynamoDB GetItem: 30ms)
              └── Subsegment (外部 API 呼び出し: 200ms) ← ボトルネック

CloudWatch との連携

サービス 用途
X-Ray リクエストの経路とレイテンシ
CloudWatch Logs ログの詳細
CloudWatch Metrics メトリクス (エラー率、レイテンシ)

3 つを組み合わせてオブザーバビリティを実現する。

サンプリング

全リクエストをトレースするとコストが増加する。サンプリングルールで一部のリクエストのみトレースする。

{
  "version": 2,
  "default": { "fixed_target": 1, "rate": 0.05 }
}

1 秒あたり 1 リクエスト + 残りの 5% をサンプリング。

Lambda Powertools との統合

import { Tracer } from '@aws-lambda-powertools/tracer';
const tracer = new Tracer();

class MyHandler {
  @tracer.captureMethod()
  async getUser(id: string) { /* 自動的にサブセグメントが作成される */ }
}

さらに掘り下げるなら関連書籍が参考になる。

関連用語