0

Series CloudWatch #1: Nỗi ám ảnh "Mù thông tin" và Con mắt thần CloudWatch

Chào anh em! Chắc hẳn ai làm Backend cũng từng nếm trải cảm giác này: Một ngày đẹp trời, hệ thống xử lý giao dịch (như hệ thống bán vé tự động AFC chẳng hạn) đột nhiên lăn ra chết. Khách hàng gọi điện mắng vốn. Boss hối thúc: "Lỗi ở đâu em ơi, fix lẹ lên!".

Lúc này, theo thói quen cũ, anh em sẽ:

  1. Hì hục SSH vào từng con server.
  2. Gõ lệnh top hoặc htop xem CPU, RAM có đầy không.
  3. Chạy tail -f /var/log/syslog hoặc pm2 logs để xem log ứng dụng.

Thế nhưng, nếu hệ thống của anh em không chỉ có 1 server mà là 10, 20 con server chạy Microservices vắt chéo nhau thì sao? Anh em không thể SSH vào từng con để mò kim đáy bể được. Cảm giác lúc đó giống như bị "mù thông tin" (Blind Spot) vậy. Hệ thống nằm đó, nhưng bên trong nó đang "đau" ở đâu thì chúng ta hoàn toàn mù tịt.

Để giải quyết bài toán này, giới công nghệ sinh ra các công cụ Observability (Khả năng quan sát). Và nếu anh em đang chạy hạ tầng trên mây của Amazon (AWS), thì bác bảo vệ mang tên AWS CloudWatch chính là vị cứu tinh.

1. AWS CloudWatch là gì?

Nói một cách dễ hiểu, CloudWatch giống như một Hệ thống Camera an ninh kết hợp với Bảng điều khiển y tế dành riêng cho hạ tầng AWS của anh em.

Nó tự động thu thập mọi "dấu hiệu sinh tồn" của các dịch vụ (từ Server EC2, Database RDS, cho đến các hàm chạy ẩn Lambda) và gom tất cả về một màn hình duy nhất. Thay vì phải đi gõ cửa từng phòng (SSH vào từng server) để hỏi xem hệ thống có khỏe không, anh em chỉ cần ngồi ở phòng điều khiển trung tâm và nhìn lên màn hình CloudWatch.

2. Ba trụ cột sức mạnh của CloudWatch (Lý thuyết cốt lõi)

Để thông thạo CloudWatch, anh em không cần nhớ hàng tá tính năng rườm rà. Chỉ cần khắc cốt ghi tâm 3 khái niệm nền tảng sau đây:

A. Metrics (Chỉ số đo lường - Nhịp tim của hệ thống) Metrics là những con số biết nói. Ví dụ:

  • CPU Utilization: CPU đang chạy 20% hay đang quá tải 99%?
  • Network In/Out: Băng thông mạng đang truyền bao nhiêu MB/s?
  • Disk Read/Write: Ổ cứng có đang bị nghẽn không?

Mỗi dịch vụ trên AWS khi sinh ra đều tự động gửi các Metrics cơ bản này về CloudWatch (thường là cứ 1 phút hoặc 5 phút một lần). Anh em có thể vẽ chúng thành những biểu đồ rất đẹp mắt để theo dõi xu hướng.

B. Logs (Nhật ký hoạt động - Bệnh án của ứng dụng)

Nếu Metrics cho anh em biết hệ thống đang "sốt 40 độ", thì Logs sẽ cho anh em biết "nguyên nhân gây sốt". Khi ứng dụng Node.js hay Golang của anh em in ra một dòng lỗi (ví dụ: Cannot connect to database Vitess), dòng text đó sẽ được CloudWatch gom lại và lưu trữ ở một nơi gọi là CloudWatch Logs. Anh em có thể tìm kiếm, lọc lỗi của hàng chục server cùng một lúc mà không cần SSH vào bất kỳ máy nào.

C. Alarms & Events (Cảnh báo và Sự kiện - Y tá trực ban)

Anh em không thể ngồi nhìn màn hình 24/7 được. CloudWatch cho phép anh em đặt ra các quy tắc cảnh báo (Alarms). Ví dụ: "Nếu CPU của Server Backend vượt quá 80% trong vòng 5 phút, hãy tự động gửi một tin nhắn vào Telegram/Slack hoặc kích hoạt tính năng tự động đẻ thêm server mới (Auto Scaling)".

Đây chính là đỉnh cao của vận hành hệ thống tự động!

3. Tại sao lại là CloudWatch mà không phải công cụ khác?

Nhiều anh em sẽ thắc mắc: "Tại sao không dùng Prometheus, Grafana hay ELK Stack?"

Đúng là những bộ công cụ mã nguồn mở kia rất mạnh. Nhưng CloudWatch có một vũ khí tối thượng: Nó là con đẻ của AWS.

  • Không cần cài đặt: Mở AWS Console lên là có sẵn.
  • Tích hợp sâu: Nó bám rễ vào mọi dịch vụ của AWS. Một cái Database RDS vừa được tạo ra là CloudWatch đã tự động có sẵn biểu đồ theo dõi nó rồi.
  • Độ tin cậy tuyệt đối: Anh em không phải lo việc "server giám sát bị chết" dẫn đến mất luôn cảnh báo, vì AWS quản lý hạ tầng này cho anh em.

4. Tóm lại

Ở bài học đầu tiên này, anh em chỉ cần nhớ một tư duy duy nhất: Đừng bao giờ để hệ thống chạy trong bóng tối. Có code xịn, có CI/CD mượt, nhưng phải có thêm con mắt giám sát thì quy trình mới gọi là hoàn hảo.

CloudWatch chính là con mắt thần đó với 3 vũ khí: Metrics (Đo lường), Logs (Truy vết) và Alarms (Cảnh báo).

Ở Bài 2, chúng ta sẽ xắn tay áo lên đi vào thực hành. Tôi sẽ hướng dẫn anh em cách đọc các biểu đồ Metrics, tự tạo một Dashboard giám sát cực ngầu và thiết lập hệ thống Cảnh báo (Alarm) để "đánh thức" anh em mỗi khi Server có dấu hiệu đột quỵ.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.