Google Cloud의 관측 가능성

Google Cloud Observability에는 애플리케이션의 동작, 상태, 성능을 이해하는 데 도움이 되는 관측 가능성 서비스가 포함됩니다. 애플리케이션이 어떻게 작동하는지, 구성요소가 어떻게 연결되어 있는지 파악하여 예기치 않은 변경사항을 더 빠르고 효과적으로 예측, 식별, 대응할 수 있습니다.

이 문서에는 다음 정보가 포함되어 있습니다.

  • 관측 가능성 개요 및 관측 가능성이 애플리케이션의 가용성 및 신뢰성을 유지하는 데 중요한 이유
  • Google Cloud Observability가 애플리케이션 및 인프라 상태를 모니터링하고 유지관리하는 데 도움이 되는 방법
  • Google Cloud에서 관측 가능성을 시작하는 방법

관측 가능성 정보

관측 가능성은 환경 상태를 이해하기 위해 원격 분석 데이터를 수집하고 분석하는 종합적인 접근법입니다. 원격 분석 데이터는 애플리케이션 상태 및 성능에 대한 정보를 제공하는 애플리케이션 및 애플리케이션 인프라에서 생성되는 측정항목, 로그, trace, 기타 데이터입니다.

측정항목
측정항목은 CPU 사용률 및 요청 지연 시간과 같이 시간 경과에 따라 일정한 간격으로 측정하는 상태 또는 성능에 대한 숫자 데이터입니다. 측정항목이 예기치 않게 변경되면 조사할 문제가 있을 수 있습니다. 시간 경과에 따라 측정항목 패턴을 분석하여 사용량 패턴을 파악하고 리소스 요구사항을 예측할 수도 있습니다.
로그

로그는 시간에 따라 생성된 시스템 또는 애플리케이션 활동의 레코드입니다. 각 로그는 타임스탬프가 지정된 로그 항목의 모음이고 각 로그 항목은 특정 시점의 이벤트를 설명합니다.

로그에는 애플리케이션의 특정 부분에서 발생한 상황을 이해하는 데 도움이 되는 풍부하고 자세한 정보가 포함됩니다. 그러나 로그는 애플리케이션의 한 구성요소의 변경사항이 다른 구성요소의 활동과 어떻게 연관되는지에 대한 적절한 정보를 제공하지 않습니다. trace는 이러한 격차를 해소하는 데 도움이 될 수 있습니다.

추적

trace는 분산 애플리케이션의 여러 부분에서 요청의 경로를 나타냅니다. 알림을 트리거한 하나의 애플리케이션 구성요소의 측정항목 또는 로그 항목은 다른 구성요소에서 발생한 문제의 증상일 수 있습니다. trace를 사용하면 요청 흐름을 따르고 지연 시간 데이터를 검사하여 문제의 근본 원인을 식별할 수 있습니다.

기타 데이터

다른 데이터의 컨텍스트에서 측정항목, 로그, trace를 분석하여 유용한 정보를 추가로 얻을 수 있습니다. 예를 들어 알림의 심각도 또는 로그의 요청과 연결된 고객 ID 라벨이 문제 해결 및 디버깅에 유용한 컨텍스트를 제공합니다.

분산형 애플리케이션 모니터링, 디버깅, 문제 해결은 오픈소스와 상용 소프트웨어가 혼합된 여러 시스템 및 소프트웨어 구성요소가 포함되기 때문에 어려울 수 있습니다.

관측 가능성 도구는 의미 있는 데이터를 수집하고 데이터를 탐색, 분석, 연관시킬 수 있는 기능을 제공하여 이러한 복잡성을 탐색하는 데 도움이 됩니다. 관측 가능한 환경은 다음을 수행하는 데 도움이 됩니다.

  • 사용자에게 영향을 미치기 전에 문제를 사전에 감지
  • 알려진 문제 및 새로운 문제 모두 해결하기
  • 개발 중 애플리케이션 디버깅
  • 애플리케이션 변경사항의 영향 계획 및 이해
  • 데이터를 탐색하여 새로운 유용한 정보 발견

간단히 말해 관측 가능한 환경은 애플리케이션 안정성을 유지하는 데 도움이 됩니다. 애플리케이션은 가용성 및 장애 복원력에 대한 현재 목표를 충족할 때 안정성을 가집니다.

