Theo dõi phân tán với AWS X-Ray và logging có cấu trúc

Triển khai Ứng dụng trên AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Yêu cầu chậm mà không ai tìm ra

  • Một yêu cầu mất bốn giây
  • Log của từng dịch vụ riêng lẻ đều ổn
  • Không ai thấy được toàn bộ đường đi

Kính lúp truy vết một yêu cầu chậm trên bản đồ dịch vụ phân tán với nút nghẽn cổ chai màu đỏ

Triển khai Ứng dụng trên AWS

Distributed tracing giải quyết gì

Các silo log theo từng dịch vụ cô lập màu đỏ bên trái so với timeline truy vết Gantt X-Ray thống nhất nối cùng yêu cầu qua API Gateway, Lambda, DynamoDB và API ngoài màu xanh

  • Một yêu cầu đi qua nhiều dịch vụ
  • Chỉ log thì không thấy đường đi đầu-cuối
  • Một trace sẽ nối cả yêu cầu lại
  • Thấy chính xác thời gian trôi ở đâu
Triển khai Ứng dụng trên AWS

Segment, subsegment và service map

  • Segment: phần việc do một dịch vụ thực hiện
  • Subsegment: đơn vị bên trong segment, như một lệnh gọi DB
  • Service map: đồ thị trực quan của tất cả segment
  • Độ trễ và lỗi hiển thị trên từng nút

Giải phẫu trace X-Ray: mỗi dịch vụ là một segment với các subsegment cho lệnh gọi DB, ghép thành service map hiển thị độ trễ và tỷ lệ lỗi trên từng nút

Triển khai Ứng dụng trên AWS

Annotations và metadata


Annotations

  • Cặp khóa-giá trị được lập chỉ mục, nên lọc được
  • Dùng cho thứ bạn sẽ tìm, như hạng khách hàng

Metadata

  • Thông tin bổ sung, không được lập chỉ mục
  • Gắn để có ngữ cảnh, nhưng không thể tìm theo nó
Triển khai Ứng dụng trên AWS

Liên kết log bằng trace ID

  • Mỗi trace có trace ID duy nhất
  • Thêm trace ID vào structured logs của bạn
  • Nhảy từ một trace chậm sang đúng dòng log của nó
  • Log và trace thành một cuộc điều tra thống nhất

Dòng log có cấu trúc với trường xray_trace_id được nổi bật, mũi tên từ chế độ xem trace X-Ray sang các dòng log khớp trong CloudWatch Logs để điều tra tương quan

Triển khai Ứng dụng trên AWS

Đọc service map để tìm nút nghẽn

Service map X-Ray với một nút độ trễ cao được tô sáng, đi sâu vào timeline trace hiển thị thanh segment dài nhất được xác định là nút nghẽn

  • Bắt đầu từ service map, không phải log
  • Tìm nút có độ trễ cao nhất
  • Đi sâu vào trace timeline của nó
  • Segment dài nhất là nghi phạm
Triển khai Ứng dụng trên AWS

Truy vết suốt toàn bộ yêu cầu

  • API Gateway, Lambda và các lệnh gọi hạ nguồn đều được trace
  • Mỗi thành phần thêm segment của mình vào cùng trace
  • Một trace ID liên kết log và segment lại với nhau
  • Nhìn xuyên suốt đầu-cuối cho mọi yêu cầu

Trace phân tán đầu-cuối từ API Gateway qua Lambda tới DynamoDB và API ngoài, một trace ID hiển thị ở tiêu đề mỗi segment liên kết mọi log và segment

Triển khai Ứng dụng trên AWS

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

Triển khai Ứng dụng trên AWS

Preparing Video For Download...