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 프로젝트를 만들 때 기본적으로 사용 설정되는 서비스에 포함됩니다.
Monitoring: 수집된 측정항목을 사용하여 상태와 성능을 모니터링하고, 트렌드와 문제를 식별하고, 동작의 변화에 대해 알림을 받을 수 있습니다.
- 대부분의 Google Cloud 서비스에 대한 측정항목을 자동으로 수집합니다.
- 서드 파티 애플리케이션에서 시스템 및 애플리케이션 측정항목을 수집합니다.
- 기본 또는 맞춤설정된 대시보드로 측정항목을 시각화하고 분석합니다.
- 합성 모니터링을 사용하여 애플리케이션의 성능을 테스트합니다.
- 서비스 안정성을 모니터링하도록 서비스 수준 목표 (SLO)를 정의합니다.
- 문제 발생 시 알림을 수신합니다.
Logging: 수집된 로그를 사용하여 애플리케이션을 디버깅하고, 문제를 해결하고, 유용한 정보를 얻습니다.
- 대부분의 Google Cloud 서비스에 대한 로그를 자동으로 수집합니다.
- 대부분의 Google Cloud 서비스에 대한 감사 로그를 자동 수집합니다.
- 서드 파티 소프트웨어에서 로그를 수집합니다.
- 로그를 탐색하고 분석합니다.
- 로그 애널리틱스를 사용하면 BigQuery로 로그 및 기타 데이터에 대한 분석을 수행할 수 있습니다. 예를 들어 BigQuery를 사용하여 로그의 URL을 알려진 악성 URL의 공개 데이터 세트와 비교할 수 있습니다.
- 로그에서 측정항목을 만듭니다.
- 로그에서 지정된 메시지가 나타나면 알림을 수신합니다.
Error Reporting: 실행 중인 클라우드 서비스의 오류 보기 및 분석
- Error Reporting이 로그 항목에서 감지하는 오류를 집계하고 관련 로그를 확인합니다.
- 애플리케이션에서 Error Reporting API로 보내는 오류를 집계합니다.
Trace: 디버깅 및 문제 해결 시 애플리케이션 요청의 흐름과 지연 시간을 확인하고 분석합니다.
- 요청이 애플리케이션을 통해 전파되는 방식을 추적합니다.
- 애플리케이션에서 지연 시간 데이터를 수집하고 데이터의 그래프를 봅니다.
- 성능 저하를 보여주는 지연 시간 보고서를 확인합니다.
- 애플리케이션의 지연 시간 프로필 변화에 대해 알림을 수신합니다.
- 커스텀 속성을 사용하여 trace를 주석 처리합니다.
- 다른 데이터와 함께 탐색할 수 있도록 BigQuery로 trace를 내보냅니다.
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)를 수집합니다.
- CPU, GPU, 메모리, 프로세스 측정항목과 같은 호스트 측정항목을 자동으로 수집합니다.
- Linux VM의 syslog와 Windows VM의 Windows 이벤트 로그와 같은 시스템 로그를 자동으로 수집합니다.
- 다음을 사용하여 애플리케이션을 관찰합니다.
- 사전 구성된 대시보드 및 알림 정책을 사용한 Postgres, MongoDB, 자바 가상 머신과 같은 인기 소프트웨어를 위한 타사 애플리케이션 통합
- Prometheus 측정항목
- OpenTelemetry 프로토콜(OTLP) 측정항목 및 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로 원격 분석을 전송하기 위해 애플리케이션을 계측하는 방법을 보여주는 코드 샘플은 다음을 참조하세요.
다음과 같은 주제를 탐구해 볼 수도 있습니다.