本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

配置 SDK 导出器

要将数据发送到 SUSE Observability,您用于对应用程序进行仪器化的 SDK 会使用内置导出器。可用于生产用途的设置会在靠近您的已仪器化应用程序的位置使用 a collector,以将数据发送到 SUSE Observability,但也可以让已仪器化的应用程序 直接发送 遥测数据到 SUSE Observability。

使用收集器(生产设置)

Kubernetes 的 SDK 导出器配置

所有 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']

其他安装的 SDK 导出器配置

要配置 SDK,请为您的应用程序设置这些环境变量:

export OTEL_EXPORTER_OTLP_ENDPOINT="http://<the-host-for-the-collector>:4317"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"
export OTEL_SERVICE_NAME="<the-service-name>"
export OTEL_RESOURCE_ATTRIBUTES='service.namespace=<the-namespace>'

示例使用端口 4317,该端口使用 gRPC 版本的 OTLP 协议。某些仪器化仅支持 HTTP,使用端口 4318,协议设置为 http。请参考您所使用的语言的 SDK 文档,检查 SDK 支持的协议。OTEL_EXPORTER_OLTP_ENDPOINTOTEL_EXPORTER_OTLP_PROTOCOL 可以省略,它们有默认值,将数据发送到 localhost 上的首选端点。

`OTEL_RESOURCE_ATTRIBUTES`是可选的,除了定义服务名称空间外,还可以用于在逗号分隔的列表中设置更多资源属性。

gRPC vs HTTP

OTLP,即开放遥测协议,支持gRPC和通过HTTP的protobuf。在上一节中,导出协议设置为`gRPC`,这通常提供最佳性能。除了SDK不支持gRPC外,还有其他原因更倾向于使用HTTP:

  • 某些防火墙未设置为处理gRPC。

  • (反向)代理和负载均衡器可能不支持gRPC,除非进行额外配置。

  • gRPC的长连接可能在负载均衡时导致问题。

要切换到HTTP而不是gRPC,请将协议更改为`http` _和_使用端口`4318`。

总之,如果gRPC无法正常工作,您可以尝试使用HTTP:

  • grpc`协议在收集器上使用端口`4317

  • http`协议在收集器上使用端口`4318

没有收集器。

在小型测试环境中,直接将数据从您的仪器化应用程序发送到 SUSE Observability 可能会很方便。与上述文档中的收集器设置的唯一区别是使用`OTEL_EXPORTER_OTLP_ENDPOINT`的不同值:

  • 对于gRPC,请使用 SUSE Observability 的 OTLP 端点,参见OTLP APIs 页面

  • 对于HTTP,请使用 SUSE Observability 的 OTLP over HTTP 端点,参见OTLP APIs 页面

将收集器URL*和*端口替换为 SUSE Observability 端点。根据您的 SUSE Observability 安装,端口将会不同。