신비한 개발사전

아마존 CloudWatch와 애플리케이션 로그 연동하기 본문

Infrastructure

아마존 CloudWatch와 애플리케이션 로그 연동하기

jbilee 2025. 8. 6. 01:23

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

CW Agent 설치

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) 기능을 쓸 때, 또는 실시간 트랙킹 서비스를 사용할 때마다 요금이 부과된다. (프리 티어는 제공 한도가 따로 명시돼있다) 요금표를 참고해 어느정도 비용이 드는지 확인해둘 필요가 있다.