CloudWatch Metrics và CloudWatch Logs

4 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

CloudWatch Metrics

  • CloudWatch cung cấp các metric cho mọi service trong AWS
  • Metric là một biến để giám sát (ví dụ: CPUUtilization, NetworkIn,...)
  • Các metric thuộc về namespace
  • Dimension là thuộc tính của một metric (ví dụ: instance id, environment, v.v...)
  • Tối đa 30 dimension cho mỗi metric
  • Metric có timestamp
  • Có thể tạo CloudWatch Dashboard để hiển thị các metric
  • Có thể tạo CloudWatch Custom Metrics (ví dụ như theo dõi RAM chẳng hạn)

CloudWatch Metric Streams

  • Truyền liên tục các metric của CloudWatch đến một điểm đích do bạn chọn, với độ trễ thấp và gần như thời gian thực (near-real-time delivery).
  • Có thể đẩy đến Amazon Kinesis Data Firehose (và từ đó đến các đích tiếp theo)
  • Hoặc tích hợp với các bên thứ 3 như: Datadog, Dynatrace, New Relic, Splunk, Sumo Logic...
  • Có thể cấu hình filter metrics để chỉ truyền một phần metric nhất định (subset).
  • CloudWatch Metrics: Nguồn dữ liệu metric gốc của AWS (ví dụ: CPUUtilization, NetworkOut,...).
  • Dữ liệu được stream gần như thời gian thực vào Kinesis Data Firehose.
  • Từ Firehose, metric có thể được chuyển đến các đích lưu trữ/phân tích như:
    • Amazon S3 → sau đó có thể query bằng Athena
    • Amazon Redshift: phục vụ mục tiêu phân tích dữ liệu dạng kho dữ liệu (Data Warehouse)
    • Amazon OpenSearch: dùng cho tìm kiếm và phân tích log/metric dạng gần thời gian thực

CloudWatch Logs

  • Log group: tên tùy ý, thường đại diện cho một ứng dụng. Là một tập hợp logic chứa nhiều log stream
  • Log stream: các instance bên trong ứng dụng / file log / container. Là một chuỗi log ghi theo thời gian, thuộc về một log group nhất định.
  • Có thể định nghĩa chính sách hết hạn log (log expiration policy) — ví dụ: không bao giờ hết hạn, hoặc từ 1 ngày đến 10 năm
  • CloudWatch Logs có thể gửi log đến:
    • Amazon S3 (dạng export dữ liệu)
    • Kinesis Data Streams
    • Kinesis Data Firehose
    • AWS Lambda
    • OpenSearch
  • Log được mã hóa mặc định
  • Có thể thiết lập mã hóa dựa trên KMS sử dụng key riêng của bạn

CloudWatch Logs Insights là gì?

  • Là một query engine được thiết kế chuyên biệt để:
    • Truy vấn và phân tích log được lưu trữ trong CloudWatch Logs.
    • Phân tích nhanh lượng lớn log (theo kiểu truy xuất dữ liệu truy vấn dạng SQL-like).
  • Tính năng nổi bật:
    • Search & Analyze Logs
      • Có thể tìm kiếm sâu trong log để:
        • Tìm IP cụ thể
        • Đếm số lần xuất hiện của chuỗi "ERROR", "Timeout", v.v.
        • Truy vết theo RequestId hay traceId nếu log structured.
    • Query Language chuyên biệt
      • Giúp dev hoặc SRE viết các truy vấn kiểu DSL như:
        • fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20 
    • Cross-Account / Cross-Group Query
      • Có thể truy vấn nhiều Log Group cùng lúc, kể cả giữa các AWS Account khác nhau (nếu được thiết lập quyền).

Đây là một query engine, không phải real-time engine
→ Nghĩa là bạn query trên dữ liệu đã ghi, không dùng để xử lý stream/trigger ngay khi log được ghi (như Lambda hoặc EventBridge).

CloudWatch Logs Subscriptions

  • Khi bạn cấu hình một subscription filter, CloudWatch Logs sẽ chủ động đẩy log (push) thỏa mãn điều kiện filter đến các đích đã chỉ định
  • Gửi log đến Kinesis Data Streams, Kinesis Data Firehose hoặc Lambda
  • Subscription Filter – bộ lọc để xác định log nào sẽ được gửi đến đích
  • CloudWatch Logs → xuất log
  • Subscription Filter → lọc log theo điều kiện
  • Log sau khi lọc sẽ được gửi đến:
    • Lambda (xử lý real-time) → sau đó có thể gửi tiếp đến OpenSearch Service
    • Kinesis Data Firehose (gần như real-time) → đẩy tiếp đến S3
    • Kinesis Data Streams → kết nối với các dịch vụ như:
      • Kinesis Data Firehose (KDF)
      • Kinesis Data Analytics (KDA)
      • EC2
      • Lambda

CloudWatch Logs cho EC2

  • Mặc định, không có log nào từ máy EC2 của bạn được gửi đến CloudWatch.
  • Bạn cần chạy một CloudWatch Agent trên EC2 để đẩy (push) các file log mà bạn muốn lên CloudWatch.
  • Đảm bảo IAM permission đã được cấp đúng để agent có thể upload log.
  • Agent này cũng có thể được cài đặt trên server on-premise (không cần phải là EC2).
CloudWatch Logs Agent & Unified Agent
  • Dành cho các máy chủ ảo (EC2 instance, máy chủ on-premise...)
  • CloudWatch Logs Agent
    • Là phiên bản cũ của agent.
    • Chỉ có thể gửi log tới CloudWatch Logs.
  • CloudWatch Unified Agent
    • Thu thập thêm các metrics cấp hệ thống như RAM, process, v.v...
    • Vẫn thu thập log để gửi đến CloudWatch Logs.
    • Hỗ trợ cấu hình tập trung thông qua SSM Parameter Store.
Bạn thấy bài này thế nào?