GKE용 관리형 OpenTelemetry

이 문서에서는 Google Kubernetes Engine (GKE)용 관리형 OpenTelemetry를 설명합니다. 이를 통해 GKE에서 실행되는 애플리케이션에서 OpenTelemetry 프로토콜 (OTLP) trace, 측정항목, 로그를 Google Cloud Observability로 전송할 수 있습니다. 관리형 OpenTelemetry는 GKE에서 추적 데이터를 수집하기 위해 Google Cloud에서 제공하는 유일한 관리형 솔루션입니다.

Google Kubernetes Engine (GKE)용 관리 OpenTelemetry를 사용하려면 애플리케이션이 이미 OpenTelemetry 프로토콜을 사용하여 신호를 생성하도록 계측되어 있어야 합니다. 자세한 내용은 지원되는 워크로드를 참고하세요.

GKE용 관리 OpenTelemetry에는 두 가지 구성요소가 있습니다.

  • 관리형 수집: 관리형 수집기는 클러스터 내 OpenTelemetry 프로토콜 엔드포인트를 워크로드가 OTLP 형식으로 trace, 측정항목, 로그를 전송하는 대상으로 제공하므로 수집기를 관리하지 않아도 됩니다.
  • 자동 구성: Instrumentation이라는 커스텀 리소스를 사용하면 GKE 워크로드가 상관관계가 있는 OpenTelemetry trace, 측정항목, 로그를 생성하고 수집하도록 자동 구성할 수 있습니다. 이 접근 방식은 에이전트 개발 키트 (ADK)를 지원합니다.

    OpenTelemetry SDK를 사용하고 표준 OpenTelemetry 환경 변수로 구성된 워크로드에 Instrumentation 커스텀 리소스를 사용할 수 있습니다. 이 Instrumentation 커스텀 리소스 instrumentations.telemetry.googleapis.com은 OpenTelemetry 운영자의 Instrumentation 리소스와 다른 리소스입니다.

GKE용 관리 OpenTelemetry 사용 단계는 GKE용 관리 OpenTelemetry 배포를 참고하세요.

GKE용 관리형 OpenTelemetry를 사용하면 OpenTelemetry 수집기를 관리하고 운영하지 않아도 OTLP 원격 분석을 수집할 수 있습니다. 자체 수집기를 실행하면 인증, 구성, 업그레이드, 모니터링을 비롯한 오버헤드가 발생할 수 있습니다. 하지만 수집기 수준 필터링 및 제어가 필요한 경우 이 관리 서비스 대신 Google 기반의 OpenTelemetry Collector를 사용할 수 있습니다.

OpenTelemetry는 애플리케이션 모니터링을 위한 분산 trace, 측정항목, 로그를 생성하는 API, 라이브러리, SDK를 제공합니다. OpenTelemetry에 대한 자세한 내용은 OpenTelemetryOpenTelemetry 프로토콜 (OTLP)에 관한 문서를 참고하세요. 애플리케이션의 런타임 동작 데이터를 생성하고 수집하는 방법에 관한 자세한 내용은 계측 및 모니터링 가능성을 참고하세요.

GKE용 관리형 OpenTelemetry 작동 방식

GKE용 관리형 OpenTelemetry에는 관리형 수집과 자동 구성이라는 두 가지 구성요소가 있습니다.

관리 컬렉션

관리형 컬렉션은 관리형 OpenTelemetry 수집기를 클러스터에 배포하여 클러스터 내 OTLP 엔드포인트를 제공합니다. 이 클러스터 내 OTLP 엔드포인트는 OTLP 형식으로 trace, 측정항목, 로그를 수신합니다. 워크로드에서 데이터를 수신하려면 워크로드가 수집기로 데이터를 전송하도록 구성되어야 합니다.

관리형 수집기의 엔드포인트는 http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318입니다.

관리형 수집은 수집된 데이터를 Google Cloud Observability로 전송합니다. 그러면 다음 서비스에서 데이터를 사용할 수 있습니다.

관리형 수집기는 콘솔 또는 gcloud CLI를 사용하여 GKE 클러스터에 사용 설정할 수 있습니다. 자세한 내용은 클러스터에서 GKE용 관리형 OpenTelemetry 사용 설정을 참고하세요.

자동 구성

자동 구성을 사용하면 GKE에서 GKE에서 실행되는 워크로드가 관리형 수집기의 엔드포인트로 신호를 전송하도록 구성할 수 있습니다.

