AWS EC2 인스턴스에 CloudWatch 에이전트를 설치하여 시스템 메트릭(CPU, 메모리, 디스크)를 모니터링하는 방법을 정리했습니다.
다음에는 Spring 로그 지표를 모니터링하는 방법을 쓰려고합니다.
시스템의 상태와 성능을 지속적으로 관찰하고 측정하여 문제를 사전에 감지하고 대응하는 활동입니다.
제가 모니터링에 대해 공부하면서 생각한 주요한 핵심요소는 3가지 입니다.
1. 수집
2. 시각화
3. 알림
EC2 인스턴스에 CloudWatch 에이전트 사용을 위한 IAM 역할을 설정했습니다. 다음 정책이 필요합니다:
CloudWatchAgentServerPolicy
(CloudWatch 에이전트용)IAM 역할 설정 방법:
1. AWS EC2 콘솔에서 해당 인스턴스 선택
2. 작업 → 보안 → IAM 역할 수정
3. 위 정책들이 포함된 역할을 선택하여 적용
역할 생성에 대한 내용은 여러 글들이 있으니 참고하면 금방 할 것 같습니다.
모든 과정은 EC2 인스턴스 안에서 진행했습니다.
먼저 CloudWatch 에이전트 패키지를 다운로드했습니다:
# Ubuntu/Debian 계열
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/
디렉토리가 생성됩니다.
CloudWatch 에이전트 구성 파일을 생성하기 위해 해당 디렉토리로 이동했습니다:
cd /opt/aws/amazon-cloudwatch-agent/bin/
종합적인 모니터링을 위한 구성 파일을 생성했습니다:
sudo vi config.json
vi 에디터로 amazon-cloudwatch-agent.json
파일을 생성 후 아래 내용을 넣습니다.
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"cpu": {
"measurement": ["cpu_usage_user", "cpu_usage_system", "cpu_usage_idle", "cpu_usage_iowait"],
"metrics_collection_interval": 60,
"totalcpu": true
},
"disk": {
"measurement": ["used_percent"],
"metrics_collection_interval": 60,
"resources": ["*"]
},
"mem": {
"measurement": ["mem_used_percent"],
"metrics_collection_interval": 60
}
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "lifelog-dev-system-logs",
"log_stream_name": "{instance_id}-messages",
"timezone": "Local"
}
]
}
}
}
}
config.json파일을 실행하기 위한 권한을 주었습니다.
chmod 755 config.json
그리고 생성한 config.json
파일을 참조하여 CloudWatch 에이전트를 시작했습니다
sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:config.json -s
정상적으로 실행되고 있는지 상태를 확인했습니다:
sudo systemctl status amazon-cloudwatch-agent
<결과>
에이전트가 시스템 서비스로 등록되었으므로, 이후에는 systemctl
로도 관리할 수 있습니다:
# 상태 확인
sudo systemctl status amazon-cloudwatch-agent
# 재시작
sudo systemctl restart amazon-cloudwatch-agent
# 자동 시작 설정 (인스턴스 재부팅 시 자동 시작)
sudo systemctl enable amazon-cloudwatch-agent
모니터링 설정이 완료되었다면, CloudWatch 대시보드를 통해 수집된 메트릭을 시각화해보겠습니다.
CloudWatch Agent를 통해 다음과 같은 시스템 메트릭들이 1분 간격으로 수집됩니다:
CPU 사용률
cpu_usage_idle
: 유휴 상태 CPU 비율
cpu_usage_iowait
: I/O 대기 시간
cpu_usage_user
: 사용자 프로세스 CPU 사용률
cpu_usage_system
: 시스템 프로세스 CPU 사용률
디스크 사용률
disk_used_percent
: 디스크 사용률 (%)
메모리 사용률
mem_used_percent
: 메모리 사용률 (%)
설정이 완료되면 아래와 같이 실시간 모니터링 대시보드를 확인할 수 있습니다:
참고: 메트릭이 대시보드에 나타나기까지 5-10분 정도 소요될 수 있습니다. Agent 설정 적용 후 잠시 기다린 다음 확인해보세요.