0

Series CloudWatch #5: Trạm cuối – Thực chiến xây dựng Bảng điều khiển (Dashboard) giám sát toàn diện Hệ thống Microservices

Vậy là chúng ta đã cùng nhau đi đến bài học cuối cùng của series CloudWatch.

Nhìn lại hành trình vừa qua, anh em đã thu thập đủ các mảnh ghép quyền lực nhất: Metrics để đo lường nhịp tim, Alarms để cảnh báo khi nguy kịch, Logs để khám nghiệm nguyên nhân, và EventBridge để tự động phản xạ chữa lành.

Nhưng nếu chúng ta để tất cả những thứ đó nằm rải rác ở các menu khác nhau trên AWS, thì mỗi lần hệ thống có biến, anh em sẽ phải click chuột mỏi tay để nhảy từ màn hình Log sang màn hình Metric. Một kỹ sư hệ thống đẳng cấp không làm như vậy. Họ gom tất cả về một màn hình duy nhất – một Trung tâm chỉ huy (Control Room).

Hôm nay, chúng ta sẽ thực chiến xây dựng một CloudWatch Dashboard giám sát toàn diện cho một hệ thống backend phức tạp. Lấy luôn bối cảnh hệ thống bán vé tự động (AFC) đa trạm mà chúng ta vẫn hay nhắc tới nhé!

1. CloudWatch Dashboard là gì? (Tư duy thiết kế)

Dashboard đơn giản là một tấm bảng đen, nơi anh em có thể "gắn" (pin) mọi thứ mình muốn lên đó: biểu đồ CPU, danh sách lỗi từ Log, trạng thái của các Alarm, v.v.

Tuy nhiên, lỗi lớn nhất của người mới là "ném" mọi biểu đồ mình có lên Dashboard khiến nó trông như một mớ bòng bong. Để thiết kế một Dashboard mang lại giá trị thực chiến, anh em phải chia nó thành các Phân khu (Tiers) rõ ràng:

  1. Tầng 1: Góc nhìn Tổng quan (High-Level / Business Metric): Dành cho sếp hoặc để nhìn lướt qua. Ví dụ: Số lượng giao dịch quẹt thẻ mỗi phút, số lượng vé lỗi, trạng thái chung của toàn hệ thống (Xanh/Đỏ).
  2. Tầng 2: Sức khỏe Ứng dụng (Application Level): Dành cho Dev. Ví dụ: Thời gian phản hồi của API (Latency), số lượng lỗi HTTP 5xx từ API Gateway.
  3. Tầng 3: Tỉ lệ sống sót của Hạ tầng (Infrastructure Level): Dành cho DevOps. Ví dụ: CPU, RAM của các node chạy Golang/Node.js, số lượng kết nối đang mở vào Database Vitess, độ trễ của Message Broker.

2. Thực hành: Từng bước xây dựng Trung tâm chỉ huy AFC

Bây giờ, chúng ta sẽ tự tay dựng một Dashboard giám sát cụm Microservices xử lý giao dịch.

Bước 1: Khởi tạo Dashboard

  1. Mở AWS Console, vào CloudWatch > menu trái chọn Dashboards.
  2. Bấm nút Create dashboard.
  3. Đặt tên thật ngầu, ví dụ: AFC-Production-Command-Center và bấm Create.

Bước 2: Thêm Widget trạng thái Cảnh báo (Alarm Status)

Thứ đầu tiên đập vào mắt khi mở Dashboard phải là: "Hệ thống có đang cháy không?".

  1. AWS sẽ hỏi anh em muốn thêm Widget (tiện ích) loại nào. Chọn Alarm status.
  2. Chọn những Alarm quan trọng nhất (như Alarm CPU > 80% đã tạo ở Bài 2).
  3. Bấm Create widget. Kết quả: Anh em sẽ có một khối vuông bự chảng. Nếu nó xanh lá cây nghĩa là anh em có thể đi pha trà. Nếu nó đỏ lòm, hệ thống đang có biến!

Bước 3: Thêm Biểu đồ hiệu năng (Line Chart cho Metrics)