관측 가능성 관련 원칙과 관행을 포함한 안정성 관행에 대한 자세한 내용은 사이트 안정성 엔지니어링: Google의 프로덕션 시스템 실행 방법을 참조하세요. 주제는 다음과 같습니다.

Google Cloud Observability

Google Cloud Observability의 서비스는 원격 분석 데이터를 수집, 분석하고 상관관계를 파악하는 데 도움이 됩니다. 또한 빠르게 시작할 수 있도록 기본 대시보드 및 알림 정책과 같은 기본값을 제공합니다.

Cloud Monitoring, Cloud Logging, Cloud Trace는 Google Cloud 프로젝트를 만들 때 기본적으로 사용 설정되는 서비스 중 하나입니다.

모니터링: 수집된 측정항목을 사용하여 상태 및 성능을 모니터링하고 추세 및 문제를 식별하며 동작 변경을 알립니다.

  • 대부분의 Google Cloud 서비스에 대한 측정항목을 자동으로 수집합니다.
  • 타사 애플리케이션에서 시스템 및 애플리케이션 측정항목을 수집합니다.
  • 기본 또는 커스텀 대시보드로 측정항목을 시각화하고 분석합니다.
  • 합성 모니터링을 사용하여 애플리케이션의 성능을 테스트합니다.
  • 서비스 안정성을 모니터링하도록 서비스 수준 목표 (SLO)를 정의합니다.
  • 문제 발생 시 알림을 수신합니다.

로깅: 수집된 로그를 사용하여 애플리케이션을 디버깅하고 문제를 해결하며 애플리케이션에 대한 유용한 정보를 얻습니다.

  • 대부분의 Google Cloud 서비스에 대해 로그를 자동으로 수집합니다.
  • 대부분의 Google Cloud 서비스에 대한 감사 로그를 자동으로 수집합니다.
  • 서드 파티 소프트웨어에서 로그를 수집합니다.
  • 로그 탐색 및 분석
  • 로그 애널리틱스를 사용하면 BigQuery로 로그 및 기타 데이터에 대한 분석을 수행할 수 있습니다. 예를 들어 BigQuery를 사용하여 로그의 URL을 알려진 악성 URL의 공개 데이터 세트와 비교할 수 있습니다.
  • 로그에서 측정항목을 만듭니다.
  • 지정된 메시지가 로그에 표시되면 알림을 받습니다.

Error Reporting: 실행 중인 클라우드 서비스의 오류 보기 및 분석

  • Error Reporting이 로그 항목에서 감지한 오류를 집계하고 관련 로그를 확인합니다.
  • 애플리케이션이 Error Reporting API로 전송하는 오류를 집계합니다.

Trace: 디버깅 및 문제 해결 시 애플리케이션 요청의 흐름과 지연 시간을 보고 분석합니다.

  • 요청이 애플리케이션을 통해 전파되는 방식을 추적합니다.
  • 애플리케이션에서 지연 시간 데이터를 수집하고 데이터 그래프를 확인합니다.
  • 성능 저하를 보여주는 지연 시간 보고서를 확인합니다.
  • 애플리케이션의 지연 시간 프로필 변경에 대한 알림을 받습니다.
  • 커스텀 속성으로 trace에 주석을 추가합니다.
  • 다른 데이터로 탐색할 수 있도록 trace를 BigQuery로 내보냅니다.

Cloud Profiler: 애플리케이션의 CPU 및 메모리 사용량을 분석하여 성능 개선 기회를 파악할 수 있습니다.

  • 애플리케이션에서 CPU 사용량 및 메모리 할당 데이터를 수집하세요.
  • 애플리케이션에서 가장 많은 리소스를 소비하는 부분을 식별하고 애플리케이션의 전반적인 성능에 대한 유용한 정보를 얻습니다.

시작하기

이 섹션에서는 Google Cloud의 관측 가능성 기능에 익숙해지기 위해 취할 수 있는 단계를 설명합니다.

빠른 시작 사용해 보기

빠른 시작을 사용하여 사용 가능한 서비스에 익숙해지세요.

