第 9 章 将 OpenTelemetry SDK 与 APIcast 集成
OpenTelemetry SDK 与 APIcast 集成可启用遥测数据导出,以深入了解系统性能和行为。APIcast 依赖于 NGINX OpenTelemetry 追踪库。此集成有助于识别和解决性能问题,从而提高了系统稳定性。
先决条件
跟踪 Collector 支持 APIcast exporter 跟踪程序。
-
APIcast 中唯一实现 导出器 是 gRPC 上的 OpenTelemetry 协议(OTLP) (远程过程调用)
OTLP/gRPC
。 -
APIcast 不使用 OTLP over HTTP (
OTLP/HTTP
)。 -
如果现有收集器不支持 APIcast
OTLP/gRPC
跟踪,则需要 OpenTelemetry Collector 作为追踪代理。
-
APIcast 中唯一实现 导出器 是 gRPC 上的 OpenTelemetry 协议(OTLP) (远程过程调用)
9.1. 用于部署 OTP 和 gRPC trace 的 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 和 3scale 管理门户(端口 16686)中侦听 OTLP/gRPC
跟踪。
追踪标头示例:
"Traceparent": "00-4335058ae8ec72f9636d8c0da08c62be-137a4beaae638572-01",