10장. OpenTelemetry SDK와 APIcast 통합
OpenTelemetry SDK 와 APIcast를 통합하면 시스템 성능 및 동작에 대한 인사이트를 제공하는 Telemetry 데이터를 내보낼 수 있습니다. APIcast는 NGINX OpenTelemetry 추적 라이브러리 를 사용합니다. 이러한 통합을 통해 성능 문제를 식별하고 해결하여 시스템 안정성이 향상됩니다.
사전 요구 사항
APIcast 내보내기 추적을 지원하는 수집기입니다.
-
APIcast에서 유일하게 구현된 내보내기 는 gRPC(Remote Procedure Calls)
OTLP/gRPC
를 통한 OTLP(OpenTelemetry Protocol)입니다. -
APIcast에서는 HTTP(
OTLP/HTTP
)를 사용하지 않습니다. -
기존 수집기에서 APIcast
OTLP/gRPC
추적을 지원하지 않는 경우 추적 프록시로 OpenTelemetry 수집기 가 필요합니다.
-
APIcast에서 유일하게 구현된 내보내기 는 gRPC(Remote Procedure Calls)
10.1. OTP 및 gRPC 추적 수신을 배포하기 위한 Jaeger 서비스 예
Jaeger 1.35 이상에서는 APIcast 내보내기 기능이 포함된 추적 수집기를 지원합니다. 결과적으로 Jaeger는 이제 gRPC(Remote Procedure Calls) OTLP/gRPC
를 통해 기본 OpenTelemetry 프로토콜(OTLP)에서 OpenTelemetry SDK에서 추적 데이터를 수신할 수 있습니다.
다음 예제는 프로덕션 용도에 적합하지 않습니다.
Jaeger 배포 예
oc apply -f - <<EOF
apiVersion: apps/v1 kind: Deployment metadata: name: jaeger labels: app: jaeger spec: replicas: 1 selector: matchLabels: app: jaeger template: metadata: labels: app: jaeger spec: containers: - name: jaeger image: jaegertracing/all-in-one:latest env: - name: JAEGER_DISABLED value: "false" - name: COLLECTOR_OTLP_ENABLED value: "true" imagePullPolicy: Always ports: - containerPort: 16686 - containerPort: 4317
apiVersion: v1 kind: Service metadata: name: jaeger labels: app: jaeger spec: ports: - port: 16686 name: http - port: 4317 name: internal selector: app: jaeger EOF
포트 4317 및 포트 16686의 3scale 관리 포털에서 OTLP/gRPC
추적을 수신 대기하는 Jaeger 서비스 인스턴스가 배포됩니다.
추적 헤더 예:
"Traceparent": "00-4335058ae8ec72f9636d8c0da08c62be-137a4beaae638572-01",