AWS - DVA-C02

CloudWatch Logs Agent: Thu thập log hiệu quả trên EC2 & ECS (DVA-C02)

🧩 Giới thiệu

Trong hệ thống phân tán, việc thu thập và phân tích log là điều không thể thiếu để giám sát, debug và đảm bảo hoạt động ổn định của ứng dụng. AWS cung cấp Amazon CloudWatch Logs Agent để thu thập log từ các dịch vụ như EC2 và ECS rồi gửi về Amazon CloudWatch Logs.

Tuy nhiên, cách cài đặt và cấu hình agent khác nhau giữa EC2 và ECS, vì môi trường hoạt động và cách quản lý container không giống nhau. Trong bài này, chúng ta sẽ:

  • Hiểu cách hoạt động của CloudWatch Logs Agent
  • Hướng dẫn cài đặt trên EC2 và ECS
  • So sánh sự khác nhau giữa hai môi trường
  • Ôn tập các khái niệm có thể xuất hiện trong kỳ thi DVA-C02

🔎 CloudWatch Logs Agent là gì?

CloudWatch Logs Agent là công cụ giúp thu thập log từ máy chủ (EC2, container, on-premises) và gửi chúng đến Amazon CloudWatch Logs.

Hiện tại, có 2 loại agent chính:

Loại AgentMô tả
CloudWatch Logs Agent (cũ)Dựa trên Python, được cài qua .rpm hoặc .deb. Đã lỗi thời
CloudWatch Unified AgentHỗ trợ thu thập cả logmetric. Đây là agent khuyến nghị hiện tại

☁️ Cài đặt CloudWatch Logs Agent trên EC2

✅ Môi trường phù hợp:

  • EC2 chạy Amazon Linux, Ubuntu, CentOS…
  • Bạn muốn thu thập log từ file như /var/log/messages, /var/log/nginx/access.log, v.v.

🔧 Các bước thực hiện:

Bước 1: Tạo IAM Role cho EC2

EC2 cần quyền để ghi log vào CloudWatch Logs.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "logs:PutLogEvents",
      "logs:CreateLogGroup",
      "logs:CreateLogStream"
    ],
    "Resource": "*"
  }]
}

Attach policy này vào EC2 instance profile.


Bước 2: Cài đặt CloudWatch Unified Agent

sudo yum install amazon-cloudwatch-agent

Hoặc với Ubuntu:

sudo apt-get install amazon-cloudwatch-agent

Bước 3: Tạo file cấu hình /opt/aws/amazon-cloudwatch-agent/bin/config.json

Ví dụ:

{
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/var/log/messages",
            "log_group_name": "my-ec2-logs",
            "log_stream_name": "{instance_id}"
          }
        ]
      }
    }
  }
}

Bước 4: Khởi động agent

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json \
  -s

🐳 Cài đặt CloudWatch Logs trong ECS (Fargate hoặc EC2 Launch Type)

✅ Môi trường phù hợp:

  • Ứng dụng chạy trong container (ECS)
  • Bạn muốn log ứng dụng container được gửi đến CloudWatch

🔧 Cách cấu hình:

Trong ECS, bạn không cần cài agent thủ công, mà sử dụng log driver awslogs.

Ví dụ trong task definition:

"logConfiguration": {
  "logDriver": "awslogs",
  "options": {
    "awslogs-group": "/ecs/my-app",
    "awslogs-region": "ap-northeast-1",
    "awslogs-stream-prefix": "ecs"
  }
}

ECS sẽ tự động ghi log STDOUT và STDERR từ container vào CloudWatch.

Với ECS Fargate:

  • Không cần agent
  • Chỉ cần IAM Task Role có quyền CloudWatch Logs

⚖️ So sánh: EC2 vs ECS

Tiêu chíEC2ECS
Cài đặt AgentPhải cài đặt thủ côngKhông cần (dùng awslogs driver)
Nguồn logFile hệ thốngSTDOUT, STDERR container
Quản lý IAMEC2 RoleTask Role
Tính linh hoạtToàn quyền cấu hình file logGiới hạn trong log của container
Khả năng scaleTự xử lý scaleECS xử lý scale và log tự động

🧠 Câu hỏi luyện thi DVA-C02

Câu hỏi: Bạn đang triển khai một ứng dụng Node.js chạy trong container ECS (Fargate). Bạn cần gửi log ứng dụng về CloudWatch Logs. Cách nào phù hợp nhất?

A. Cài CloudWatch Agent trong container
B. Sử dụng log driver json-file
C. Sử dụng log driver awslogs
D. Cấu hình rsyslog để forward về CloudWatch

Đáp án đúng: C


🛡 Best Practices

Best PracticeMô tả
Dùng Unified Agent cho EC2Hỗ trợ cả log và metric
Dùng awslogs driver cho ECSDễ cấu hình, tích hợp CloudWatch tốt
Cấu hình log rotationTránh tốn dung lượng ổ đĩa
Gắn đúng IAM roleĐảm bảo đủ quyền logs:PutLogEvents, CreateLogStream
CloudWatch Logs InsightsDùng để query và phân tích log dễ dàng

📌 Kết luận

  • EC2 cần cài CloudWatch Unified Agent thủ công để thu thập log từ file hệ thống.
  • ECS chỉ cần cấu hình log driver awslogs, không cần cài thêm gì.
  • Cả hai đều yêu cầu cấp quyền IAM phù hợp để ghi log vào CloudWatch Logs.
  • Nắm vững cấu hình này giúp bạn triển khai ứng dụng production-ready và sẵn sàng cho kỳ thi DVA-C02.

13 Views

Leave a Reply

Your email address will not be published. Required fields are marked *