Đơn giản hóa canary bằng cách gộp (batch) nhiều URL trong Amazon CloudWatch Synthetics

Tác giả: Shree Chinnasamy

Ngày đăng: Ngày 20 Tháng 9 Năm 2021

Danh mục: Amazon CloudWatch, Announcements, Foundational (100), Management & Governance, Management Tools, Monitoring and observability, Price Reduction, Technical How-to 

Bạn có thể sử dụng Amazon CloudWatch Synthetics để tạo canary, các script có thể cấu hình và chạy theo lịch trình, nhằm giám sát các điểm cuối (endpoint) và hoạt động API của bạn. Các canary mô phỏng hành vi người dùng thật, đi theo cùng luồng và hành động tương tự, giúp bạn xác minh liên tục trải nghiệm khách hàng, ngay cả khi ứng dụng chưa có lưu lượng thực. Bằng cách sử dụng canary, bạn có thể phát hiện sự cố trước khi khách hàng của bạn gặp phải.

Nếu canary của bạn sử dụng runtime version syn-nodejs-puppeteer-3.1 hoặc mới hơn, bạn có thể dùng bản mẫu Heartbeat monitoring blueprint  và gộp nhiều URL vào một canary duy nhất, thay vì phải tạo nhiều canary riêng cho từng URL. Sau đó, bạn có thể xem trạng thái, thời lượng, ảnh chụp màn hình và lý do lỗi cho từng URL trong phần tóm tắt bước (step summary) của báo cáo chạy canary (canary run report).  Vì CloudWatch Synthetics được tính phí dựa trên số lần chạy canary, nên việc gộp nhiều URL trong một canary cũng giúp giảm chi phí.
(Hãy xem phần Pricing ở cuối bài để biết thêm chi tiết.)

Quy trình thực hiện

Trong bài viết này, tôi sẽ trình bày lợi ích của việc gộp nhiều URL trong một canary duy nhất.

Ví dụ trong bài, canary của tôi sẽ giám sát nhiều URL như minh họa trong Hình 2.

Hình 1 cho thấy trang Create canary trong CloudWatch console. Để sử dụng blueprint Heartbeat monitoring nhằm giám sát nhiều URL, hãy hoàn thành (complete) các trường như minh họa trong Hình 1. Sau khi nhập xong các thông tin cần thiết, nhấn nút Create canary ở cuối trang.

Hình 1: Trang Create canary

Chọn canary từ  canaries list và truy cập vào trang chi tiết của nó.  Bạn sẽ thấy canary đang ở trạng thái Running. Nhấp vào tab Availability để xem thông tin về các lần chạy gần đây. Hình 2 minh họa phần step summary trong báo cáo chạy canary trong CloudWatch console.

Hình 2 : Tóm tắt kết quả từng bước trong báo cáo chạy canary

Nếu bạn đang giám sát nhiều URL bằng Heartbeat monitoring blueprint :

  • Các canary sử dụng phương thức executeStep() hoặc executeHttpStep() từ thư viện Synthetics cũng sẽ xuất bản các chỉ số (metrics) SuccessPercentDuration , với dimensions là CanaryNameStepName cho từng bước.
  • Với các canary sử dụng syn-nodejs-puppeteer-3.1 hoặc mới hơn, tùy chọn setConfig hỗ trợ nhiều tham số Boolean xác định những chỉ số (metrics) nào được xuất bản bởi canary. Để biết thêm, hãy xem tài liệu Library functions available for Node.js canary scriptsSyntheticsConfiguration class  trong CloudWatch User Guide. Tùy theo nhu cầu, bạn có thể dùng setConfig để tắt các tham số không cần thiết

Ví dụ sau cho thấy setConfig cho phép tất cả các bước tiếp tục chạy ngay cả khi có bước thất bại, đồng thời tắt việc chụp ảnh màn hình khi bắt đầu bước:

syntheticsConfiguration.setConfig
({
    continueOnStepFailure : true,
    screenshotOnStepStart : false
});