자동으로 수집되는 데이터 확인

대부분의 Google Cloud 서비스는 사전 정의된 측정항목과 로그를 자동으로 생성합니다. 즉, 추가 구성 없이 지원되는 Google Cloud 서비스에 대한 일부 관측 가능성 데이터를 볼 수 있습니다.

  • Google Kubernetes Engine(GKE), Compute Engine, Cloud SQL과 같은 일부 Google Cloud 서비스는 Google Cloud 콘솔에서 기본 대시보드를 제공하여 서비스의 컨텍스트에서 관측 가능성 데이터를 확인합니다.
  • Compute Engine, GKE, Cloud Run은 기본적으로 시스템 측정항목 및 로그를 생성하고 추가 데이터 수집을 구성합니다.
  • Cloud Functions 및 App Engine은 측정항목, 로그, trace를 자동으로 생성합니다.

또한 측정항목 탐색기에서 수집된 측정항목을 차트로 작성하거나, 로그 탐색기에서 로그를 보거나, Trace에서 trace를 볼 수도 있습니다. 관련 데이터를 함께 검토하려면 커스텀 대시보드를 만듭니다. 예를 들어 가상 머신의 로그, 성능 측정항목, 알림 정책이 포함된 대시보드를 만들 수 있습니다.

추가 데이터를 수집하도록 Compute Engine VM 구성

Compute Engine VM은 운영 에이전트 없이 기본적으로 기본 시스템 측정항목 및 로그만 수집합니다.

운영 에이전트를 설치하여 Compute Engine 인스턴스와 애플리케이션에서 문제 해결, 성능 모니터링, 알림을 위한 추가 원격 분석 데이터(로그, 측정항목, trace)를 수집합니다.

추가 데이터를 수집하도록 GKE 클러스터 구성

기본적으로 GKE 클러스터는 시스템 로그 및 시스템 측정항목을 Logging 및 Monitoring으로 전송합니다. Google Cloud Managed Service for Prometheus는 타사 및 사용자 정의 측정항목 수집을 처리합니다.

  • 애플리케이션 및 클러스터 리소스의 상태를 더 잘 이해하려면 관측 가능성 측정항목 패키지를 사용하세요. 예를 들어 제어 영역 측정항목은 서비스 가용성 및 지연 시간을 모니터링하는 SLO를 만드는 데 유용합니다.
  • Postgres, MongoDB, Redis와 같은 타사 애플리케이션을 모니터링합니다. 이러한 통합은 사전 구성된 대시보드와 알림 정책을 제공합니다.

커스텀 데이터를 수집하도록 Cloud Run 구성

Prometheus 측정항목을 기록하는 Cloud Run 서비스가 있으면 Prometheus 사이드카를 사용해서 Cloud Monitoring에 측정항목을 전송할 수 있습니다.

대신 Cloud Run 서비스가 OTLP 측정항목을 기록할 경우에는 OpenTelemetry 사이드카를 사용할 수 있습니다. 예시를 보려면 사이드카를 사용하여 OTLP 측정항목 수집 튜토리얼을 참조하세요.

애플리케이션 계측

계측은 원격 분석 데이터를 내보내기 위해 애플리케이션에 추가하는 코드입니다. 애플리케이션에서 측정항목, 로그, trace를 수집하여 Google Cloud를 포함한 모든 공급업체에 해당 데이터를 전송할 수 있게 해주는 여러 오픈소스 계측 프레임워크가 있습니다. 그러나 애플리케이션을 계측할 필요가 없을 수도 있습니다. 예를 들어 Cloud Run, Cloud Functions, App Engine은 자동 추적을 제공합니다.

애플리케이션을 계측하려면 공급업체 및 제품별 API 또는 클라이언트 라이브러리 대신 OpenTelemetry와 같은 오픈소스인 공급업체 중립적인 계측 프레임워크를 사용하는 것이 좋습니다. 애플리케이션 계측에 대한 자세한 내용은 계측 및 관측 가능성을 참조하세요.

Google Cloud로 원격 분석을 전송하기 위해 애플리케이션을 계측하는 방법을 보여주는 코드 샘플은 다음을 참조하세요.

다음과 같은 주제를 탐구해 볼 수도 있습니다.