워크로드를 구성하는 데 사용할 수 있는 다양한 방법이 있습니다. 자동 구성은 워크로드의 컨테이너에 삽입된 환경 변수를 사용하여 워크로드가 관리형 수집기에 신호를 전송하도록 합니다. 워크로드를 수동으로 구성하는 경우 다른 방법을 사용할 수 있습니다. 자세한 내용은 수동 구성을 참고하세요.

자동 구성을 사용하는 경우 Instrumentation 커스텀 리소스를 사용하여 구성을 정의합니다. 그런 다음 GKE는 OTLP 내보내기 엔드포인트와 같은 환경 변수를 워크로드의 컨테이너에 삽입합니다. 워크로드의 컨테이너에 이러한 환경 변수가 있으면 워크로드가 실행될 때 OpenTelemetry 데이터가 관리형 수집기로 전송됩니다.

OpenTelemetry를 기본적으로 지원하는 워크로드의 경우 자동 구성이 가능합니다. 즉, OpenTelemetry SDK를 사용하고 표준 OpenTelemetry 환경 변수를 사용하여 구성됩니다. 자세한 내용은 지원되는 워크로드를 참고하세요.

자동 구성을 사용하여 애플리케이션을 구성하는 방법은 관리 OpenTelemetry Collector를 사용하도록 애플리케이션 구성을 참고하세요.

Instrumentation 커스텀 리소스

Instrumentation 커스텀 리소스를 사용하여 다음 작업을 실행합니다.

  • 선택한 포드 또는 네임스페이스의 모든 포드의 컨테이너에 환경 변수를 삽입할지 여부를 지정합니다.
  • 수집되는 데이터 유형 (로그, 측정항목, 트레이스)을 제어합니다.
  • 측정항목 데이터가 관리형 수집기로 전송되는 빈도를 제어합니다.
  • 추적 데이터의 샘플링 비율을 제어합니다.

Instrumentation 커스텀 리소스 사용 방법에 대한 자세한 내용은 구성 수정을 참고하세요.

환경 변수 자동 삽입

OpenTelemetry 환경 변수를 GKE 워크로드에 자동으로 삽입하려면 클러스터에서 Instrumentation 객체를 구성해야 합니다. 그런 다음 Instrumentation 객체를 사용하여 클러스터에 애플리케이션을 배포하면 GKE에서 변수를 삽입합니다.

애플리케이션이 배포되고 포드가 생성될 때 Instrumentation 객체가 클러스터에 있어야 합니다. Instrumentation 객체를 만들기 전에 애플리케이션을 배포한 경우 환경 변수의 자동 삽입을 트리거하려면 애플리케이션의 포드를 다시 시작해야 합니다.

환경 변수

자동 구성이 사용 설정된 네임스페이스에 워크로드가 배포되면 GKE는 워크로드의 컨테이너에 환경 변수를 삽입합니다. 이러한 환경 변수는 OpenTelemetry SDK 구성의 OpenTelemetry 변수입니다.

다음 목록에는 GKE용 관리 OpenTelemetry에서 삽입할 수 있는 모든 환경 변수가 포함되어 있습니다. 컨테이너에 삽입되는 특정 환경 변수는 Instrumentation 커스텀 리소스의 구성에 따라 다릅니다.