Chi phí

Chi phí hàng tháng phụ thuộc vào số lần chạy canary, chi phí AWS Lambda (AWS Lambda charges), cùng các cấu hình giám sát và lưu trữ. Lưu ý rằng CloudWatch Synthetics sẽ xuất bản các chỉ số (metrics) SuccessPercentDuration cho toàn bộ tài khoản AWS, từng canary, và từng bước. Mỗi lần chạy canary cũng đồng thời chạy một AWS Lambda function và ghi log (nhật ký) và kết quả vào CloudWatch Logs và bucket Amazon Simple Storage Service (Amazon S3) được chỉ định.

Dọn dẹp tài nguyên

Để tránh phát sinh chi phí trong tài khoản, hãy xóa các tài nguyên bạn đã tạo:

  1. Trong Amazon CloudWatch console, chọn canary bạn đã tạo → từ menu Actions, chọn Stop.
  2. Chọn lại canary đó → từ menu Actions, chọn Delete.

Lưu ý: Khi bạn xóa canary, các tài nguyên mà nó đã sử dụng hoặc tạo ra không bị xóa tự động. Hãy xóa thêm các thành phần sau:

  • (Tùy chọn) Xóa các CloudWatch alarms trong  Amazon CloudWatch console được tạo cho canary. Các alarm này có tên dạng Synthetics-Alarm-MyCanaryName.
  • Trong Amazon CloudWatch console, xóa các CloudWatch log group được tạo cho canary (tên: aws/lambda/cwsyn-MyCanaryName).
  • Trong  AWS Lambda console, xóa Lambda function được dùng bởi canary (tên có tiền tố cwsyn-MyCanaryName.).
  • Trong Amazon S3 console, xóa các đối tượng Amazon S3 và bucket được canary tạo ra (ví dụ: vị trí artifact (artifact location)).
  • Trong AWS Identity and Access Management console, xóa các IAM role được tạo cho canary. Nếu chúng được tạo trong console (If they were created in the console), các role này có tên là role/service-role/CloudWatchSyntheticsRole-MyCanaryName.

Kết luận

Tôi khuyến khích bạn sử dụng thông tin trong bài viết này và cân nhắc gộp nhiều URL trong một canary duy nhất bằng CloudWatch Synthetics. Để biết thêm, hãy xem CloudWatch PricingCloudWatch Service Quotas. Nếu bạn có câu hỏi hoặc phản hồi, hãy mở một AWS Support Case.

Về tác giả

Shree Chinnasamy

Shree Chinnasamy là Quản lý tài khoản kỹ thuật cao cấp (Sr. Technical Account Manager), tập trung vào việc thúc đẩy hiệu quả vận hành cho khách hàng của mình. Anh là một người đam mê đọc sách và đã hoàn thành nhiều cuộc thi marathon, hiện đang sinh sống tại bang Washington, khu vực Tây Bắc Thái Bình Dương (Pacific Northwest).

Shree Chinnasamy

Shree Chinnasamy là Kiến trúc sư Giải pháp Chuyên trách Cao cấp (Senior Specialist Solutions Architect) trong nhóm Cloud Operations tại AWS. Trong vai trò này, anh tập trung chủ yếu vào các dịch vụ giám sát và khả năng quan sát (monitoring and observability) của AWS như Amazon CloudWatch, AWS X-Ray, Amazon Managed Service for Prometheus và Amazon Managed Grafana. Anh có bằng Thạc sĩ Khoa học (Master of Science) chuyên ngành Quản lý Hệ thống Viễn thông (Telecommunication Systems Management) tại Đại học Northeastern, Boston. Là một người đam mê đọc sách và đã hoàn thành nhiều cuộc thi marathon, Shree hiện sinh sống tại bang Washington, khu vực Tây Bắc Thái Bình Dương (Pacific Northwest). Hồ sơ LinkedIn: www.linkedin.com/in/shreekarthic

TAGS: Amazon CloudWatch Synthetics