본문 바로가기
Today I Learned 2024. 8. 12.

(24.08.12)[18주차] AWS 의 CloudWatch를 통한 Monitoring & Logging

 

CI/CD 파이프라인에 있어서 실시간으로 그 과정을 보고 해당 사항을 기록으로 남기기 위한 Monitoring 과 Logging, 그리고 해당 로그를 분석, 추적, 개선하면서 DevOps 환경을 구축하면서

최종적으로 서비스 제품의 보증을 완벽하게 구현해 내는 것이 필요하다.

 

따라서 자동화 CI/CD 환경에서 코드의 품질을 높일 수 있고, 이번 최종 프로젝트 기간 CD의 목표까지 했으나,

관련하여 Monitoring과 Logging도 구축 계획을 세우면서 관련하여 정리하고 나름대로 Pipeline에 추가했다.

 

기존의 파이프라인과 배포환경 모두 AWS의 EC2, RDS, S3를 사용한 것이므로 AWS CloudWatch를 사용해 빠르게 통합할 수 있다.

 

여러곳에서 공부하고 한번 테스트 해보면서 이론에 대해 먼저 정리를 한다.

 


Monitoring 과 Logging을 추가한 파이프라인

AWS CloudWatch

  • AWS Application 전체에서 데이터를 수집해서 실시간으로 전체 AWS 성능을 모니터링, 로깅을 하고, 이에 따른 Alert를 설정하는 뷰를 제공하는 서비스
    • 시스템 전체의 리소스 사용률, 애플리케이션 성능, 운영 상태를 파악
  • 사용자가 직접적으로 지정해서 수집된 데이터 중 표시할 지표를 지정하고, 지속적으로 확인, Application을 제어할 수 있음
  • ex) 쓰기, 읽기에 문제가 생긴 AWS RDS 정지, 갑작스러운 서버 과부화 작업 확인으로 EC2 인스턴스 중지 등

CloudWatch Metrics

  • AWS 리소스와 Application 성능 관련 데이터 및 지표(Metrics)를 실시간을 수집하고 모니터링을 할 수있도록 하는 서비스
    • AWS 리소스 : EC2 인스턴스, RDS, ALB, S3 등등
    • 사용자정의 Metrics
      • 특정 Application단위로 특정 지표 또는 구체적인 메트릭을 지정해 수집 가능
      ex) CPU 사용량, 읽기/쓰기 작업수, 디스크 I/O, 네트워크 트래픽, 사용자 수, 응답 오류, S3 객체 수 등등
  • Dashboard
    • 수집된 데이터(Metrics)를 시각적으로 하나의 Dashboard에서 확인
    • 시각적인 Graph 또는 Chart를 활용해서 실시간으로 추적과 분석의 모니터링을 가능

CloudWatch Logs

  • Application 의 모든 로그 데이터를 수집, 저장하고 분석을 할 수 있는 서비스
    • 따라서, 디버깅과 자체에서 로그를 통한 모니터링도 가능
  • Logs Stream
    • Application에 국한 되어 있지 않고, AWS 전체 서비스에서 발생한 로그까지 모두 수집
  • Logs Group
    • 로그를 보관할 기간, 모니터링, 접근 권한 등을 공유할 수 있는 로그 수집 스트림의 그룹
  • Logs Insight
    • 수집한 Logs 데이터를 분석하여 특정 패턴, 오류를 검색하는 실시간 데이터 분석 서비스
  • CloudTrail
    • 자동으로 수집되고 CloudWatch Logs로 전송하는 역할, 설정 없이 AWS Console에서 활성화하면 바로 수집이 시작되는 형식

CloudWatch Alarms

  • CloudWatch Metrics, Logs와 연동이 되어 Metrics 기반으로 특정 조건이 발생되었을 때, 특정 작업을 수행할 수 있도록 알림을 발생, EventBridge를 트리거 할 수 있는 기능
  • 특정 현상 외에 특정 이상의 오류패턴이 감지가 되어도 설정을 해줄 수 있음
  • 모든 오류는 ERROR 메시지와 함께 Alarms 발생

EventBridge

  • 이전의 CloudWatch Event에서 EvenBridge로 분리되어 CloudWatch에서 발생한 Alarm에 따라 Lambda 함수를 사용해서 자동화 작업을 지정해줄 수 있는 서비스
  • CloudWatch 외에 AWS 전체 서비스에서 여러 곳(Event Source)에서 발생한 Event를 Event Bus를 통해 전달받아 특정 지정된 대상으로 Routing 하는 역할
  • AWS Lambda
    • AWS 에서 서버를 구축하지 않아도, 이벤트에 반응하여 코드를 자동으로 실행시켜줄 수 있는 AWS만의 컴퓨팅 서비스
    • 서버리스 실행이기 때문에, AWS 전체에 대하여 확장시킬 수 있고, 자동화 시킬 수 있음
    • Event가 발생했을 대 진행이 될 수 있기 때문에, EventBrideg 외에 Even발생 관련 서비스와 쉽게 통합하여 사용 가능

기존의 배포를 통한 최종프로젝트를 개선하는 와중에 진행하고 있는 단계이기 때문에 하루만에 완성을 할 수 없었지만, 이번주까지 진행할 수 있도록 도전해야할 것이고,

 

강제적으로 서버를 다운시키거나 과도한 트래픽을 몰리게 해서 Slack알림을 줄 수 없어, 로그인, 또는 회원가입이 발생했을시를 Event 로 하여 간단하게 구현할 계획