Tiếp theo, ta cần theo dõi nhịp tim của các service.

  1. Bấm dấu (+) Add widget ở góc trên Dashboard.
  2. Chọn Line (Biểu đồ đường).
  3. Tìm đến Metric CPUUtilization của các server Backend. Anh em có thể chọn nhiều server cùng lúc để vẽ chúng lên cùng một biểu đồ cho dễ so sánh.
  4. Chỉnh lại khoảng thời gian (VD: 1 Hour) và bấm Create widget.

Bước 4: "Vũ khí bí mật" - Nhúng màn hình điều tra Logs

Đây là tính năng cực kỳ ăn tiền. Thay vì phải mở tab Logs Insights mỗi khi có lỗi, anh em gắn thẳng nó lên Dashboard.

  1. Add widget > chọn Logs table.
  2. Chọn Log Group của dự án (VD: /ecs/afc-transaction-service).
  3. Gõ câu truy vấn lọc lỗi (giống hệt Bài 3): fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 10
  4. Bấm Create widget. Kết quả: Anh em sẽ có một bảng liên tục cập nhật 10 dòng log báo lỗi mới nhất của hệ thống ngay trên Dashboard!

3. Tối ưu hóa Dashboard cho người đi làm

Sau khi đã kéo thả và sắp xếp các ô Widget cho đẹp mắt (lưu ý kéo cái bảng Logs xuống dưới cùng cho rộng rãi), hãy nhớ Lưu lại (Save dashboard).

Dưới đây là vài mẹo (Best Practices) để Dashboard thực sự phát huy tác dụng:

  • Bật Auto-Refresh: Ở góc phải trên cùng của Dashboard, hãy chỉnh thời gian làm mới thành 1 minute hoặc 5 minutes. Nếu anh em treo màn hình này trên một cái tivi lớn ở văn phòng (Monitor TV), nó sẽ tự động chạy và cập nhật liên tục như sàn chứng khoán.
  • Sử dụng Text Widget: Đừng tiếc vài phút tạo một widget dạng Text (hỗ trợ Markdown) để ghi chú các thông tin quan trọng. Ví dụ: "Nếu API Latency > 2s, hãy kiểm tra lại cụm Database. SĐT trực ban: 09xx.xxx.xxx". Trong lúc dầu sôi lửa bỏng, một dòng ghi chú rõ ràng đáng giá ngàn vàng.
  • Chia nhỏ Dashboard nếu cần: Nếu hệ thống của anh em có quá nhiều trạm, đừng nhồi nhét tất cả vào một bảng. Hãy tạo Dashboard-Station-A, Dashboard-Station-B, và một cái Dashboard-Global chỉ hiển thị các chỉ số cốt lõi.

Tổng kết Series CloudWatch

Vậy là chúng ta đã hoàn tất bức tranh lớn về Observability (Khả năng quan sát) trên AWS.

Hãy hình dung lại sự thay đổi trong cách làm việc của chúng ta: Trước đây, khi release một bản cập nhật phần mềm xuống ga, anh em nhắm mắt cầu nguyện và chờ xem có khách hàng nào phàn nàn không. Còn bây giờ? Bản cập nhật vừa deploy xong, anh em ngồi nhâm nhi cà phê, nhìn lên cái màn hình Dashboard vừa tạo. Anh em thấy CPU tăng nhẹ rồi ổn định, không có dòng chữ ERROR nào hiện lên ở bảng Logs, mọi ô Alarm đều xanh mướt. Đó chính là sự tự tin và phong thái của một kỹ sư hệ thống thực thụ!

Kiến thức về CI/CD (Jenkins) kết hợp với Giám sát hạ tầng (CloudWatch) chính là đôi cánh đưa anh em vươn lên tầm vóc của một Software Architect. Hãy đem những kiến thức này áp dụng ngay vào dự án thực tế của mình nhé. Hệ thống càng phức tạp, anh em sẽ càng thấy những công cụ này có giá trị.

Cảm ơn anh em đã theo dõi đến tận bài viết cuối cùng này. Nếu có bất kỳ chủ đề nào khác về System Design, Backend hay DevOps mà anh em muốn đào sâu, hãy cho tôi biết nhé. Happy Coding và hệ thống luôn "Xanh"!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí