제육's 휘발성 코딩
article thumbnail
반응형

CloudWatch 란 ?

Amazon CloudWatch는 AWS에서 제공하는 모니터링 및 로깅 서비스입니다. 클라우드 환경에서 리소스의 상태와 성능에 대한 실시간 데이터를 수집, 모니터링하고, 관련 이벤트에 대한 알림을 받을 수 있습니다. CloudWatch를 사용하면 애플리케이션, 서버, 인프라의 모니터링을 한 곳에서 통합적으로 관리할 수 있습니다.

CloudWatch는 다양한 AWS 리소스에 대한 모니터링을 지원합니다. 예를 들어, EC2 인스턴스, RDS 데이터베이스, Lambda 함수 등의 리소스를 모니터링할 수 있으며, CPU 사용률, 네트워크 트래픽, 디스크 사용량 등과 같은 지표를 수집할 수 있습니다.

AWS EC2에서 docker를 사용하여 스프링 서버를 배포하고 있는데, docker의 logging driver를 CloudWatch 와 연동하여 로깅 모니터링 환경을 만들려고 합니다.

 

 

https://aws.amazon.com/ko/cloudwatch/pricing/

프리티어를 사용하는 경우 위와 같이 일부 모니터링 서비스를 무료로 사용해볼 수 있습니다. 

 

AWS 서비스별 요금

서비스별 요금에서 Cloudwatch 사용량을 확인해볼 수 있습니다. 

 

AWS IAM 정책 / 역할 생성

CloudWatch를 docker-compose와 연동하기 위해선 아래 docker docs에 기재된 AWS IAM 정책과 역할 생성이 필요합니다.

https://docs.docker.com/config/containers/logging/awslogs/

 

Amazon CloudWatch Logs logging driver

Learn how to use the Amazon CloudWatch Logs logging driver with Docker Engine

docs.docker.com

 

https://docs.docker.com/config/containers/logging/awslogs/

 

 

 

IAM > 정책 > 정책생성

AWS IAM에서 정책 생성 > JSON 선택 후 docker docs에 기재된 내용을 저장합니다.

 

IAM 정책 생성

정책명을 지정하고, 정책을 생성합니다. 

 

IAM 역할 생성

생성한 정책을 연결해줄 역할을 만들어줍니다. 사용 중인 EC2에 역할 적용을 하니 AWS 서비스 > EC2를 선택해줍니다. 

 

역할 내 신규 생성한 권한 등록

 

EC2 IAM 등록 

EC2 IAM 역할 등록

역할을 만들었으니, 사용중인 EC2 인스턴스에 IAM 역할 정보를 등록 후 업데이트 해줍니다.

 

 

CloudWatch 로그 그룹 생성

CloudWatch 로그 그룹 생성

CloudWatch에 로그를 저장할 로그 그룹을 만들어줍니다. CloudWatch에선 생성한 로그그룹으로 여러 서버에서 한 곳에 모아 저장할 수 있습니다.

 

docker-compose.yml 작성

# https://docs.docker.com/compose/compose-file/compose-versioning/
version: "3.8"
services:
  web:
    extra_hosts:
      - "host.docker.internal:host-gateway"
    container_name: continaer-name
    image: image-name
    ports:
      - '8080:8080'
    logging:
      driver: awslogs
      options:
        awslogs-region: "ap-northeast-2"
        awslogs-group: "dodal-docker-group"
        awslogs-multiline-pattern: "^(INFO|ERROR)"
        awslogs-stream: "dodal-docker-backend"
  redis:
    image: redis:latest
    container_name: dodal-redis
    ports:
      - 6379:6379
    volumes:
      - ./redis/data:/data
      - ./redis/conf/redis.conf:/usr/local/conf/redis.conf
    labels:
      - "name=redis"
      - "mode=standalone"
    restart: always
    command: redis-server /usr/local/conf/redis.conf
    extra_hosts:
      - "host.docker.internal:host-gateway"

docker-compose.yml 파일 내 애플리케이션 부분에 logging driver를 설정해줍니다. awslogs-group 에는 CloudWatch에서 생성한 그룹명을 넣어줍니다.

 

CloudWatch 로그 결과 확인하기

 

CloudWatch > 로그 그룹 > 생성한 로그 그룹 조회

docker-compose를 빌드하면, 스프링 애플리케이션이 실행되면서 logging-driver로 인해 CloudWatch에 로그 스트림이 생성됩니다. 

 

CloudWatch 로그 결과 조회

CloudWatch에 로그가 실시간으로 잘 저장되고 있음을 확인할 수 있습니다. 

반응형
profile

제육's 휘발성 코딩

@sasca37

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 맞구독은 언제나 환영입니다^^