이 문서에서는 Google Kubernetes Engine (GKE)용 관리형 OpenTelemetry를 설명합니다. 이를 통해 OpenTelemetry 프로토콜 (OTLP) trace, 측정항목, 로그를 Google Cloud Observability로 보낼 수 있습니다. GKE에서 실행되는 애플리케이션에서 관리형 OpenTelemetry 는 GKE에서 trace 데이터를 수집하기 위한 Google Cloud의 유일한 관리형 솔루션을 제공합니다.
Google Kubernetes Engine (GKE)용 관리형 OpenTelemetry를 사용하려면 OpenTelemetry 프로토콜을 사용하여 신호를 생성하도록 애플리케이션이 이미 계측되어 있어야 합니다. 자세한 내용은 지원되는 워크로드를 참조하세요.
GKE용 관리형 OpenTelemetry에는 두 가지 구성요소가 있습니다.
- 관리형 수집: 관리형 수집기는 수집기를 관리할 필요 없이 워크로드가 OTLP 형식으로 trace, 측정항목, 로그를 전송할 수 있는 대상으로 클러스터 내 OpenTelemetry 프로토콜 엔드포인트를 제공합니다.
자동 구성: 커스텀 리소스 라고 하는
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에 대한 자세한 내용은 OpenTelemetry 및 OpenTelemetry 프로토콜 (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 수집기를 사용하도록 애플리케이션 구성을 참조하세요.
Instrumentation 커스텀 리소스
Instrumentation 커스텀 리소스를 사용하여 다음 작업을 실행합니다.
- 선택한 포드 또는 네임스페이스의 모든 포드의 컨테이너에 환경 변수를 삽입할지 여부를 지정합니다.
- 수집되는 데이터 유형 (로그, 측정항목, trace)을 제어합니다.
- 측정항목 데이터가 관리형 수집기로 전송되는 빈도를 제어합니다.
- trace 데이터의 샘플링 레이트를 제어합니다.
Instrumentation 커스텀 리소스 사용 방법에 대한 자세한 내용은
구성 수정을 참조하세요.
환경 변수 자동 삽입
OpenTelemetry 환경 변수를 GKE
워크로드에 자동으로 삽입하려면 클러스터에서 Instrumentation
객체를 구성해야 합니다.
그런 다음 Instrumentation
객체
를 사용하여 클러스터에 애플리케이션을 배포하면 GKE에서 변수를 삽입합니다.
Instrumentation 객체가 애플리케이션이
배포되고 포드가 생성될 때 클러스터에 있어야 합니다. `Instrumentation` 객체를 만들기 전에 애플리케이션을 배포한 경우 환경 변수의 자동 삽입을 트리거하려면 애플리케이션의 포드를 `다시 시작`해야 합니다.
환경 변수
자동 구성 이 사용 설정된 네임스페이스에 워크로드가 배포되면 GKE에서 환경 변수를 워크로드의 컨테이너에 삽입합니다. 이러한 환경 변수는 OpenTelemetry SDK 구성의 OpenTelemetry 변수입니다.
다음 목록에는 GKE용 관리형 OpenTelemetry에서 삽입할 수 있는 모든 환경 변수가 포함되어 있습니다. 컨테이너에 삽성되는 특정
환경 변수는 구성
에 따라 Instrumentation 커스텀 리소스에 삽입됩니다.
컨테이너에 자동으로 삽입할 수 있는 환경 변수 는 다음과 같습니다.
- OpenTelemetry 내보내기 도구 엔드포인트.
OTEL_EXPORTER_OTLP_ENDPOINT: 모든 신호 유형의 기본 엔드포인트 URL입니다. 이 엔드포인트는 항상 로그, 측정항목, trace를 위한 클러스터 내 관리형 OpenTelemetry 수집기 HTTP 엔드포인트를 가리킵니다. 엔드포인트는:http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318입니다.
- trace 샘플링 비율 구성.
OTEL_TRACES_SAMPLER: SDK에서 trace를 샘플링하는 데 사용되는 샘플러를 다음 중 하나로 설정합니다:parentbased_traceidratio커스텀 리소스에서 trace 샘플링이 구성된 경우parentbased_always_on은 이 환경 변수의 기본값입니다. 이 환경 변수가 구성되지 않았거나 커스텀 리소스에서 null 인 경우에 사용됩니다.
OTEL_TRACES_SAMPLER_ARG: trace 샘플링 비율 (0.0~1.0)을 지정합니다. 커스텀 리소스에서 구성되지 않은 경우 1.0이 사용됩니다.
OTEL_METRIC_EXPORT_INTERVAL: 두 번의 내보내기 시도 시작 사이의 시간 간격 (밀리초)(최소: 5000, 최대: 300000, 기본값: 60000).
Instrumentation 파일에서 tracer_provider, meter_provider, 또는
logger_provider가 null로 설정되면 사용 중지됩니다.
OTEL_TRACES_EXPORTER: 으로 설정하면 trace 내보내기를 사용 중지합니다.none기본값은otlp입니다.OTEL_METRICS_EXPORTER:none으로 설정하면 측정항목 내보내기를 사용 중지합니다. 기본값은otlp입니다.OTEL_LOGS_EXPORTER:none으로 설정하면 로그 내보내기를 사용 중지합니다. 기본값은otlp입니다.
K8S_POD_UID: hostNetwork 포드의 포드 UID로,OTEL_RESOURCE_ATTRIBUTES환경 변수에서k8s.pod.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 가격 책정을 사용하여 청구되며, trace는 Cloud Trace 가격 책정을 사용하여 청구됩니다.
trace, 로그, Google Cloud Managed Service for Prometheus 측정항목 수집과 관련된 비용에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참조하세요.
할당량
GKE용 관리형 OpenTelemetry를 사용하면 Google Cloud Observability 서비스의 할당량 이 적용됩니다. 자세한 내용은 다음을 참조하세요.
다음 단계
- 수집기를 배포하려면 GKE용 관리형 OpenTelemetry 배포를 참조하세요.
- GKE용 관리형 OpenTelemetry의 자체 배포 대안은 Google 기반의 OpenTelemetry Collector를 참조하세요.
- OpenTelemetry 계측을 설정하여 애플리케이션에서 trace, 측정항목, 로그를 생성하는 방법에 대한 자세한 내용은 다음을 참조하세요.
- OpenTelemetry를 사용하여 앱에 커스텀 trace 및 측정항목을 추가합니다.