AWS Cloud Practitioner · Tiếng Việt
Chương 12 / 20

Giám sát hệ thống trên AWS: CloudWatch, CloudTrail...

Tìm hiểu bộ công cụ giám sát hiệu năng, thu thập log, kiểm toán (audit) hành vi truy cập, và gỡ lỗi (debug) ứng dụng phân tán trên AWS — từ CloudWatch, EventBridge, CloudTrail, X-Ray đến CodeGuru và AWS Health Dashboard.

Nội dung chương

  1. Amazon CloudWatch Metrics – theo dõi số liệu hiệu năng
  2. Amazon CloudWatch Alarms – cảnh báo tự động
  3. Amazon CloudWatch Logs – thu thập log tập trung
  4. Amazon EventBridge – phản ứng theo sự kiện và lịch trình
  5. AWS CloudTrail – kiểm toán API và hoạt động tài khoản
  6. AWS X-Ray – theo dõi và gỡ lỗi ứng dụng phân tán
  7. Amazon CodeGuru – rà soát code và tối ưu hiệu năng bằng ML
  8. AWS Health Dashboard – tình trạng dịch vụ AWS
  9. Phân biệt CloudWatch, CloudTrail và X-Ray

1. Amazon CloudWatch Metrics – theo dõi số liệu hiệu năng

Khi vận hành hệ thống trên cloud, bạn cần biết "sức khỏe" của từng thành phần đang như thế nào: CPU có đang quá tải không, dung lượng ổ đĩa còn bao nhiêu, ứng dụng có đang trả lời chậm không... Đó chính là vai trò của Amazon CloudWatch — dịch vụ giám sát trung tâm của AWS, cung cấp số liệu (metric) cho HẦU HẾT các dịch vụ AWS mà bạn đang sử dụng.

Một metric (số liệu/chỉ số) là một biến số mà bạn muốn theo dõi theo thời gian — ví dụ CPUUtilization (mức sử dụng CPU), NetworkIn (lưu lượng mạng đi vào)... Mỗi metric đều có một dấu thời gian (timestamp) gắn liền với từng giá trị đo được, cho phép bạn vẽ biểu đồ biến động của nó theo thời gian.

CloudWatch cho phép bạn tạo dashboard (bảng điều khiển trực quan) để hiển thị nhiều metric cùng lúc trên một màn hình duy nhất — ví dụ một dashboard hiển thị biểu đồ chi phí (billing metric) đang tăng theo thời gian trong tháng.

Một số nhóm metric quan trọng cần nhớ:

Lưu ý khi thi: Đề thi rất hay "gài" chi tiết: CloudWatch mặc định KHÔNG giám sát RAM/memory usage của EC2 instance, chỉ có CPU, Network, Status Checks. Muốn có metric RAM, disk space bên trong OS, log ứng dụng... bạn PHẢI tự cài CloudWatch Agent.

2. Amazon CloudWatch Alarms – cảnh báo tự động

Có metric là chưa đủ — bạn cần một cơ chế để hệ thống TỰ ĐỘNG phản ứng khi có điều gì bất thường xảy ra, mà không cần con người phải ngồi canh màn hình 24/7. Đó là vai trò của CloudWatch Alarms (cảnh báo).

Một Alarm được gắn với một metric cụ thể, và bạn định nghĩa một ngưỡng (threshold) — ví dụ "CPU Utilization vượt quá 80% trong 5 phút liên tục". Khi điều kiện này xảy ra, Alarm sẽ kích hoạt một hành động (action). Các hành động phổ biến gồm:

Khi cấu hình Alarm, bạn có nhiều lựa chọn về cách tính toán giá trị để so sánh với ngưỡng — ví dụ dùng giá trị trung bình (average), phần trăm (percentage), giá trị lớn nhất (max), nhỏ nhất (min)... và bạn cũng chọn được khoảng thời gian (period) để đánh giá điều kiện của alarm (ví dụ đánh giá mỗi 1 phút, 5 phút...).

Một alarm luôn ở một trong ba trạng thái (Alarm States):

Ví dụ thực tế: Bạn có thể tạo một "billing alarm" (cảnh báo chi phí) trên metric Total Estimated Charge — ví dụ đặt ngưỡng 50 USD. Khi tổng chi phí AWS trong tháng vượt qua 50 USD, Alarm chuyển sang trạng thái ALARM và tự động gửi một thông báo qua SNS đến email của bạn, giúp bạn phát hiện sớm việc chi tiêu vượt dự kiến trước khi hóa đơn cuối tháng "gây bất ngờ".
Lưu ý khi thi: Billing alarm chỉ có thể được tạo dựa trên metric Total Estimated Charge tại Region us-east-1, và bạn phải bật tùy chọn "Receive Billing Alerts" trong Billing Preferences trước khi có thể tạo alarm này.

