이 주제에서는 Spanner 구성요소를 검사하여 지연 시간의 원인을 찾고 OpenTelemetry를 사용하여 해당 지연 시간을 시각화하는 방법을 설명합니다. 이 주제의 구성요소에 대한 대략적인 개요는 Spanner 요청의 지연 시간 지점을 참조하세요.
OpenTelemetry는 trace, 측정항목, 로그와 같은 원격 분석 데이터를 만들고 관리할 수 있게 해주는 오픈소스 관측 가능성 프레임워크 및 툴킷입니다. 이는 OpenTracing과 OpenCensus를 병합한 결과물입니다. 자세한 내용은 OpenTelemetry란?을 참조하세요.
Spanner 클라이언트 라이브러리는 OpenTelemetry 관측 가능성 프레임워크를 사용하여 측정항목과 trace를 제공합니다. 지연 시간 지점 식별의 절차에 따라 Spanner에서 지연 시간이 발생하는 구성요소를 찾습니다.
시작하기 전에
지연 시간 측정항목 캡처를 시작하기 전에 OpenTelemetry를 사용한 수동 계측을 숙지하세요. 원격 분석 데이터를 내보내는 데 적절한 옵션으로 OpenTelemetry SDK를 구성해야 합니다. 여러 가지 OpenTelemetry 내보내기 도구 옵션을 사용할 수 있습니다. OpenTelemetry 프로토콜(OTLP) 내보내기 도구를 사용하는 것이 좋습니다. 다른 옵션으로는 Google Cloud 내보내기 도구 또는 Google Managed Service for Prometheus 내보내기 도구와 함께 OTel Collector를 사용하는 방법이 포함됩니다.
Compute Engine에서 애플리케이션을 실행하는 경우 운영 에이전트를 사용하여 OpenTelemetry 프로토콜 측정항목 및 trace를 수집할 수 있습니다. 자세한 내용은 OTLP 측정항목 및 trace 수집을 참조하세요.
종속 항목 추가
OpenTelemetry SDK 및 OTLP 내보내기 도구를 구성하려면 애플리케이션에 다음 종속 항목을 추가합니다.
Java
Go
OpenTelemetry 객체 삽입
그런 다음 OTLP 내보내기 도구를 사용하여 OpenTelemetry 객체를 만들고 SpannerOptions
를 사용하여 OpenTelemetry 객체를 삽입합니다.
Java
Go
클라이언트 왕복 지연 시간 캡처 및 시각화
클라이언트 왕복 지연 시간은 클라이언트가 GFE 및 Spanner API 프런트엔드를 통해 데이터베이스로 전송한 Spanner API 요청의 첫 번째 바이트와 클라이언트가 데이터베이스에서 수신한 응답의 마지막 바이트 사이의 시간(밀리초)입니다.
클라이언트 왕복 지연 시간 캡처
OpenTelemetry를 사용하는 경우 Spanner 클라이언트 왕복 지연 시간 측정항목은 지원되지 않습니다. 브리지와 함께 OpenCensus를 사용하면 측정항목을 계측하고 데이터를 OpenTelemetry로 마이그레이션할 수 있습니다.
클라이언트 왕복 지연 시간 시각화
측정항목을 검색한 후 Cloud Monitoring에서 클라이언트 왕복 지연 시간을 시각화할 수 있습니다.
다음 예시는 클라이언트 왕복 지연 시간 측정항목의 5번째 백분위수 지연 시간을 보여주는 그래프입니다. 백분위수 지연 시간을 50번째 또는 99번째 백분위수로 변경하려면 애그리게이터 메뉴를 사용합니다.
이 프로그램은 roundtrip_latency
라는 뷰를 만듭니다. 이 문자열은 Cloud Monitoring으로 내보낼 때 측정항목 이름의 일부가 됩니다.
GFE 지연 시간 캡처 및 시각화
Google 프런트엔드(GFE) 지연 시간은 Google 네트워크에서 클라이언트의 리모트 프로시져 콜을 수신한 후 GFE가 응답의 첫 번째 바이트를 수신할 때까지의 시간(밀리초)입니다.
GFE 지연 시간 캡처
Spanner 클라이언트 라이브러리를 사용하여 다음 옵션을 사용 설정하면 GFE 지연 시간 측정항목을 캡처할 수 있습니다.
Java
Go
GFE 지연 시간 시각화
측정항목을 검색한 후 Cloud Monitoring에서 GFE 지연 시간을 시각화할 수 있습니다.
다음 예시는 GFE 지연 시간 측정항목의 분포 집계를 보여주는 그래프입니다. 백분위수 지연 시간을 5번째, 50번째, 95번째, 99번째 백분위수로 변경하려면 애그리게이터 메뉴를 사용합니다.
이 프로그램은 spanner/gfe_latency
라는 뷰를 만듭니다. 이 문자열은 Cloud Monitoring으로 내보낼 때 측정항목 이름의 일부가 됩니다.
Spanner API 요청 지연 시간 캡처 및 시각화
Spanner API 요청 지연 시간은 Spanner API 프런트엔드에서 수신한 요청의 첫 번째 바이트와 Spanner API 프런트엔드에서 전송한 응답의 마지막 바이트 간의 시간(초)입니다.
Spanner API 요청 지연 시간 캡처
기본적으로 이 지연 시간은 Cloud Monitoring 측정항목의 일부로 제공됩니다. 캡처하고 내보내기 위해 별도의 작업을 수행할 필요가 없습니다.
Spanner API 요청 지연 시간 시각화
측정항목 탐색기 차트 도구를 사용하여 Cloud Monitoring에서 spanner.googleapis.com/api/request_latencies
측정항목에 대한 그래프를 시각화할 수 있습니다.
다음은 Spanner API 요청 지연 시간 측정항목에 대한 5번째 백분위수 지연 시간을 보여주는 그래프의 예시입니다. 백분위수 지연 시간을 50번째 또는 99번째 백분위수로 변경하려면 애그리게이터 메뉴를 사용합니다.
쿼리 지연 시간 캡처 및 시각화
쿼리 지연 시간은 Spanner 데이터베이스에서 SQL 쿼리를 실행하는 데 걸리는 시간(밀리초)입니다.
쿼리 지연 시간 캡처
다음 언어의 쿼리 지연 시간을 캡처할 수 있습니다.
Java
Go
쿼리 지연 시간 시각화
측정항목을 검색한 후 Cloud Monitoring에서 쿼리 지연 시간을 시각화할 수 있습니다.
다음 예시는 GFE 지연 시간 측정항목의 분포 집계를 보여주는 그래프입니다. 백분위수 지연 시간을 5번째, 50번째, 95번째, 99번째 백분위수로 변경하려면 애그리게이터 메뉴를 사용합니다.
프로그램에서 query_stats_elapsed
라는 OpenCensus 뷰를 만듭니다.
이 문자열은 Cloud Monitoring으로 내보낼 때 측정항목 이름의 일부가 됩니다.
다음 단계
OpenTelemetry 자세히 알아보기
OpenTelemetry로 마이그레이션하는 방법 알아보기
측정항목을 사용하여 지연 시간을 진단하는 방법을 알아보세요.