모니터링, 알림, 로깅 설정

Last reviewed 2023-08-08 UTC

Google Cloud 아키텍처 프레임워크의 이 문서에서는 시스템 동작을 기반으로 조치를 취할 수 있도록 모니터링, 알림, 로깅을 설정하는 방법을 보여줍니다. 여기에는 시스템에 대한 정보를 쉽게 볼 수 있도록 대시보드를 추적하는 데 유용한 측정항목을 식별하고 빌드하는 방법이 포함됩니다.

DevOps 리소스 및 평가(DORA) 연구 프로그램은 다음과 같이 모니터링을 정의합니다.

"비즈니스 결정을 내릴 수 있도록 안내하기 위해 정보를 수집, 분석, 사용하여 애플리케이션 및 인프라를 추적하는 프로세스입니다. 모니터링은 시스템과 작업에 대한 유용한 정보를 제공하는 핵심 기능입니다."

모니터링을 통해 서비스 소유자는 다음을 수행할 수 있습니다.

  • 서비스 변경사항이 성능에 영향을 미칠 때 정보에 입각한 결정
  • 이슈 대응에 과학적 접근 방식 적용
  • 서비스가 비즈니스 목표에 부합하는지 측정

모니터링, 로깅, 알림을 사용하면 다음을 수행할 수 있습니다.

  • 장기 트렌드 분석
  • 시간 경과에 따른 실험 비교
  • 중요한 측정항목에 대한 알림 정의
  • 관련 실시간 대시보드 빌드
  • 소급적 분석 수행
  • 비즈니스 기반 측정항목과 시스템 상태 측정항목을 모두 모니터링
    • 비즈니스 기반 측정항목은 시스템이 비즈니스를 얼마나 잘 지원하는지 이해하는 데 도움이 됩니다. 예를 들어 측정항목을 사용하여 다음을 모니터링합니다.
      • 사용자에게 애플리케이션을 제공하는 데 드는 비용
      • 재설계 후 사이트 트래픽의 규모 변화
      • 고객이 사이트에서 제품을 구매하는 데 걸리는 시간
    • 시스템 상태 측정항목은 시스템이 허용 가능한 성능 수준에서 올바르게 작동하는지 이해하는 데 도움이 됩니다.

시스템을 모니터링하려면 다음 4가지의 골든 신호를 사용하세요.

  • 지연 시간. 요청을 처리하는 데 걸리는 시간입니다.
  • 트래픽. 시스템에 배치되는 요구의 양입니다.
  • 오류. 요청의 실패율입니다. 실패는 명시적(예: HTTP 500), 암시적(예: 잘못된 콘텐츠와 결합된 HTTP 200 성공 응답), 정책(예: 1초의 응답 시간에 커밋한 경우 1초를 초과하는 모든 요청은 오류)에 의한 것일 수 있습니다.
  • 포화도. 서비스가 얼마나 가득 찼는지입니다. 포화도는 시스템 비율을 나타내는 것으로, 가장 제한적인 리소스(즉, 메모리가 제한된 시스템에서는 메모리를 표시하고 I/O가 제한된 시스템에서는 I/O를 표시)를 강조합니다.

모니터링 계획 만들기

조직의 사명과 운영 전략에 맞는 모니터링 계획을 세웁니다. 애플리케이션 개발 중 모니터링 및 관측 가능성 계획을 포함합니다. 애플리케이션 개발 초기에 모니터링 계획을 포함하면 조직이 운영 우수성을 달성할 수 있습니다.

모니터링 계획에 다음 세부정보를 포함합니다.

  • 온프레미스 리소스 및 클라우드 리소스를 포함한 모든 시스템을 포함합니다.
  • 클라우드 비용 모니터링을 포함하여 확장 이벤트로 인해 예산 기준액을 초과하지 않도록 하세요.
  • 인프라 성능, 사용자 환경, 비즈니스 핵심성과지표(KPI)를 측정하는 다양한 모니터링 전략을 빌드합니다. 예를 들어 정적 임계값은 인프라 성능을 측정하는 데 잘 작동하지만 사용자 환경을 실제로 반영하지는 않습니다.

모니터링 전략이 발전함에 따라 계획을 업데이트합니다. 계획을 반복하여 시스템 상태를 개선합니다.

조직의 모든 측면을 측정하는 측정항목 정의

배포의 동작 방식을 측정하는 데 필요한 측정항목을 정의합니다. 방법은 다음과 같습니다.

  • 비즈니스 목표를 정의합니다.
  • 성능을 측정하기 위한 정량적 정보를 제공할 수 있는 측정항목과 KPI를 파악합니다. 측정항목 정의가 클라우드 비용 등 비즈니스 요구사항부터 기술 구성요소에 이르기까지 조직의 모든 측면에 걸쳐 변환되는지 확인합니다.
  • 이러한 측정항목을 사용하여 애플리케이션의 서비스 수준 지표(SLI)를 만듭니다. 자세한 내용은 적절한 SLI 선택을 참조하세요.