3. Amazon CloudWatch Logs – thu thập log tập trung

Ngoài các số liệu (metric) và cảnh báo (alarm), CloudWatch còn có một thành phần quan trọng khác: CloudWatch Logs — nơi tập trung lưu trữ log (nhật ký hoạt động) từ nhiều nguồn khác nhau trong hệ thống AWS của bạn, giúp bạn không phải "chạy vào từng server" để xem log riêng lẻ.

CloudWatch Logs có thể thu thập log từ nhiều nguồn, bao gồm:

CloudWatch Logs cho phép giám sát log theo thời gian thực (real-time monitoring), và bạn có thể điều chỉnh (adjustable) thời gian lưu trữ (retention) của log — ví dụ giữ log 30 ngày, 90 ngày, 1 năm, hoặc vĩnh viễn, tùy theo nhu cầu vận hành và tuân thủ (compliance) của tổ chức.

CloudWatch Logs cho EC2

Một điểm rất quan trọng và thường bị hiểu nhầm: theo mặc định (by default), KHÔNG có bất kỳ log nào từ một EC2 instance được tự động gửi lên CloudWatch Logs. Việc thu thập metric CPU/Network là tự động, nhưng thu thập log file bên trong instance thì KHÔNG tự động.

Để đưa log từ EC2 vào CloudWatch, bạn cần:

Điều thú vị là CloudWatch Log Agent không chỉ dùng được cho EC2 — nó còn có thể được cài đặt trên các server chạy on-premises (tại trung tâm dữ liệu riêng của doanh nghiệp), giúp bạn tập trung log của cả hệ thống hybrid (vừa cloud vừa on-premises) vào một nơi duy nhất.

Lưu ý khi thi: Nhớ kỹ: EC2 metrics cơ bản (CPU, Network, Status Check) tự động có sẵn trong CloudWatch, nhưng log file bên trong EC2 KHÔNG tự động xuất hiện — phải cài CloudWatch Agent và cấp quyền IAM Role tương ứng.

4. Amazon EventBridge – phản ứng theo sự kiện và lịch trình

Amazon EventBridge (trước đây gọi là CloudWatch Events) là dịch vụ giúp bạn xây dựng các "luật" (rule) để hệ thống tự động phản ứng khi có một sự kiện nào đó xảy ra, hoặc chạy theo một lịch trình định sẵn. Có hai kiểu kích hoạt (trigger) chính:

Khi luật được kích hoạt, EventBridge có thể gọi (trigger) một AWS Lambda function, hoặc gửi message vào SQS/SNS để các hệ thống khác xử lý tiếp.

Ví dụ minh họa:

EventBridge Rules – nguồn và đích

EventBridge có thể lắng nghe sự kiện từ rất nhiều nguồn (source), ví dụ:

Và có thể gửi đến rất nhiều loại đích (destination) khác nhau, chia theo nhóm:

NhómVí dụ đích (destination)
ComputeLambda, AWS Batch, ECS Task
IntegrationSQS, SNS, Kinesis Data Streams
OrchestrationStep Functions, CodePipeline, CodeBuild
MaintenanceSystems Manager (SSM), EC2 Actions

Các tính năng nâng cao của EventBridge

Lưu ý khi thi: Phân biệt rõ: CloudWatch Alarms phản ứng dựa trên NGƯỠNG của một METRIC; EventBridge phản ứng dựa trên SỰ KIỆN cụ thể (một hành động API nào đó xảy ra) hoặc LỊCH TRÌNH. Đừng nhầm lẫn hai khái niệm này khi đề thi mô tả tình huống.

5. AWS CloudTrail – kiểm toán API và hoạt động tài khoản

AWS CloudTrail là dịch vụ cung cấp khả năng quản trị (governance), tuân thủ (compliance) và kiểm toán (audit) cho toàn bộ tài khoản AWS của bạn. Nói một cách đơn giản: CloudTrail giống như một "camera giám sát" ghi lại MỌI hành động đã được thực hiện trong tài khoản AWS — ai đã làm gì, từ đâu, vào lúc nào.

Điểm cực kỳ quan trọng: CloudTrail được bật (enabled) theo mặc định ngay khi bạn tạo tài khoản AWS — bạn không cần phải tự kích hoạt nó.

CloudTrail ghi lại lịch sử của các sự kiện/lệnh gọi API (event/API calls) được thực hiện trong tài khoản AWS của bạn, thông qua bất kỳ phương thức nào:

Bạn có thể đưa log từ CloudTrail vào CloudWatch Logs hoặc lưu trữ vào Amazon S3 để phân tích hoặc lưu trữ lâu dài. Một "trail" (đường mòn ghi log) có thể được áp dụng cho All Regions (mọi vùng — đây là lựa chọn mặc định) hoặc chỉ một Region cụ thể.

