第10章 OpenTelemetry SDK と APIcast の統合
OpenTelemetry SDK と APIcast を統合すると、システムのパフォーマンスと動作に関する洞察を提供するテレメトリーデータのエクスポートが可能になります。APIcast は、NGINX OpenTelemetry トレースライブラリー に依存しています。この統合は、パフォーマンスの問題を特定して解決するのに役立ち、システムの安定性の向上につながります。
前提条件
APIcast エクスポータートレースをサポートする Trace Collector。
-
APIcast に実装されている唯一の エクスポーター は、OpenTelemetry Protocol (OTLP) over gRPC (Remote Procedure Calls)
OTLP/gRPC
です。 -
OTLP over HTTP (
OTLP/HTTP
) は APIcast では使用されていません。 -
既存のコレクターが APIcast
OTLP/gRPC
トレースをサポートしていない場合は、トレースプロキシーとして OpenTelemetry Collector が必要です。
-
APIcast に実装されている唯一の エクスポーター は、OpenTelemetry Protocol (OTLP) over gRPC (Remote Procedure Calls)
10.1. OTP および gRPC トレースをリッスンする Jaeger サービスの例
Jaeger 1.35 以降は、APIcast エクスポーター機能を含むトレースコレクターをサポートします。その結果、Jaeger は、gRPC (リモートプロシージャコール) 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
Jaeger サービスインスタンスは、ポート 4317 と 3scale 管理ポータルのポート 16686 で OTLP/gRPC
トレースをリッスンするようにデプロイされます。
トレースヘッダーの例:
"Traceparent": "00-4335058ae8ec72f9636d8c0da08c62be-137a4beaae638572-01",