4.2.6 Implement Tracing

Implement Tracing by Using AWS Services

Enable X-Ray per Service

ServiceHow to Enable
LambdaTracing: Active in SAM / Console checkbox
API GatewayStage settings → X-Ray tracing
ECSX-Ray daemon as sidecar container
EC2Install X-Ray daemon
Beanstalk.ebextensions config hoặc environment configuration option

X-Ray Use Cases

Scenario thi: Trace calls tới external HTTP web API và SQL database queries cho Elastic Beanstalk application

Giải pháp:

  1. Enable X-Ray trong Beanstalk environment configuration
  2. X-Ray daemon sẽ automatically run
  3. Use X-Ray SDK trong application code

X-Ray SDK — Auto-instrumentation

from aws_xray_sdk.core import xray_recorder, patch_all

# Patch boto3, requests, sqlite3, mysql, etc.
patch_all()

def handler(event, context):
    # All SDK calls auto-traced
    response = table.get_item(Key={'id': '123'})
    
    # Custom subsegment
    with xray_recorder.in_subsegment('custom_logic'):
        result = process(response)
    
    return result

X-Ray Permissions (IAM)

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "xray:PutTraceSegments",
      "xray:PutTelemetryRecords"
    ],
    "Resource": "*"
  }]
}

X-Ray Service Maps

  • Trace views để visualize request flow
  • Interpret trace details để identify bottlenecks
  • Groups để organize traces
  • Rules để filter và sample traces

X-Ray Filter Expressions

# Find traces related to specific paths
service("my-api") AND http.url CONTAINS "/orders"

# Find traces for specific users
annotation.user_id = "12345"

# Find slow requests
responsetime > 5

# Find errors
error = true OR fault = true

ECS Sidecar

{
  "containerDefinitions": [
    {"name": "my-app", "image": "my-app:latest",
     "environment": [{"name": "AWS_XRAY_DAEMON_ADDRESS", "value": "xray-daemon:2000"}]},
    {"name": "xray-daemon", "image": "amazon/aws-xray-daemon",
     "portMappings": [{"containerPort": 2000, "protocol": "udp"}]}
  ]
}

EC2 Installation

User data script để install X-Ray daemon:

#!/bin/bash
wget https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.rpm
yum install -y ./aws-xray-daemon-3.x.rpm

Sampling Rules

  • fixed_target: Min traces/second (default 1)
  • rate: % of additional requests (default 5%)
  • Custom rules per URL path, method, service
  • Control cost bằng cách limit traces

X-Ray Annotations vs Metadata

AnnotationsMetadata
IndexedYesNo
SearchableYesNo
Use caseFilter expressionsAdditional context
Exampleuser_id, order_idFull request/response

Exam Tip:

  • patch_all() auto-traces SDK calls
  • ECS needs sidecar daemon
  • SAM Tracing: Active for Lambda
  • Beanstalk X-Ray daemon auto-runs khi enabled
  • Sampling controls cost
  • Use filter expressions để find traces related to specific paths/users
  • IAM permissions: xray:PutTraceSegments, xray:PutTelemetryRecords
  • User data script để install daemon trên EC2