第 3 章 配置和部署 OpenTelemetry 的红帽构建
红帽构建的 OpenTelemetry Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台 (Tempo) 资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。
3.1. OpenTelemetry Collector 配置选项
OpenTelemetry Collector 由访问遥测数据的一组组件组成:
- Receivers
- 可以推送或拉取的接收器(基于推送或拉取)是数据如何进入 Collector 中。通常,接收器接受指定格式的数据,将其转换为内部格式,并将其传递给适用管道中定义的处理器和导出器。默认情况下,不会配置接收器。必须配置一个或多个接收器。接收器可以支持一个或多个数据源。
- Processors
- 可选。处理器处理接收和导出的数据。默认情况下,不启用处理器。每个数据源都必须启用处理器。不是所有处理器都支持所有数据源。根据数据源,可能会启用多个处理器。请注意,处理器的顺序很重要。
- Exporters
- 可以推送或拉取的导出器是如何将数据发送到一个或多个后端或目的地。默认情况下,不会配置导出器。必须配置一个或多个导出器。导出器可以支持一个或多个数据源。导出器可能会与其默认设置一起使用,但许多导出器需要配置来至少指定目标和安全设置。
- 连接器
- 连接器连接两个管道。它在一个管道的末尾将数据视为导出器,并在另一个管道开始时将数据作为接收器发送。它可以消耗和发送相同或不同数据类型的数据。它可以生成并发送数据以汇总已消耗的数据,或者可以完全复制或路由数据。
- 扩展
- 扩展为 Collector 添加了功能。例如,身份验证可以自动添加到接收器和导出器中。
您可以在自定义资源 YAML 文件中定义多个组件实例。配置后,必须通过 YAML 文件的 spec.config.service
部分中定义的管道启用这些组件。作为最佳实践,仅启用您需要的组件。
OpenTelemetry Collector 自定义资源文件示例
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: cluster-collector
namespace: tracing-system
spec:
mode: deployment
observability:
metrics:
enableMetrics: true
config: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
exporters:
otlp:
endpoint: jaeger-production-collector-headless.tracing-system.svc:4317
tls:
ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
prometheus:
endpoint: 0.0.0.0:8889
resource_to_telemetry_conversion:
enabled: true # by default resource attributes are dropped
service: 1
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [jaeger]
metrics:
receivers: [otlp]
processors: []
exporters: [prometheus]
- 1
- 如果一个组件被配置但没有在
service
部分中定义,则组件不会被启用。
参数 | 描述 | 值 | default |
---|---|---|---|
receivers: | 接收器用于控制数据如何进入 Collector。默认情况下,不会配置接收器。必须至少有一个启用的接收器才能使配置被视为有效。接收器通过添加到管道中来启用。 |
| None |
processors: | 处理器通过数据接收和导出。默认情况下,不启用处理器。 |
| None |
exporters: | 导出器将数据发送到一个或多个后端或目的地。默认情况下,不会配置导出器。必须至少启用了一个 exporter 时,配置才被视为有效。将导出器添加到管道中即可启用。导出器可能会与其默认设置一起使用,但很多需要配置至少指定目标和安全设置。 |
| None |
connectors: | 连接器加入管道对,这通过使用数据作为管道导出器,并将数据作为管道接收器发送,并可用于总结、复制或路由消耗的数据。 |
| None |
extensions: | 不涉及处理遥测数据的任务的可选组件。 |
| None |
service: pipelines: |
组件通过将组件添加到 | ||
service: pipelines: traces: receivers: |
您可以通过在 | 无 | |
service: pipelines: traces: processors: |
您可以通过在 | 无 | |
service: pipelines: traces: exporters: |
您可以通过在 | None | |
service: pipelines: metrics: receivers: |
您可以通过在 | None | |
service: pipelines: metrics: processors: |
您可以通过在 | None | |
service: pipelines: metrics: exporters: |
您可以通过在 | None |
3.1.1. OpenTelemetry Collector 组件
3.1.1.1. Receivers
接收器将数据放入 Collector 中。
3.1.1.1.1. OTLP Receiver
OTLP 接收器使用 OpenTelemetry 协议 (OTLP) ingests trace 和 metrics。
OpenTelemetry Collector 自定义资源带有启用的 OTLP 接收器
config: | receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 1 tls: 2 ca_file: ca.pem cert_file: cert.pem key_file: key.pem client_ca_file: client.pem 3 reload_interval: 1h 4 http: endpoint: 0.0.0.0:4318 5 tls: 6 service: pipelines: traces: receivers: [otlp] metrics: receivers: [otlp]
- 1
- OTLP gRPC 端点。如果省略,则使用默认的
0.0.0.0:4317
。 - 2
- 服务器端 TLS 配置。定义 TLS 证书的路径。如果省略,则禁用 TLS。
- 3
- 服务器验证客户端证书的 TLS 证书的路径。这会将
TLSConfig
中的ClientCAs
和ClientAuth
的值设置为RequireAndVerifyClientCert
。如需更多信息,请参阅 Golang TLS 软件包的配置
。 - 4
- 指定重新载入证书的时间间隔。如果没有设置值,则证书永远不会重新加载。
reload_interval
接受包含有效时间单位的字符串,如ns
、us
(或 unmarshals
)、ms
、s
、m
、h
。 - 5
- OTLP HTTP 端点。默认值为
0.0.0.0:4318
。 - 6
- 服务器端 TLS 配置。如需更多信息,请参阅
grpc
协议配置部分。
3.1.1.1.2. Jaeger Receiver
Jaeger 接收器以 Jaeger 格式计算 trace。
OpenTelemetry Collector 自定义资源,启用了 Jaeger 接收器
config: | receivers: jaeger: protocols: grpc: endpoint: 0.0.0.0:14250 1 thrift_http: endpoint: 0.0.0.0:14268 2 thrift_compact: endpoint: 0.0.0.0:6831 3 thrift_binary: endpoint: 0.0.0.0:6832 4 tls: 5 service: pipelines: traces: receivers: [jaeger]
3.1.1.1.3. Prometheus Receiver
Prometheus 接收器目前只是一个技术预览功能。
Prometheus 接收器提取指标端点。
OpenTelemetry Collector 自定义资源带有启用 Prometheus 接收器
config: | receivers: prometheus: config: scrape_configs: 1 - job_name: 'my-app' 2 scrape_interval: 5s 3 static_configs: - targets: ['my-app.example.svc.cluster.local:8888'] 4 service: pipelines: metrics: receivers: [prometheus]
3.1.1.1.4. Zipkin Receiver
Zipkin 接收器使用 Zipkin v1 和 v2 格式的 ingests trace。
OpenTelemetry Collector 自定义资源带有启用 Zipkin 接收器
config: | receivers: zipkin: endpoint: 0.0.0.0:9411 1 tls: 2 service: pipelines: traces: receivers: [zipkin]
3.1.1.1.5. Kafka Receiver
Kafka 接收器目前只是一个技术预览功能。
Kafka 接收器以 OTLP 格式接收 Kafka 中的 trace、metrics 和日志。
OpenTelemetry Collector 自定义资源带有启用 Kafka 接收器
config: | receivers: kafka: brokers: ["localhost:9092"] 1 protocol_version: 2.0.0 2 topic: otlp_spans 3 auth: plain_text: 4 username: example password: example tls: 5 ca_file: ca.pem cert_file: cert.pem key_file: key.pem insecure: false 6 server_name_override: kafka.example.corp 7 service: pipelines: traces: receivers: [kafka]
3.1.1.1.6. OpenCensus 接收器
OpenCensus 接收器提供与 OpenCensus 项目的向后兼容性,以便更轻松地迁移检测代码库。它通过 gRPC 或 HTTP 和 Json 以 OpenCensus 格式接收指标和跟踪。
OpenTelemetry Collector 自定义资源,启用了 OpenCensus 接收器
config: | receivers: opencensus: endpoint: 0.0.0.0:9411 1 tls: 2 cors_allowed_origins: 3 - https://*.<example>.com service: pipelines: traces: receivers: [opencensus] ...
3.1.1.2. Processors
处理器通过数据接收和导出。
3.1.1.2.1. 批处理处理器
批处理(Batch)处理器批处理跟踪和指标,以减少传输遥测信息所需的传出连接数量。
使用 Batch 处理器时 OpenTelemetry Collector 自定义资源示例
config: | processor: batch: timeout: 5s send_batch_max_size: 10000 service: pipelines: traces: processors: [batch] metrics: processors: [batch]
参数 | 描述 | default |
---|---|---|
timeout | 将批处理发送到特定的持续时间,无论批处理大小如何。 |
|
send_batch_size | 在指定数量的 span 或 metrics 后发送遥测数据的批处理。 |
|
send_batch_max_size |
批处理的最大允许大小。必须等于或大于 |
|
metadata_keys |
激活后,会为在 |
|
metadata_cardinality_limit |
在填充 |
|
3.1.1.2.2. Memory Limiter 处理器
Memory Limiter 处理器定期检查 Collector 的内存用量,并在达到软内存限制时暂停数据处理。这个处理器支持 trace、metrics 和 logs。前面的组件(通常是接收器)应该重试发送同一数据,并可能对传入的数据应用回溯。当内存用量超过硬限制时,Memory Limiter 处理器会强制运行垃圾回收操作。
使用 Memory Limiter 处理器时 OpenTelemetry Collector 自定义资源示例
config: | processor: memory_limiter: check_interval: 1s limit_mib: 4000 spike_limit_mib: 800 service: pipelines: traces: processors: [batch] metrics: processors: [batch]
参数 | 描述 | default |
---|---|---|
check_interval |
内存用量测量之间的时间。最佳值为 |
|
limit_mib | 硬限制,即堆上分配的最大内存量(以 MiB 为单位)。通常,OpenTelemetry Collector 的内存用量大约比这个值高 50 MiB。 |
|
spike_limit_mib |
spike 限制,这是 MiB 中内存使用率最大激增。最佳值为 |
|
limit_percentage |
与 |
|
spike_limit_percentage |
与 |
|
3.1.1.2.3. 资源检测处理器
资源检测处理器目前只是一个技术预览功能。
资源检测处理器识别主机资源详情与 OpenTelemetry 的资源语义标准保持一致。使用检测到的信息,它可以添加或替换遥测数据中的资源值。此处理器支持 trace、metrics,并可与多个检测器一起使用,如 Docket 元数据检测器或 OTEL_RESOURCE_ATTRIBUTES
环境变量检测器。
OpenShift Container Platform 权限用于资源检测处理器
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: ["config.openshift.io"] resources: ["infrastructures", "infrastructures/status"] verbs: ["get", "watch", "list"]
OpenTelemetry Collector 使用资源检测处理器
config: | processor: resourcedetection: detectors: [openshift] override: true service: pipelines: traces: processors: [resourcedetection] metrics: processors: [resourcedetection]
OpenTelemetry Collector 使用带有环境变量检测器的资源检测器
config: |
processors:
resourcedetection/env:
detectors: [env] 1
timeout: 2s
override: false
- 1
- 指定要使用的检测器。在本例中,指定了环境检测器。
3.1.1.2.4. 属性处理器
属性处理器目前只是一个技术预览功能。
Attributes 处理器可以修改 span, log, 或 metric 的属性。您可以配置此处理器来过滤和匹配输入数据,并为特定操作包含或排除此类数据。
处理器对操作列表进行操作,按配置中指定的顺序执行它们。支持以下操作:
- insert
- 当指定的键尚不存在时,将新属性插入到输入数据中。
- Update(更新)
- 如果密钥已存在,更新输入数据中的属性。
- Upsert
- 合并 insert 和 update 操作:如果键尚不存在,则插入新属性。如果密钥已存在,则更新 属性。
- 删除
- 从输入数据中删除属性。
- Hash
- 将现有属性值哈希为 SHA1。
- extract
-
通过使用输入键的正则表达式规则将值提取到规则中定义的目标键。如果目标键已存在,它将被像使用现有属性作为源的 Span 处理器
to_attributes
设置一样覆盖。 - Convert
- 将现有属性转换为指定类型。
OpenTelemetry Collector 使用属性处理器
config: | processors: attributes/example: actions: - key: db.table action: delete - key: redacted_span value: true action: upsert - key: copy_key from_attribute: key_original action: update - key: account_id value: 2245 action: insert - key: account_password action: delete - key: account_email action: hash - key: http.status_code action: convert converted_type: int
3.1.1.2.5. 资源处理器
资源处理器目前只是一个技术预览功能。
资源处理器对资源属性应用更改。这个处理器支持 trace、metrics 和 logs。
OpenTelemetry Collector 使用资源检测处理器
config: | processor: attributes: - key: cloud.availability_zone value: "zone-1" action: upsert - key: k8s.cluster.name from_attribute: k8s-cluster action: insert - key: redundant-attribute action: delete
属性代表应用到资源属性的操作,如删除属性、插入属性或 upsert 属性。
3.1.1.2.6. span 处理器
Span 处理器目前只是一个技术预览功能。
Span 处理器根据其属性修改 span 名称,或者从 span 名称中提取 span 属性。它还可以更改 span 状态。它还可以包含或排除 span。这个处理器支持 trace。
span rename 需要使用 from_attributes
配置为新名称指定属性。
OpenTelemetry Collector 使用 Span 处理器重命名范围
config: | processor: span: name: from_attributes: [<key1>, <key2>, ...] 1 separator: <value> 2
您可以使用处理器从 span 名称中提取属性。
OpenTelemetry Collector 使用 Span 处理器从范围名称中提取属性
config: |
processor:
span/to_attributes:
name:
to_attributes:
rules:
- ^\/api\/v1\/document\/(?P<documentId>.*)\/update$ 1
- 1
- 此规则定义如何执行提取。您可以定义更多规则:例如,如果正则表达式与名称匹配,则会创建一个
documentID
属性。在本例中,如果输入 span 名称是/api/v1/document/12345678/update
,则会产生/api/v1/document/{documentId}/update
输出 span 名称,并且新的"documentId"="12345678"
属性被添加到 span 中。
您可以修改 span 状态。
OpenTelemetry Collector 使用 Span Processor 进行状态更改
config: | processor: span/set_status: status: code: Error description: "<error_description>"
3.1.1.2.7. Kubernetes 属性处理器
Kubernetes 属性处理器目前只是一个技术预览功能。
Kubernetes 属性处理器使用 Kubernetes 元数据启用 span、metrics 和 log 资源属性的自动配置。这个处理器支持 trace、metrics 和 logs。此处理器自动识别 Kubernetes 资源,从它们中提取元数据,并将此提取的元数据作为资源属性合并到相关的 span、metrics 和 logs 中。它使用 Kubernetes API 来发现在集群内运行的所有 pod,维护其 IP 地址、pod UID 和其他相关元数据的记录。
Kubernetes 属性处理器所需的最小 OpenShift Container Platform 权限
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: [''] resources: ['pods', 'namespaces'] verbs: ['get', 'watch', 'list']
OpenTelemetry Collector 使用 Kubernetes 属性处理器
config: | processors: k8sattributes: filter: node_from_env_var: KUBE_NODE_NAME
3.1.1.3. 过滤处理器
Filter 处理器目前只是一个技术预览功能。
Filter 处理器利用 OpenTelemetry Transformation Language 来建立丢弃遥测数据的条件。如果满足这些条件,遥测数据将被丢弃。可以使用逻辑 OR 运算符来组合条件。这个处理器支持 trace、metrics 和 logs。
OpenTelemetry Collector 自定义资源,启用了 OTLP exporter
config: | processors: filter/ottl: error_mode: ignore 1 traces: span: - 'attributes["container.name"] == "app_container_1"' 2 - 'resource.attributes["host.name"] == "localhost"' 3
3.1.1.4. 路由处理器
路由处理器目前只是一个技术预览功能。
路由处理器将日志、指标或追踪路由到特定的导出器。此处理器可以从传入的 HTTP 请求 (gRPC 或普通 HTTP) 读取标头,或者可以读取资源属性,然后根据读值将 trace 信息定向到相关导出器。
OpenTelemetry Collector 自定义资源,启用了 OTLP exporter
config: | processors: routing: from_attribute: X-Tenant 1 default_exporters: 2 - jaeger table: 3 - value: acme exporters: [jaeger/acme] exporters: jaeger: endpoint: localhost:14250 jaeger/acme: endpoint: localhost:24250
您可以选择创建一个 attribute_source
配置,用于定义在 from_attribute
中查找属性的位置。允许的值是 context
(搜索上下文),其中包括 HTTP 标头,或 resource
(搜索资源属性)。
3.1.1.5. Exporters
导出器将数据发送到一个或多个后端或目的地。
3.1.1.5.1. OTLP exporter
OTLP gRPC 导出器使用 OpenTelemetry 协议 (OTLP) 导出追踪和指标。
OpenTelemetry Collector 自定义资源,启用了 OTLP exporter
config: | exporters: otlp: endpoint: tempo-ingester:4317 1 tls: 2 ca_file: ca.pem cert_file: cert.pem key_file: key.pem insecure: false 3 insecure_skip_verify: false # 4 reload_interval: 1h 5 server_name_override: <name> 6 headers: 7 X-Scope-OrgID: "dev" service: pipelines: traces: exporters: [otlp] metrics: exporters: [otlp]
- 1
- OTLP gRPC 端点。如果使用
https://
方案,则启用客户端传输安全性并覆盖tls
中的不安全
设置。 - 2
- 客户端 TLS 配置。定义 TLS 证书的路径。
- 3
- 当设置为
true
时禁用客户端传输安全性。默认值为false
。 - 4
- 当设置为
true
时跳过验证证书。默认值为false
。 - 5
- 指定重新载入证书的时间间隔。如果没有设置值,则证书永远不会重新加载。
reload_interval
接受包含有效时间单位的字符串,如ns
、us
(或 unmarshals
)、ms
、s
、m
、h
。 - 6
- 覆盖请求中的颁发机构的虚拟主机名,如授权标头字段。您可以使用此选项进行测试。
- 7
- 为建立的连接期间执行的每个请求发送标头。
3.1.1.5.2. OTLP HTTP exporter
OTLP HTTP 导出器使用 OpenTelemetry 协议 (OTLP) 导出追踪和指标。
OpenTelemetry Collector 自定义资源,启用了 OTLP exporter
config: | exporters: otlphttp: endpoint: http://tempo-ingester:4318 1 tls: 2 headers: 3 X-Scope-OrgID: "dev" disable_keep_alives: false 4 service: pipelines: traces: exporters: [otlphttp] metrics: exporters: [otlphttp]
3.1.1.5.3. Debug exporter
Debug exporter 会将 trace 和 metrics 打印到标准输出。
OpenTelemetry Collector 自定义资源启用了 Debug exporter
config: |
exporters:
debug:
verbosity: detailed 1
service:
pipelines:
traces:
exporters: [logging]
metrics:
exporters: [logging]
- 1
- debug 导出的详细程度为:
detailed
或normal
或basic
。当设置为detailed
时,管道数据会详细记录。默认为normal
。
3.1.1.5.4. Prometheus exporter
Prometheus exporter 当前只是一个技术预览功能。
Prometheus exporter 以 Prometheus 或 OpenMetrics 格式导出指标。
OpenTelemetry Collector 自定义资源,启用了 Prometheus exporter
ports: - name: promexporter 1 port: 8889 protocol: TCP config: | exporters: prometheus: endpoint: 0.0.0.0:8889 2 tls: 3 ca_file: ca.pem cert_file: cert.pem key_file: key.pem namespace: prefix 4 const_labels: 5 label1: value1 enable_open_metrics: true 6 resource_to_telemetry_conversion: 7 enabled: true metric_expiration: 180m 8 add_metric_suffixes: false 9 service: pipelines: metrics: exporters: [prometheus]
- 1
- 从 Collector pod 和服务公开 Prometheus 端口。您可以使用
ServiceMonitor
或PodMonitor
自定义资源中的端口名称启用 Prometheus 提取指标。 - 2
- 公开指标的网络端点。
- 3
- 服务器端 TLS 配置。定义 TLS 证书的路径。
- 4
- 如果设置,在提供的值下导出指标。无默认值。
- 5
- 每个导出的指标应用的键值对标签。无默认值。
- 6
- 如果为
true
,则使用 OpenMetrics 格式导出指标。Exemplars 仅以 OpenMetrics 格式导出,仅适用于直方和 monotonic 摘要指标,如counter
。默认禁用此选项。 - 7
- 如果
enabled
是true
,则默认情况下,所有资源属性都会转换为指标标签。默认禁用此选项。 - 8
- 定义在没有更新的情况下公开指标的时间。默认值为
5m
。 - 9
- 添加指标类型和单元后缀。如果启用了 Jaeger 控制台中的 monitor 选项卡,则必须禁用。默认值是
true
。
3.1.1.5.5. Kafka exporter
Kafka 导出器目前只是一个技术预览功能。
Kafka 导出器将日志、指标和追踪导出到 Kafka。此导出器使用同步制作者,用于阻止且不批处理消息。它必须与批处理和排队重试处理器一起使用,以获得更高的吞吐量和弹性。
OpenTelemetry Collector 自定义资源,启用了 Kafka exporter
config: | exporters: kafka: brokers: ["localhost:9092"] 1 protocol_version: 2.0.0 2 topic: otlp_spans 3 auth: plain_text: 4 username: example password: example tls: 5 ca_file: ca.pem cert_file: cert.pem key_file: key.pem insecure: false 6 server_name_override: kafka.example.corp 7 service: pipelines: traces: exporters: [kafka]
- 1
- Kafka 代理列表。默认值为
localhost:9092
。 - 2
- Kafka 协议版本。例如,
2.0.0
。这个为必填字段。 - 3
- 要从中读取的 Kafka 主题的名称。以下是默认设置:
otlp_spans
(用于 traces),otlp_metrics
(用于 metrics),otlp_logs
(用于 logs)。 - 4
- 纯文本身份验证配置。如果省略,则禁用纯文本身份验证。
- 5
- 客户端 TLS 配置。定义 TLS 证书的路径。如果省略,则禁用 TLS 身份验证。
- 6
- 禁用验证服务器的证书链和主机名。默认值为
false
。 - 7
- ServerName 表示客户端请求的服务器名称,以支持虚拟主机。
3.1.1.6. 连接器
连接器连接两个管道。
3.1.1.6.1. Spanmetrics 连接器
Spanmetrics 连接器目前只是一个技术预览功能。
Spanmetrics 连接器聚合了来自 span 数据的 Request, Error, 和 Duration (R.E.D) OpenTelemetry 指标。
OpenTelemetry Collector 自定义资源带有启用的 spanmetrics 连接器
config: |
connectors:
spanmetrics:
metrics_flush_interval: 15s 1
service:
pipelines:
traces:
exporters: [spanmetrics]
metrics:
receivers: [spanmetrics]
- 1
- 定义生成的指标的清除间隔。默认值为
15s
。
3.1.1.7. 扩展
扩展为 Collector 添加功能。
3.1.1.7.1. BearerTokenAuth 扩展
BearerTokenAuth 扩展目前只是一个技术预览功能。
BearerTokenAuth 扩展是基于 HTTP 和 gRPC 协议的接收器和导出器的验证器。您可以使用 OpenTelemetry Collector 自定义资源为接收器和 exporter 端的 BearerTokenAuth 扩展配置客户端身份验证和服务器身份验证。此扩展支持 trace、metrics 和 logs。
OpenTelemetry Collector 自定义资源,为 BearerTokenAuth 扩展配置了客户端和服务器身份验证
config: | extensions: bearertokenauth: scheme: "Bearer" 1 token: "<token>" 2 filename: "<token_file>" 3 receivers: otlp: protocols: http: auth: authenticator: bearertokenauth 4 exporters: otlp: auth: authenticator: bearertokenauth 5 service: extensions: [bearertokenauth] pipelines: traces: receivers: [otlp] exporters: [otlp]
3.1.1.7.2. OAuth2Client 扩展
OAuth2Client 扩展目前只是一个技术预览功能。
OAuth2Client 扩展是导出器的验证器,它基于 HTTP 和 gRPC 协议。OAuth2Client 扩展的客户端身份验证在 OpenTelemetry Collector 自定义资源中的单独部分中配置。此扩展支持 trace、metrics 和 logs。
OpenTelemetry Collector 自定义资源,为 OAuth2Client 扩展配置了客户端身份验证
config: | extensions: oauth2client: client_id: <client_id> 1 client_secret: <client_secret> 2 endpoint_params: 3 audience: <audience> token_url: https://example.com/oauth2/default/v1/token 4 scopes: ["api.metrics"] 5 # tls settings for the token client tls: 6 insecure: true 7 ca_file: /var/lib/mycert.pem 8 cert_file: <cert_file> 9 key_file: <key_file> 10 timeout: 2s 11 receivers: otlp: protocols: http: exporters: otlp: auth: authenticator: oauth2client 12 service: extensions: [oauth2client] pipelines: traces: receivers: [otlp] exporters: [otlp]
- 1
- 客户端标识符,由身份提供程序提供。
- 2
- 用于向身份提供程序验证客户端的机密密钥。
- 3
- 其他元数据,采用键值对格式,在身份验证过程中传输。例如,
audience
指定访问令牌的预期受众,指示令牌的接收者。 - 4
- OAuth2 令牌端点的 URL,Collector 请求访问令牌。
- 5
- 范围定义客户端请求的特定权限或访问级别。
- 6
- 令牌客户端的传输层安全性 (TLS) 设置,用于在请求令牌时建立安全连接。
- 7
- 当设置为
true
时,将 Collector 配置为使用不安全或非验证的 TLS 连接来调用配置的令牌端点。 - 8
- 用于在 TLS 握手过程中验证服务器证书的证书颁发机构 (CA) 文件的路径。
- 9
- 如果需要,客户端必须用来向 OAuth2 服务器验证自己的客户端证书文件的路径。
- 10
- 身份验证所需的客户端私钥文件的路径。
- 11
- 为令牌客户端的请求设置超时。
- 12
- 您可以将验证器配置分配给 OTLP 导出器。
3.1.1.7.3. Jaeger Remote Sampling 扩展
Jaeger Remote Sampling 扩展目前只是一个技术预览功能。
Jaeger Remote Sampling 扩展允许在 Jaeger 的远程抽样 API 后提供抽样策略。您可以配置此扩展,将请求代理到后备远程抽样服务器,如 Jaeger 收集器关闭管道或从本地文件系统到静态 JSON 文件。
OpenTelemetry Collector 自定义资源带有配置的 Jaeger Remote Sampling 扩展
config: | extensions: jaegerremotesampling: source: reload_interval: 30s 1 remote: endpoint: jaeger-collector:14250 2 file: /etc/otelcol/sampling_strategies.json 3 receivers: otlp: protocols: http: exporters: otlp: service: extensions: [jaegerremotesampling] pipelines: traces: receivers: [otlp] exporters: [otlp]
Jaeger Remote Sampling 策略文件示例
{ "service_strategies": [ { "service": "foo", "type": "probabilistic", "param": 0.8, "operation_strategies": [ { "operation": "op1", "type": "probabilistic", "param": 0.2 }, { "operation": "op2", "type": "probabilistic", "param": 0.4 } ] }, { "service": "bar", "type": "ratelimiting", "param": 5 } ], "default_strategy": { "type": "probabilistic", "param": 0.5, "operation_strategies": [ { "operation": "/health", "type": "probabilistic", "param": 0.0 }, { "operation": "/metrics", "type": "probabilistic", "param": 0.0 } ] } }
3.1.1.7.4. Performance Profiler 扩展
Performance Profiler 扩展目前只是一个技术预览功能。
Performance Profiler 扩展启用 Go net/http/pprof
端点。这通常供开发人员用来收集性能配置集,并调查服务的问题。
OpenTelemetry Collector 自定义资源带有配置的 Performance Profiler 扩展
config: | extensions: pprof: endpoint: localhost:1777 1 block_profile_fraction: 0 2 mutex_profile_fraction: 0 3 save_to_file: test.pprof 4 receivers: otlp: protocols: http: exporters: otlp: service: extensions: [pprof] pipelines: traces: receivers: [otlp] exporters: [otlp]
3.1.1.7.5. 健康检查扩展
Health Check 扩展目前只是一个技术预览功能。
Health Check 扩展提供了一个 HTTP URL,用于检查 OpenTelemetry Collector 的状态。您可以将此扩展用作 OpenShift 上的存活度和就绪度探测。
OpenTelemetry Collector 自定义资源带有配置的 Health Check 扩展
config: | extensions: health_check: endpoint: "0.0.0.0:13133" 1 tls: 2 ca_file: "/path/to/ca.crt" cert_file: "/path/to/cert.crt" key_file: "/path/to/key.key" path: "/health/status" 3 check_collector_pipeline: 4 enabled: true 5 interval: "5m" 6 exporter_failure_threshold: 5 7 receivers: otlp: protocols: http: exporters: otlp: service: extensions: [health_check] pipelines: traces: receivers: [otlp] exporters: [otlp]
3.1.1.7.6. 内存 Ballast 扩展
Memory Ballast 扩展目前只是一个技术预览功能。
Memory Ballast 扩展可让应用程序为进程配置内存 ballast。
OpenTelemetry Collector 自定义资源带有配置的 Memory Ballast 扩展
config: | extensions: memory_ballast: size_mib: 64 1 size_in_percentage: 20 2 receivers: otlp: protocols: http: exporters: otlp: service: extensions: [memory_ballast] pipelines: traces: receivers: [otlp] exporters: [otlp]
3.1.1.7.7. zPages 扩展
zPages 扩展目前只是一个技术预览功能。
zPages 扩展为提供 zPages 的扩展提供了一个 HTTP 端点。在端点,此扩展为调试检测组件提供实时数据。所有核心导出器和接收器提供一些 zPages 检测。
zPages 可用于进程内诊断,而无需依赖后端来检查 trace 或指标。
OpenTelemetry Collector 自定义资源带有配置的 zPages 扩展
config: |
extensions:
zpages:
endpoint: "localhost:55679" 1
receivers:
otlp:
protocols:
http:
exporters:
otlp:
service:
extensions: [zpages]
pipelines:
traces:
receivers: [otlp]
exporters: [otlp]
- 1
- 指定提供 zPages 的 HTTP 端点。使用
localhost:
使其仅在本地可用,或":"
使其在所有网络接口上可用。默认值为localhost:55679
。