5.2. OpenTelemetry 检测配置选项
红帽构建的 OpenTelemetry 注入并将 OpenTelemetry 自动检测库配置为您的工作负载。目前,红帽构建的 OpenTelemetry 支持为 Go、Java、Node.js、Python、.NET 和 Apache HTTP Server (httpd)注入检测库。
红帽构建的 OpenTelemetry Operator 仅支持工具库的注入机制,但不支持检测库或上游镜像。客户可以构建自己的检测镜像,或使用社区镜像。
5.2.1. 检测选项 复制链接链接已复制到粘贴板!
检测选项在 Instrumentation 自定义资源 (CR) 中指定。
Instrumentation CR 示例
- 1
- Python 自动检测默认使用 HTTP 协议缓冲区(HTTP/proto 或 HTTP/protobuf)。
- 2
- 如果端点设置为
:4317,则需要此项。 - 3
- .NET auto-instrumentation 默认使用 HTTP 协议缓冲(HTTP/proto 或 HTTP/protobuf)。
- 4
- 如果端点设置为
:4317,则需要此项。 - 5
- Go auto-instrumentation 默认使用 HTTP 协议缓冲(HTTP/proto 或 HTTP/protobuf)。
- 6
- 如果端点设置为
:4317,则需要此项。有关 procol 缓冲区的更多信息,请参阅 概述 (协议缓冲文档)。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 所有检测类型的通用环境变量定义。 | |
|
| 导出器配置。 | |
|
| Propagators 定义进程上下文传播配置。 |
|
|
| 资源属性配置。 | |
|
| 抽样配置。 | |
|
| Apache HTTP 服务器检测的配置。 | |
|
| 配置 .NET 检测。 | |
|
| 配置 Go 检测。 | |
|
| Java 检测配置。 | |
|
| 配置 Node.js 检测。 | |
|
| Python 检测配置。 | 根据编程语言,环境变量可能无法配置遥测。对于不支持环境变量配置的 SDK,您必须在代码中直接添加类似的配置。如需更多信息,请参阅 环境变量规格( OpenTelemetry 文档)。 |
| 自动检测 | 默认协议 |
|---|---|
| Java 1.x |
|
| Java 2.x |
|
| Python |
|
| .NET |
|
| Go |
|
| Apache HTTP 服务器 |
|
5.2.2. 配置 OpenTelemetry SDK 变量 复制链接链接已复制到粘贴板!
您可以使用 OpenTelemetry Collector 自定义资源中的 instrumentation.opentelemetry.io/inject-sdk 注解来指示红帽构建的 OpenTelemetry Operator 将以下 OpenTelemetry SDK 环境变量注入到您的 pod 中(取决于 Instrumentation CR):
-
OTEL_SERVICE_NAME -
OTEL_TRACES_SAMPLER -
OTEL_TRACES_SAMPLER_ARG -
OTEL_PROPAGATORS -
OTEL_RESOURCE_ATTRIBUTES -
OTEL_EXPORTER_OTLP_ENDPOINT -
OTEL_EXPORTER_OTLP_CERTIFICATE -
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE -
OTEL_EXPORTER_OTLP_CLIENT_KEY
| value | 描述 |
|---|---|
|
|
将 |
|
|
注入 no |
|
|
指定要从当前命名空间注入的 |
|
|
指定要从另一个命名空间注入的 |
5.2.3. 导出器配置 复制链接链接已复制到粘贴板!
虽然 Instrumentation 自定义资源支持为每个信号设置一个或多个导出器,但自动检测方式仅配置 OTLP Exporter。因此,您必须配置端点以指向 Collector 上的 OTLP Receiver。
使用配置映射导出器 TLS CA 配置示例
使用 Secret 的 exporter mTLS 配置示例
您可以在配置映射或 Secret 中提供 CA 证书。如果您同时提供它,则配置映射的优先级高于 Secret。
使用配置映射和 Instrumentation CR 的 CA 捆绑包注入配置示例
5.2.4. 配置 Apache HTTP 服务器自动检测 复制链接链接已复制到粘贴板!
Apache HTTP 服务器自动检测只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
| Name | 描述 | default |
|---|---|---|
|
| 特定于 Apache HTTP 服务器的属性。 | |
|
| Apache HTTP 服务器配置的位置。 |
|
|
| 特定于 Apache HTTP 服务器的环境变量。 | |
|
| 使用 Apache SDK 和自动检测的容器镜像。 | |
|
| 计算资源要求。 | |
|
| Apache HTTP 服务器版本。 |
|
启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-apache-httpd: "true"
instrumentation.opentelemetry.io/inject-apache-httpd: "true"
5.2.5. 配置 .NET 自动检测 复制链接链接已复制到粘贴板!
.NET 自动检测只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,此功能注入不受支持的上游检测库。
| Name | 描述 |
|---|---|
|
| 特定于 .NET 的环境变量。 |
|
| 带有 .NET SDK 和自动检测的容器镜像。 |
|
| 计算资源要求。 |
对于 .NET 自动检测,如果需要的 OTEL_EXPORTER_OTLP_ENDPOINT 环境变量,如果导出器的端点被设置为 4317,则必须设置所需的 OTEL_EXPORTER_OTLP_ENDPOINT 环境变量。默认情况下,.NET autoinstrumentation 使用 http/proto,遥测数据必须设置为 4318 端口。
启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-dotnet: "true"
instrumentation.opentelemetry.io/inject-dotnet: "true"
5.2.6. 配置 Go 自动检测 复制链接链接已复制到粘贴板!
Go auto-instrumentation 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,此功能注入不受支持的上游检测库。
| Name | 描述 |
|---|---|
|
| 特定于 Go 的环境变量。 |
|
| 带有 Go SDK 和自动检测的容器镜像。 |
|
| 计算资源要求。 |
启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-go: "true" instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/<path>/<to>/<container>/<executable>"
instrumentation.opentelemetry.io/inject-go: "true"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/<path>/<to>/<container>/<executable>"
- 1
- 为所需的
OTEL_GO_AUTO_TARGET_EXE环境变量的值设置值。
OpenShift 集群中 Go 自动恢复所需的权限
为 OpenShift 集群中的 Go auto-instrumentation 应用权限的 CLI 命令如下:
oc adm policy add-scc-to-user otel-go-instrumentation-scc -z <service_account>
$ oc adm policy add-scc-to-user otel-go-instrumentation-scc -z <service_account>
5.2.7. 配置 Java 自动检测 复制链接链接已复制到粘贴板!
Java 自动检测只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,此功能注入不受支持的上游检测库。
| Name | 描述 |
|---|---|
|
| 特定于 Java 的环境变量。 |
|
| 使用 Java SDK 和自动检测的容器镜像。 |
|
| 计算资源要求。 |
启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-java: "true"
instrumentation.opentelemetry.io/inject-java: "true"
5.2.8. 配置 Node.js 自动检测 复制链接链接已复制到粘贴板!
Node.js 自动检测只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,此功能注入不受支持的上游检测库。
| Name | 描述 |
|---|---|
|
| 特定于 Node.js 的环境变量。 |
|
| 使用 Node.js SDK 和自动检测的容器镜像。 |
|
| 计算资源要求。 |
用于启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-nodejs: "true"
instrumentation.opentelemetry.io/inject-nodejs: "true"
5.2.9. 配置 Python 自动检测 复制链接链接已复制到粘贴板!
Python 自动检测只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,此功能注入不受支持的上游检测库。
| Name | 描述 |
|---|---|
|
| 特定于 Python 的环境变量。 |
|
| 使用 Python SDK 和自动检测的容器镜像。 |
|
| 计算资源要求。 |
对于 Python 自动检测,如果导出器的端点被设置为 4317,则必须设置 OTEL_EXPORTER_OTLP_ENDPOINT 环境变量。Python 自动检测默认使用 http/proto,并且遥测数据必须设置为 4318 端口。
启用注入的 PodSpec 注解
instrumentation.opentelemetry.io/inject-python: "true"
instrumentation.opentelemetry.io/inject-python: "true"
5.2.10. 多容器 pod 复制链接链接已复制到粘贴板!
根据 pod 规格,检测被注入到默认可用的容器。您还可以指定用于注入的目标容器名称。
Pod 注解
instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"
instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"
- 1
- 当您要在多个容器中注入单个工具时,请使用此注解。
Go 自动检测不支持多容器自动检测注入。
5.2.11. 具有多个检测的多容器 pod 复制链接链接已复制到粘贴板!
将应用程序语言的检测注入多容器 pod 中的一个或多个容器需要以下注解:
instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>"
instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>"
- 1
- 您只能为每个容器注入一个语言的检测。有关支持的
<application_language>值列表,请查看下表。
| 语言 | <application_language> 的值 |
|---|---|
| ApacheHTTPD |
|
| DotNet |
|
| Java |
|
| NGINX |
|
| NodeJS |
|
| Python |
|
| SDK |
|
5.2.12. 使用带有 Service Mesh 的检测 CR 复制链接链接已复制到粘贴板!
将 Instrumentation 自定义资源(CR)与 Red Hat OpenShift Service Mesh 搭配使用时,必须使用 b3multi propagator。