Cấu hình gửi docker container log lên AWS Cloudwatch Logs – Cuongquach.com | Nếu bạn muốn gửi log stdout/stderr của docker container lên AWS Cloudwatch Log Group từ những máy chủ EC2 Instance, không chạy các Container Orchestrator như ECS/EKS thì docker
đã support logging driver awslogs
từ lâu hỗ trợ bạn chuyện đó.
Contents
Youtube Video
Cấu hình gửi docker container log lên AWS Cloudwatch Logs
Điều kiện:
– Mình giả định các bạn đã biết dịch vụ AWS Cloudwatch Logs dùng để lưu trữ/tìm kiếm các log event được gửi đến dịch vụ này.
– EC2 Instance của bạn phải có Instance Profile có IAM policy gửi log lên Cloudwatch Log Group hoặc bạn tự cấu hình IAM AWS Credentials trên OS (case server on-premise). Quyền hạn tối thiểu như sau :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Docker logging drivers
Docker có thể chuyển tiếp các log container stdout/stderr đến các dịch vụ khác nhau với các logdriver tích hợp sẵn trong docker như: json-file, syslog, fluentd, awslogs, splunk,… mà không cần cài đặt thêm các log agent khác trên hệ thống.
Chúng ta sẽ sử dụng logdriver là awslogs
để docker tự động gửi log container có cấu hình logdriver awslogs
lên AWS Cloudwatch Logs (https://docs.docker.com/config/containers/logging/awslogs/).
Docker run
Bạn có thể chạy lệnh docker
để start một container với option logging driver awslogs
như sau .
# docker run -d --name cuongquachlab-nginx --log-driver=awslogs --log-opt awslogs-region=ap-southeast-1 --log-opt awslogs-group="/apps/cuongquachlab-nginx" --log-opt awslogs-create-group=true -p 80:80 nginx
Docker-compose
Sử dụng docker-compose
để quản lý container của bạn với cấu hình awslogs
.
# mkdir /opt/cuongquachlab-nginx
# cd /opt/cuongquachlab-nginx
# vi docker-compose.yaml
version: "3.7"
services:
cuongquachlab-nginx:
image: nginx:latest
restart: always
ports:
- "80:80"
logging:
driver: "awslogs"
options:
awslogs-region: "ap-southeast-1"
awslogs-group: "/apps/cuongquachlab-nginx"
awslogs-create-group: "true"
# docker-compose up -d
Kiểm tra AWS Cloudwatch Logs
Bạn sẽ thấy Cloudwatch Log Group /apps/cuongquachlab-nginx mà chúng ta đã cấu hình. Bên trong là các container-id tương ứng stream name.


Nguồn: https://cuongquach.com/