Sơ đồ hoạt động tổng quát: các hành động được thực hiện qua SDK/CLI/Console bởi IAM User & IAM Role → được CloudTrail ghi nhận → hiển thị trên CloudTrail Console để bạn kiểm tra (inspect) và kiểm toán (audit) → đồng thời log có thể chảy tiếp vào CloudWatch Logs hoặc lưu vào S3 Bucket.

Lưu ý khi thi: Đây là một trong những câu "must-know" của đề thi: nếu có một tài nguyên (resource) bị xóa một cách bất thường trong tài khoản AWS, việc đầu tiên cần làm là kiểm tra CloudTrail để biết ai/cái gì đã gọi API xóa tài nguyên đó, vào lúc nào, từ địa chỉ IP hoặc IAM identity nào.
Ví dụ thực tế: Một buổi sáng, một EC2 instance quan trọng của công ty bất ngờ biến mất. Quản trị viên vào CloudTrail, tìm kiếm sự kiện "TerminateInstances" trong vài giờ gần nhất, và phát hiện ra chính xác IAM User nào đã gọi API này, vào lúc nào, từ địa chỉ IP nào — từ đó xác định được đây là lỗi do một script tự động cấu hình sai, không phải bị tấn công.

6. AWS X-Ray – theo dõi và gỡ lỗi ứng dụng phân tán

Hãy nghĩ về cách gỡ lỗi (debug) ứng dụng theo kiểu truyền thống: kiểm thử (test) ở máy local, thêm các dòng log (log statement) rải rác khắp code, rồi triển khai (deploy) lại lên production để xem có sửa được lỗi chưa. Cách này có nhiều vấn đề:

AWS X-Ray ra đời để giải quyết chính xác vấn đề này — nó cung cấp khả năng phân tích trực quan (visual analysis) cho ứng dụng của bạn, vẽ ra sơ đồ (map) thể hiện một request đã "đi qua" những dịch vụ nào, mất bao lâu ở mỗi bước, và ở đâu xảy ra lỗi.

Các lợi ích cụ thể mà X-Ray mang lại:

Ví dụ thực tế: Một ứng dụng thương mại điện tử gồm 6 microservice (giỏ hàng, thanh toán, kho hàng, giao hàng...). Khách hàng phàn nàn thanh toán chậm. Nhờ AWS X-Ray, kỹ sư có thể xem "bản đồ" toàn bộ request đi qua các service, và phát hiện ngay rằng riêng bước gọi đến Fraud Service đang mất 4 giây — trong khi các bước khác chỉ mất vài chục milli-giây — từ đó khoanh vùng chính xác nơi cần tối ưu, thay vì phải dò từng service một cách mù quáng.
Lưu ý khi thi: Từ khóa nhận diện X-Ray: "trace requests", "microservices", "distributed application", "pinpoint bottleneck". Đây là công cụ TRUY VẾT LUỒNG XỬ LÝ của một request, khác hẳn với CloudTrail (truy vết API CALL của người dùng/IAM identity) và CloudWatch (theo dõi METRIC/LOG).

7. Amazon CodeGuru – rà soát code và tối ưu hiệu năng bằng ML

Amazon CodeGuru là dịch vụ sử dụng Machine Learning (ML) để tự động rà soát code (automated code reviews) và đưa ra khuyến nghị về hiệu năng ứng dụng (application performance recommendations). CodeGuru có hai thành phần chính, phục vụ hai giai đoạn khác nhau trong vòng đời phát triển phần mềm:

Thành phầnGiai đoạn sử dụngChức năng chính
CodeGuru ReviewerTrong quá trình phát triển (development), lúc Build & TestRà soát code tĩnh (static code analysis), đưa ra khuyến nghị có thể hành động ngay (actionable recommendations)
CodeGuru ProfilerKhi ứng dụng đang chạy thật (runtime, production)Cho thấy hiệu năng thực tế và đề xuất cải thiện chi phí/tốc độ

Luồng làm việc tổng quát: Coding (viết code) → Build & Test (CodeGuru Reviewer tham gia rà soát code, đưa ra khuyến nghị ngay tại bước này) → Deploy (triển khai) → Measure (CodeGuru Profiler tham gia đo lường, tìm cơ hội cải thiện hiệu năng và chi phí khi ứng dụng đã chạy thật trong production).

CodeGuru Reviewer

Giúp phát hiện các vấn đề nghiêm trọng trong code như: lỗ hổng bảo mật (security vulnerabilities), các lỗi khó phát hiện (hard-to-find bugs). Ví dụ các loại vấn đề nó có thể tìm ra: không tuân thủ các "coding best practices" phổ biến, rò rỉ tài nguyên (resource leaks — ví dụ quên đóng kết nối database), các lỗ hổng an ninh, thiếu kiểm tra đầu vào (input validation).

