1. Ubuntu/Debian CloudWatch Agent 설치
# Amazon 공식 DEB 패키지 다운로드
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
# 패키지 설치
sudo dpkg -i amazon-cloudwatch-agent.deb
# 설치 확인
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
설치가 완료되고 나면, 이런식으로 cloudwatch agent가 중지된 상태라고 뜬다.
root@ip-10-0-131-127:~# /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
{
"status": "stopped",
"starttime": "",
"configstatus": "not configured",
"version": "1.300057.1b1167"
}
2. 설정 파일 작성
sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
나는 애플리케이션 로그와 CPU, Memory, Disk 등 메트릭을 수집하는 설정파일을 작성했다.
- metrics → CPU, Memory, Disk 메트릭 수집
- logs → 애플리케이션 로그 전송
{
"agent": {
"metrics_collection_interval": 60,
"logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log"
},
"metrics": {
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"disk": {
"measurement": [
"disk_used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"/"
]
}
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/myapp/app.log",
"log_group_name": "/aws/ec2/myapp",
"log_stream_name": "{instance_id}-app-log",
"timezone": "UTC"
}
]
}
}
}
}
3. IAM Role 권한 추가
현재 EC2 인스턴스에 붙어있는 IAM Role에 다음과 같은 권한을 부여해야,
EC2 인스턴스가 로그 그룹을 생성하고 로그를 전송할 수 있는 권한이 생긴다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
4. Agent 실행
# Agent 실행
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json \
-s
# Agent 중지
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a stop
# Agent 상태 확인
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
정상적으로 로그 그룹이 생성되었다면, CloudWatch 콘솔에서 다음 로그그룹을 확인할 수 있다.