신비한 개발사전
아마존 CloudWatch와 애플리케이션 로그 연동하기 본문
AWS 서비스 중 하나인 CloudWatch는 Spring 앱이 남기는 로그를 AWS 콘솔에서 보기 편한 형식으로 확인할 수 있게 해준다. CW(CloudWatch) Agent라는 소프트웨어를 설치해 우리 앱이 남기는 로그 파일을 읽을 수 있도록 설정하면 CloudWatch에서도 해당 로그 내용을 볼 수 있다.
CW Agent 설치하기
서버 애플리케이션이 돌아가는 EC2 인스턴스에 CW Agent를 설치한다. 설치 파일은 이 페이지를 참고해 내 인스턴스의 OS와 호환되는 버전을 선택했다.
wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/arm64/latest/amazon-cloudwatch-agent.deb

amazon-cloudwatch-agent.deb 파일을 다운 받은 후 apt로 설치한다.
sudo apt install ./amazon-cloudwatch-agent.deb

CloudWatch 로그 그룹 설정하기
로그를 올바른 곳으로 받아오려면 CloudWatch에서 관리하는 로그 그룹이 필요하다. 좌측 메뉴에서 로그 > 로그 그룹 페이지로 이동해 로그 그룹을 생성해준다.

EC2로 돌아가서 /opt/aws/amazon-cloudwatch-agent/bin 디렉토리에 아래처럼 config.json 파일을 작성한다.
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "로그 파일의 절대경로",
"log_group_name": "로그 그룹 이름",
"log_stream_name": "로그 스트림 이름"
}
]
}
}
}
}
* 참고로 EC2 인스턴스에서 서버 앱을 돌린다면 로그 파일을 사용자 디렉토리에 저장하고 있는지 확인해야 한다. 만약 사용자 디렉토리에 저장한다면 절대 경로가 /home/${사용자명} 으로 시작해야 한다.
CW Agent 실행하기
Config 파일을 생성했으면 아래 명령어로 CW 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
위 스크립트는 설정 파일을 적용해야 할 때 필요하다. 만약 단순히 Agent를 끄고 키거나 상태를 확인하고 싶으면 스크립트가 더 단순해진다:
- Agent 실행: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start
- Agent 중지: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
- Agent 상태 확인: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
또는 systemctl 명령어를 사용할 수도 있다:
- Agent 실행: sudo systemctl start amazon-cloudwatch-agent
- Agent 중지: sudo systemctl stop amazon-cloudwatch-agent
- Agent 상태 확인: sudo systemctl status amazon-cloudwatch-agent
CloudWatch Logs는 로그를 CloudWatch로 송신하거나 콘솔에서 특정 로그 조회를 하기 위한 쿼리(Logs Insights) 기능을 쓸 때, 또는 실시간 트랙킹 서비스를 사용할 때마다 요금이 부과된다. (프리 티어는 제공 한도가 따로 명시돼있다) 요금표를 참고해 어느정도 비용이 드는지 확인해둘 필요가 있다.

'Infrastructure' 카테고리의 다른 글
| 로그 파일 삭제범 검거 과정 2편 (0) | 2025.10.09 |
|---|---|
| 로그 파일 삭제범 검거 과정 1편 (0) | 2025.09.28 |
| Nginx로 스팸 요청 걸러내기 (0) | 2025.09.11 |
| CW Agent의 로깅 timestamp가 고정 값인 이슈 해결법 (0) | 2025.08.07 |