CodeGuru Reviewer sử dụng Machine Learning và automated reasoning (suy luận tự động), được huấn luyện dựa trên hàng triệu lượt rà soát code thực tế từ hàng nghìn repository mã nguồn mở và các repository nội bộ của Amazon — tức là nó mang theo "kinh nghiệm" tích lũy được từ rất nhiều dự án thực tế. Hiện tại CodeGuru Reviewer hỗ trợ ngôn ngữ Java và Python, và có thể tích hợp trực tiếp với GitHub, Bitbucket, và AWS CodeCommit.

CodeGuru Profiler

Giúp bạn hiểu hành vi thực tế (runtime behavior) của ứng dụng khi nó đang chạy trong môi trường thật. Ví dụ, CodeGuru Profiler có thể phát hiện ra rằng ứng dụng của bạn đang tiêu tốn CPU một cách bất thường chỉ vì một đoạn code ghi log (logging routine) không hiệu quả.

Các tính năng chính của CodeGuru Profiler:

Lưu ý khi thi: Ghi nhớ đơn giản: Reviewer = rà soát CODE lúc PHÁT TRIỂN (trước khi chạy); Profiler = theo dõi HIỆU NĂNG lúc ỨNG DỤNG ĐANG CHẠY THẬT (production). Đừng nhầm hai thành phần này với nhau.

8. AWS Health Dashboard – tình trạng dịch vụ AWS

AWS Health Dashboard thực chất gồm hai trang/khái niệm khác nhau, dễ gây nhầm lẫn nếu không phân biệt rõ:

AWS Health Dashboard – Service History (trước đây gọi là AWS Service Health Dashboard)

Đây là trang hiển thị tình trạng hoạt động (health) của TẤT CẢ các dịch vụ AWS, ở TẤT CẢ các Region — tức là một cái nhìn tổng quan chung cho toàn bộ nền tảng AWS, không riêng cho tài khoản của bạn. Trang này:

AWS Health Dashboard – Your Account (trước đây gọi là AWS Personal Health Dashboard - PHD)

Trong khi Service Health Dashboard cho biết tình trạng chung của cả nền tảng AWS, Account Health Dashboard lại cung cấp góc nhìn CÁ NHÂN HÓA (personalized view) — nó cho bạn biết chính xác các tài nguyên (resources) trong tài khoản CỦA BẠN đang bị ảnh hưởng như thế nào bởi các sự cố/sự kiện của AWS.

Các đặc điểm của Account Health Dashboard:

Tiêu chíService Health DashboardAccount (Personal) Health Dashboard
Phạm viToàn bộ AWS, tất cả khách hàngRiêng tài khoản/Organization của bạn
Nội dungTình trạng chung các dịch vụ, mọi RegionSự kiện AWS ảnh hưởng trực tiếp đến resource của bạn
Tính chủ độngKhông cá nhân hóaCảnh báo, khắc phục, thông báo bảo trì chủ động
Lưu ý khi thi: Câu hỏi hay hỏi phân biệt hai dashboard này: nếu đề bài nói về "tình trạng chung của AWS trên toàn thế giới" → Service Health Dashboard; nếu nói về "AWS thông báo riêng cho tài khoản của tôi rằng resource X sẽ bị ảnh hưởng" → Account (Personal) Health Dashboard.

9. Phân biệt CloudWatch, CloudTrail và X-Ray

Đây là một trong những nhóm câu hỏi dễ gây nhầm lẫn nhất trong đề thi CLF-C02, vì cả ba dịch vụ đều liên quan đến "giám sát" nhưng lại trả lời ba câu hỏi hoàn toàn khác nhau. Hãy dùng phép ví von sau để nhớ: nếu hệ thống AWS của bạn là một cơ thể sống, thì:

Dịch vụTrả lời câu hỏiĐối tượng theo dõi
CloudWatchHiệu năng, tài nguyên đang thế nào?Metric, Log, Alarm, Event của dịch vụ AWS
CloudTrailAi đã gọi API gì, khi nào?Lịch sử hành động/API call trong tài khoản
X-RayMột request đi qua service nào, chậm ở đâu?Luồng xử lý (trace) của từng request trong ứng dụng phân tán
Ví dụ thực tế: Một website bị chậm bất thường vào buổi trưa. Bạn dùng CloudWatch để thấy CPU của EC2 đang tăng cao; dùng X-Ray để phát hiện chính bước gọi tới một API bên thứ ba đang mất 3 giây; và dùng CloudTrail để kiểm tra xem có ai vừa thay đổi cấu hình Security Group hay Auto Scaling Group trước khi sự cố xảy ra không. Ba công cụ bổ trợ cho nhau để có cái nhìn đầy đủ về sự cố.

Tổng kết chương

← Chương trước Chương sau →