| Service | How to Enable |
|---|---|
| Lambda | Tracing: Active in SAM / Console checkbox |
| API Gateway | Stage settings → X-Ray tracing |
| ECS | X-Ray daemon as sidecar container |
| EC2 | Install X-Ray daemon |
| Beanstalk | .ebextensions config hoặc environment configuration option |
Scenario thi: Trace calls tới external HTTP web API và SQL database queries cho Elastic Beanstalk application
Giải pháp:
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
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Resource": "*"
}]
}
# 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
{
"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"}]}
]
}
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
fixed_target: Min traces/second (default 1)rate: % of additional requests (default 5%)| Annotations | Metadata | |
|---|---|---|
| Indexed | Yes | No |
| Searchable | Yes | No |
| Use case | Filter expressions | Additional context |
| Example | user_id, order_id | Full request/response |
Exam Tip:
patch_all() auto-traces SDK callsTracing: Active for Lambdaxray:PutTraceSegments, xray:PutTelemetryRecords