컨테이너에 자동으로 삽입할 수 있는 환경 변수는 다음과 같습니다.

  • OpenTelemetry 내보내기 도구 엔드포인트입니다.
    • OTEL_EXPORTER_OTLP_ENDPOINT: 모든 신호 유형의 기본 엔드포인트 URL입니다. 이 엔드포인트는 항상 로그, 측정항목, 트레이스를 위한 클러스터 내 관리 OpenTelemetry 수집기 HTTP 엔드포인트를 가리킵니다. 엔드포인트는 http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318입니다.
  • 추적 샘플링 비율 구성입니다.
    • OTEL_TRACES_SAMPLER: SDK가 트레이스를 샘플링하는 데 사용하는 샘플러를 다음 중 하나로 설정합니다.
      • 커스텀 리소스에서 추적 샘플링이 구성된 경우 parentbased_traceidratio
      • parentbased_always_on은 이 환경 변수의 기본값입니다. 이 환경 변수가 구성되지 않았거나 커스텀 리소스에서 null인 경우에 사용됩니다.
    • OTEL_TRACES_SAMPLER_ARG: 추적 샘플링 비율(0.0~1.0)을 지정합니다. 맞춤 리소스에서 구성되지 않은 경우 1.0이 사용됩니다.
  • 연속된 두 측정항목 내보내기 시작 사이의 지연 간격입니다.
    • OTEL_METRIC_EXPORT_INTERVAL: 두 내보내기 시도 사이의 시간 간격 (밀리초)(최소: 5000, 최대: 300000, 기본값: 60000)입니다.
  • 신호 유형별 OTLP 원격 분석 내보내기 사용 중지 Instrumentation 파일에서 tracer_provider, meter_provider 또는 logger_providernull로 설정되면 신호 내보내기가 사용 중지됩니다.
    • OTEL_TRACES_EXPORTER: none로 설정하면 트레이스 내보내기를 사용 중지합니다. 기본값은 otlp입니다.
    • OTEL_METRICS_EXPORTER: none로 설정하면 측정항목 내보내기를 사용 중지합니다. 기본값은 otlp입니다.
    • OTEL_LOGS_EXPORTER: none로 설정하면 로그 내보내기를 사용 중지합니다. 기본값은 otlp입니다.
  • OpenTelemetry Collector의 Kubernetes 속성 프로세서가 메타데이터를 연결할 hostNetwork 포드를 식별합니다.
    • K8S_POD_UID: OTEL_RESOURCE_ATTRIBUTES 환경 변수에서 k8s.pod.uid 설정을 채우기 위한 hostNetwork 포드의 포드 UID입니다.
    • OTEL_RESOURCE_ATTRIBUTES: Kubernetes 속성 프로세서가 k8s.namespace.name, k8s.deployment.name, k8s.node.name과 같은 메타데이터를 hostNetwork 포드에 연결할 수 있도록 값이 k8s.pod.uid=$(K8S_POD_UID)를 포함합니다. 메타데이터와 hostNetwork 포드의 연결을 통해 추출된 메타데이터를 리소스 속성으로 스팬, 측정항목, 로그에 추가할 수 있습니다.

수동 구성

관리형 수집기의 엔드포인트에 신호를 전송하도록 워크로드를 구성하는 데 사용할 수 있는 방법은 여러 가지가 있습니다. 워크로드를 수동으로 구성하는 경우 환경 변수를 수동으로 추가하고 수정하거나 명령줄 플래그와 같은 다른 방법을 사용할 수 있습니다.

자동 구성이 수동 변경사항을 재정의할 수 있으므로 동일한 워크로드에 수동 구성과 자동 구성을 함께 사용하는 것은 권장하지 않습니다. 이 조합을 사용하면 구성 변경사항을 추적하기가 더 어려워질 수 있습니다.

자동 구성에 대한 자세한 내용은 자동 구성을 참고하세요.

지원되는 워크로드

지원되는 워크로드는 OpenTelemetry를 사용하여 애플리케이션의 런타임 동작에 관한 데이터를 수집하는 워크로드입니다. 워크로드가 OpenTelemetry SDK를 사용하고 표준 OpenTelemetry 환경 변수를 사용하여 구성된 경우 OpenTelemetry를 기본적으로 지원합니다. 예를 들어 에이전트 개발 키트 (ADK)는 OpenTelemetry를 기본적으로 지원합니다.

애플리케이션의 런타임 동작 데이터가 생성되고 수집되는 방식에 관한 자세한 내용은 계측 및 관측 가능성을 참고하세요.

워크로드에서 일부 유형의 OTLP 데이터는 지원하고 다른 유형은 지원하지 않는 경우 GKE용 관리 OpenTelemetry가 OTLP 데이터를 수집합니다. 예를 들어 워크로드에서 OpenTelemetry SDK를 사용하여 trace를 구현하지만 로그나 측정항목에는 사용하지 않는 경우 로그 및 측정항목 데이터는 GKE용 관리 OpenTelemetry에서 수집되지 않습니다. 수집할 데이터 유형을 관리하는 방법에 관한 자세한 내용은 수집할 신호 유형 선택을 참고하세요.

OpenTelemetry 구성 삽입은 GKE Autopilot 파트너의 권한이 있는 워크로드에 지원되지 않습니다.

결제

Google Cloud에 원격 분석 데이터를 전송하면 수집량에 따라 요금이 청구됩니다. 측정항목은 Google Cloud Managed Service for Prometheus 가격 책정을 사용하여 청구되고, 로그는 Cloud Logging 가격 책정을 사용하여 청구되며, 트레이스는 Cloud Trace 가격 책정을 사용하여 청구됩니다.

trace, 로그, Google Cloud Managed Service for Prometheus 측정항목 수집과 관련된 비용에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참고하세요.

할당량

GKE용 관리형 OpenTelemetry를 사용하는 경우 Google Cloud Observability 서비스의 할당량이 적용됩니다. 자세한 내용은 다음을 참조하세요.

다음 단계