第 10 章 将 OpenTelemetry SDK 与 APIcast 集成
OpenTelemetry SDK 与 APIcast 集成启用遥测数据的导出,以深入了解系统性能和行为。APIcast 依赖于 NGINX OpenTelemetry 追踪库。这种集成有助于识别和解决性能问题,从而提高系统稳定性。
先决条件
跟踪支持 APIcast 导出器追踪的 Collector。
-
APIcast 中唯一实现的导出是通过 gRPC (远程流程调用)
OTLP/gRPC
的 OpenTelemetry 协议(OTLP)。https://opentelemetry.io/docs/reference/specification/protocol/exporter/ -
APIcast 不使用 OTLP over HTTP (
OTLP/HTTP
)。 -
如果现有收集器不支持 APIcast
OTLP/gRPC
跟踪,则需要一个 OpenTelemetry Collector 作为追踪代理。
-
APIcast 中唯一实现的导出是通过 gRPC (远程流程调用)
10.1. 部署 OTP 和 gRPC 跟踪的 Jaeger 服务示例
Jaeger 1.35 或更高版本支持 trace 收集器,其中包括 APIcast exporter 功能。现在,Jaeger 可以通过原生的 OpenTelemetry Protocol (OTLP) over gRPC (Remote Procedure Calls) OTLP/gRPC
接收来自 OpenTelemetry SDK 的 trace 数据。
重要
以下示例不适用于生产环境。
部署 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 以及端口 16686 的 3scale 管理门户中侦听 OTLP/gRPC
跟踪。
追踪标头示例:
"Traceparent": "00-4335058ae8ec72f9636d8c0da08c62be-137a4beaae638572-01",