다양한 구성요소의 일반적인 측정항목

측정항목은 인프라 및 네트워킹에서 비즈니스 로직에 이르기까지 서비스의 모든 수준에서 생성됩니다. 예를 들면 다음과 같습니다.

  • 인프라 측정항목:
    • 인스턴스, CPU, 메모리, 사용률, 계수 등 가상 머신 통계
    • 클러스터 사용률, 클러스터 용량, 포드 수준 사용률, 계수 등 컨테이너 기반 통계
    • 인그레스/이그레스, 구성요소 간 대역폭, 지연 시간, 처리량 등 네트워킹 통계
    • 부하 분산기로 측정한 초당 요청
    • 디스크당 읽은 총 디스크 블록
    • 지정된 네트워크 인터페이스를 통해 전송된 패킷
    • 지정된 프로세스의 메모리 힙 크기
    • 응답 지연 시간의 분포
    • 데이터베이스 인스턴스에서 거부한 잘못된 쿼리 수
  • 애플리케이션 측정항목:
    • 초당 쿼리 수, 초당 쓰기 수, 초당 메시지 전송 수 등 애플리케이션별 동작
  • 관리형 서비스 통계 측정항목:
    • Google 관리형 서비스(BigQuery, App Engine, Bigtable 등의 API 또는 제품)의 QPS, 처리량, 지연 시간, 사용률
  • 네트워크 연결 통계 측정항목:
    • 온프레미스 시스템 또는 Google Cloud 외부에 있는 시스템에 대한 연결의 VPN/상호 연결 관련 통계입니다.
  • SLI
    • 전반적인 시스템 상태와 관련된 측정항목입니다.

모니터링 설정

온프레미스 리소스와 클라우드 리소스를 모두 모니터링하도록 모니터링을 설정합니다.

다음과 같은 모니터링 솔루션을 선택합니다.

  • 플랫폼과 독립적임
  • 온프레미스, 하이브리드, 멀티 클라우드 환경을 모니터링할 수 있는 일관된 기능 제공

단일 플랫폼을 사용하여 다양한 소스에서 제공되는 모니터링 데이터를 통합하면 동일한 측정항목과 시각화 대시보드를 빌드할 수 있습니다.

모니터링을 설정할 때 가능하면 모니터링 작업을 자동화하세요.

Google Cloud로 모니터링

모니터링 서비스를 직접 빌드하는 것보다 Cloud Monitoring과 같은 모니터링 서비스를 사용하는 것이 더 간편합니다. 복잡한 애플리케이션을 모니터링하는 것은 그 자체로 상당한 엔지니어링 작업입니다. 계측, 데이터 수집 및 표시, 알림을 위한 기존 인프라가 있더라도 누군가가 빌드하고 유지관리하려면 담당자가 필요합니다.

Cloud Monitoring을 사용하면 온프레미스 및 클라우드 리소스 모두에 대해 애플리케이션 및 인프라의 성능, 가용성, 상태를 파악할 수 있습니다.

Cloud Monitoring은 Google Cloud Observability에 속한 관리형 서비스입니다. Cloud Monitoring을 사용하여 Google Cloud 서비스 및 커스텀 측정항목을 모니터링할 수 있습니다. Cloud Monitoring은 타사 모니터링 도구와의 통합을 위한 API를 제공합니다.

Cloud Monitoring은 시스템의 클라우드 기반 인프라에서 측정항목, 로그 및 이벤트를 집계합니다. 이 데이터는 개발자와 운영자에게 관측 가능한 신호를 다양하게 제공하여 근본 원인 분석의 속도를 높이고 평균 해결 시간을 단축시킬 수 있습니다. Cloud Monitoring을 사용하면 비즈니스 목표를 충족하는 알림 및 커스텀 측정항목을 정의하고 시스템 상태를 집계, 시각화, 모니터링할 수 있습니다.

Cloud Monitoring은 클라우드 및 오픈소스 애플리케이션 서비스용 기본 대시보드를 제공합니다. 측정항목 모델을 사용하면 강력한 시각화 도구를 갖춘 커스텀 대시보드를 정의하고 측정항목 탐색기에서 차트를 구성할 수 있습니다.

알림 설정

좋은 알림 시스템은 기능 출시 능력을 향상시킵니다. 시간 경과에 따른 성능을 비교하여 기능 출시 속도 또는 기능 출시 롤백을 결정할 수 있습니다. 롤백에 대한 자세한 내용은 이전 출시 버전을 원활하게 복원을 참조하세요.

