Khái niệm và kiến trúc X-Ray

Giám sát và Khắc phục sự cố trên AWS

John Q. Martin

Principal Consultant

Thách thức của hệ thống phân tán

 

Ứng dụng nguyên khối (monolith)

  • Luồng tuyến tính, gói trong một tiến trình
  • Dễ gỡ lỗi

 

Ứng dụng phân tán

  • Một yêu cầu chạm nhiều service, DB, API bên ngoài
  • Khi lỗi, service nào gây ra?

Một mớ nút thắt nhiều sợi chỉ màu rối bời, minh họa việc khó truy vết một yêu cầu trong hệ phân tán

Giám sát và Khắc phục sự cố trên AWS

AWS X-Ray là gì?

 

X-Ray là dịch vụ tracing phân tán giúp:

  • Theo dõi yêu cầu xuyên suốt các service end-to-end
  • Đo độ trễ và phát hiện lỗi ở từng bước
  • Trực quan hóa kiến trúc ứng dụng dưới dạng bản đồ service

 

Ví dụ đường đi của yêu cầu:

  Sơ đồ đường đi của một yêu cầu qua nhiều service trong một trace phân tán

Giám sát và Khắc phục sự cố trên AWS

5 năng lực cốt lõi

 

Năm năng lực cốt lõi của X-Ray: truy vết yêu cầu, phân tích hiệu năng, phát hiện lỗi, bản đồ service và insights

Giám sát và Khắc phục sự cố trên AWS

Cách hoạt động của tracing

 

Luồng tracing phân tán: một yêu cầu vào Service A, gọi Service B rồi Service C, mỗi service truyền Trace ID trong HTTP header; mọi service phát ra một segment cùng Trace ID tới daemon X-Ray, daemon chuyển tiếp lên X-Ray, nơi các segment được lắp thành một trace hoàn chỉnh

Giám sát và Khắc phục sự cố trên AWS

Trace ID và truyền header

 

Định dạng Trace ID:

Định dạng X-Ray trace ID với số phiên bản, Unix timestamp ở hệ thập lục phân và mã định danh duy nhất

 

HTTP header:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root, Trace ID, giống nhau ở mọi service
  • Parent, ID segment thượng nguồn
  • Sampled, 0 hoặc 1, được trace hoặc bỏ qua
Giám sát và Khắc phục sự cố trên AWS

Daemon X-Ray

 

Chức năng:

  • Lắng nghe trên cổng UDP 2000
  • Nhận dữ liệu segment từ ứng dụng
  • Đệm, gom lô và chuyển tiếp tới X-Ray API
  • Tách ứng dụng khỏi dịch vụ X-Ray

 

Triển khai theo môi trường:

Triển khai daemon X-Ray theo môi trường: tự động trên Lambda, như một service trên EC2 và sidecar trên ECS

Giám sát và Khắc phục sự cố trên AWS

Sampling

 

Quy tắc mặc định:

  • Yêu cầu đầu tiên mỗi giây - luôn được trace
  • 5% yêu cầu còn lại - được sample

Trường quy tắc tùy chỉnh:

  • fixed_target - số yêu cầu/giây luôn trace
  • rate - phần trăm yêu cầu bổ sung
  • priority - số nhỏ hơn ưu tiên hơn

 

Chiến lược ví dụ:

Rule 1 (priority 1):
  Lỗi 5xx -> sampling 100%

Rule 2 (priority 10):
  Lưu lượng bình thường -> sampling 5%
Giám sát và Khắc phục sự cố trên AWS

Segments

 

Segment ghi lại gì:

  • Tên service
  • Thời gian bắt đầu và kết thúc
  • Trace ID
  • Chi tiết HTTP request và response
  • Tài khoản và vùng AWS

 

Trạng thái segment:

Năm trạng thái segment của X-Ray: in progress, ok, error, fault và throttle

Giám sát và Khắc phục sự cố trên AWS

Subsegments

 

So sánh timeline: không có subsegment là một thanh 800ms; có subsegment thì 800ms được tách thành DynamoDB 50ms, PaymentService 400ms (nút thắt), và InventoryService 300ms

Subsegment làm gì:

  • Cung cấp thời gian chi tiết bên trong một segment
  • Theo dõi các lời gọi downstream
  • Chia 800ms tổng thành:
    • DynamoDB.PutItem: 50ms
    • Gọi PaymentService: 400ms
    • Gọi InventoryService: 300ms

 

Namespace:

Ba namespace của subsegment: aws cho lời gọi AWS, remote cho HTTP bên ngoài và local cho mã tùy chỉnh

Giám sát và Khắc phục sự cố trên AWS

Annotations

 

Thông tin chính:

  • Cặp khóa-giá trị được lập chỉ mục - tìm kiếm và lọc được
  • Giới hạn: 50 khóa được lập chỉ mục mỗi trace
  • Kiểu: string, number, boolean

Dùng cho:

  • user_id, order_id, environment
  • version, feature flags, error codes

 

Cú pháp lọc:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
Giám sát và Khắc phục sự cố trên AWS

Metadata

 

Thông tin chính:

  • Không lập chỉ mục - không thể tìm kiếm hoặc lọc
  • Không giới hạn kích thước
  • Hỗ trợ mọi cấu trúc JSON

Dùng cho:

  • Toàn bộ nội dung request và response
  • Thông điệp lỗi và stack trace
  • Ngữ cảnh nghiệp vụ (mặt hàng đơn, địa chỉ)

 

Annotations vs. Metadata:

Bảng so sánh: annotations được lập chỉ mục và tìm kiếm được; metadata chi tiết nhưng không lập chỉ mục

Giám sát và Khắc phục sự cố trên AWS

Cấu trúc trace hoàn chỉnh

 

Cấu trúc trace hoàn chỉnh với bốn segment và API thanh toán bên ngoài là thao tác chậm nhất

Giám sát và Khắc phục sự cố trên AWS

Tóm tắt bài học

 

  • X-Ray - dịch vụ tracing phân tán cho khả năng quan sát end-to-end giữa các service
  • Cơ chế tracing - truyền Trace ID qua HTTP header, segment được thu thập bởi daemon, quy tắc sampling cấu hình được
  • Thành phần của trace:
    • Segments - bản ghi công việc cấp service
    • Subsegments - thời gian chi tiết cho thao tác downstream
    • Annotations - cặp khóa-giá trị được lập chỉ mục để lọc và tìm kiếm
    • Metadata - ngữ cảnh chi tiết, không lập chỉ mục
Giám sát và Khắc phục sự cố trên AWS

Cùng luyện tập nào!

Giám sát và Khắc phục sự cố trên AWS

Preparing Video For Download...