🧩 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 Agent | Mô tả |
---|---|
CloudWatch Logs Agent (cũ) | Dựa trên Python, được cài qua .rpm hoặc .deb . Đã lỗi thời |
CloudWatch Unified Agent | Hỗ trợ thu thập cả log và metric. Đâ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í | EC2 | ECS |
---|---|---|
Cài đặt Agent | Phải cài đặt thủ công | Không cần (dùng awslogs driver) |
Nguồn log | File hệ thống | STDOUT, STDERR container |
Quản lý IAM | EC2 Role | Task Role |
Tính linh hoạt | Toàn quyền cấu hình file log | Giới hạn trong log của container |
Khả năng scale | Tự xử lý scale | ECS 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 Practice | Mô tả |
---|---|
Dùng Unified Agent cho EC2 | Hỗ trợ cả log và metric |
Dùng awslogs driver cho ECS | Dễ cấu hình, tích hợp CloudWatch tốt |
Cấu hình log rotation | Tránh tốn dung lượng ổ đĩa |
Gắn đúng IAM role | Đảm bảo đủ quyền logs:PutLogEvents , CreateLogStream … |
CloudWatch Logs Insights | Dù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.