알림을 설정할 때 알림을 중요한 측정항목에 직접 매핑하세요. 이러한 중요 측정항목은 다음과 같습니다.

  • 4가지 골든 신호:
    • 지연 시간
    • 트래픽
    • 오류
    • 포화도
  • 시스템 상태
  • 서비스 사용량
  • 보안 이벤트
  • 사용자 환경

알림을 통해 해결 시간을 최소화합니다. 이렇게 하려면 각 알림에 다음을 수행합니다.

  • 모니터링 대상과 모니터링의 비즈니스에 미치는 영향을 설명하는 명확한 설명을 포함합니다.
  • 즉시 조치를 취하는 데 필요한 모든 정보를 제공합니다. 알림을 이해하는 데 클릭을 여러 번 해서 이동해야 하는 경우 긴급 대기 엔지니어가 조치를 취하기가 어렵습니다.
  • 다양한 알림의 우선순위 수준을 정의합니다.
  • 알림에 대응할 담당자 또는 팀을 명확하게 파악합니다.

중요한 애플리케이션 및 서비스의 경우 서비스 상태 실패, 구성 변경, 처리량 급증 등의 일반적인 오류 조건으로 인해 트리거된 알림에 자가 복구 작업을 구축합니다.

알림을 설정할 때는 수작업 부담을 해소해야 합니다. 예를 들어 빈번한 오류를 제거하거나 알림이 트리거되지 않도록 하는 이러한 오류를 자동으로 수정하여 수작업을 최소화합니다. 따라서 수작업 부담을 없애고 애플리케이션의 운영 구성요소를 안정적으로 만드는 데 집중할 수 있습니다. 자세한 내용은 자동화 문화 만들기를 참조하세요.

모니터링 및 알림 대시보드 빌드

모니터링이 완료되면 모니터링 및 알림 시스템의 정보를 포함하는 복잡하지 않은 관련 대시보드를 빌드합니다.

대시보드를 시각화하는 적절한 방법을 선택하는 것은 안정성 목표와의 연관성을 유지하기 어려울 수 있습니다. 대시보드를 만들어 다음을 모두 시각화합니다.

  • 단기 및 실시간 분석
  • 장기 분석

시각적 관리 구현에 대한 자세한 내용은 시각적 관리 기능 문서를 참조하세요.

중요 애플리케이션에 로깅 사용 설정

로깅 서비스는 시스템 모니터링에 매우 중요합니다. 측정항목은 모니터링할 특정 항목의 기반을 형성하지만 로그에는 디버깅, 보안 관련 분석, 규정 준수 요구사항에 필요한 중요한 정보가 포함됩니다.

시스템에서 생성되는 데이터를 로깅하면 효과적인 보안 상태를 보장하는 데 도움이 됩니다. 로깅 및 보안에 대한 자세한 내용은 아키텍처 프레임워크의 보안 카테고리에서 로깅 및 감지 제어 구현을 참조하세요.

Cloud Logging은 로그 데이터 및 이벤트를 저장, 검색, 분석, 모니터링하고 알림을 받는 데 사용할 수 있는 통합 로깅 서비스입니다. Logging은 Google Cloud 및 기타 클라우드 제공업체의 서비스에서 자동으로 로그를 수집합니다. 이러한 로그를 사용하여 모니터링을 위한 측정항목을 빌드하고 Cloud Storage, BigQuery, Pub/Sub와 같은 외부 서비스로의 로깅 내보내기를 만들 수 있습니다.

감사 추적 설정

Google Cloud 프로젝트에서 '누가, 언제, 어디서, 무엇을 했는가'와 같은 질문에 답하려면 Cloud 감사 로그를 사용하세요.

Cloud 감사 로그는 다음과 같은 여러 유형의 활동을 캡처합니다.

  • 관리자 활동 로그에는 API 호출이나 리소스의 구성 또는 메타데이터를 수정하는 기타 관리 작업과 관련된 로그 항목이 포함됩니다. 관리자 활동 로그는 항상 사용 설정되어 있습니다.
  • 데이터 액세스 감사 로그는 사용자가 제공한 데이터를 생성하거나 수정하거나 읽는 API 호출을 기록합니다. 데이터 액세스 감사 로그는 크기가 클 수 있으므로 기본적으로 사용 중지되어 있습니다. 데이터 액세스 로그를 생성하는 Google Cloud 서비스를 구성할 수 있습니다.

감사 로그를 작성하는 Google Cloud 서비스 목록은 감사 로그를 생성하는 Google 서비스를 참조하세요. Identity and Access Management(IAM) 컨트롤을 사용하여 감사 로그를 볼 수 있는 액세스 권한을 가진 사용자를 제한합니다.

다음 단계