|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
导出配置
所有 SDK,无论语言如何,都使用相同的基本配置来定义 Open Telemetry 服务名称 和导出器端点(即遥测发送到的地方)。
这些可以通过为您的仪器化应用程序设置环境变量来配置。
在 Kubernetes 中,在您的工作负载的清单中设置这些环境变量(将 <the-service-name> 替换为您的应用服务的名称):
...
spec:
containers:
- env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://opentelemetry-collector.open-telemetry.svc.cluster.local:4317
- name: OTEL_SERVICE_NAME
value: <the-service-name>
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: grpc
...
示例中指定的端点假设收集器是使用 安装指南 中的默认值安装的。它使用端口 4317,该端口使用 gRPC 版本的 OTLP 协议。某些仪器化仅支持 HTTP,在这种情况下,请使用端口 4318。
服务名称也可以从可能已经存在的 Kubernetes 标签中派生。例如,像这样:
spec:
containers:
- env:
- name: OTEL_SERVICE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['app.kubernetes.io/component']
gRPC vs HTTP
OTLP,即开放遥测协议,支持gRPC和通过HTTP的protobuf。一些 SDK 也支持通过 HTTP 传输 JSON。在上一节中,导出协议设置为`gRPC`,这通常提供最佳性能,并且是许多 SDK 的默认设置。然而,在某些情况下,这可能会出现问题:
-
某些防火墙未设置为处理gRPC。
-
(反向)代理和负载均衡器可能不支持gRPC,除非进行额外配置。
-
gRPC的长连接可能在负载均衡时导致问题。
要切换到HTTP而不是gRPC,请将协议更改为`http` _和_使用端口`4318`。
总结一下,如果gRPC出现问题,请使用HTTP:
-
grpc`协议使用端口`4317 -
http`协议使用端口`4318