3.2. Processors
处理器处理接收和导出的数据。处理器是可选的。默认情况下,不启用处理器。每个数据源都必须启用处理器。不是所有处理器都支持所有数据源。根据数据源,可能会启用多个处理器。请注意,处理器的顺序很重要。
3.2.1. Batch Processor
Batch Processor 会批处理跟踪和指标,以减少传输遥测信息所需的传出连接数量。
使用 Batch Processor 时 OpenTelemetry Collector 自定义资源示例
# ... config: | processor: batch: timeout: 5s send_batch_max_size: 10000 service: pipelines: traces: processors: [batch] metrics: processors: [batch] # ...
参数 | 描述 | default |
---|---|---|
| 将批处理发送到特定的持续时间,无论批处理大小如何。 |
|
| 在指定数量的 span 或 metrics 后发送遥测数据的批处理。 |
|
|
批处理的最大允许大小。必须等于或大于 |
|
|
激活后,会为在 |
|
|
在填充 |
|
3.2.2. Memory Limiter Processor
Memory Limiter Processor 定期检查 Collector 的内存用量,并在达到软内存限制时暂停数据处理。这个处理器支持 trace、metrics 和 logs。前面的组件(通常是接收器)应该重试发送同一数据,并可能对传入的数据应用回溯。当内存用量超过硬限制时,Memory Limiter Processor 会强制运行垃圾回收操作。
使用 Memory Limiter Processor 时 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 |
---|---|---|
|
内存用量测量之间的时间。最佳值为 |
|
| 硬限制,即堆上分配的最大内存量(以 MiB 为单位)。通常,OpenTelemetry Collector 的内存用量大约比这个值高 50 MiB。 |
|
|
spike 限制,这是 MiB 中内存使用率最大激增。最佳值为 |
|
|
与 |
|
|
与 |
|
3.2.3. Resource Detection Processor
Resource Detection Processor 识别主机资源详情与 OpenTelemetry 的资源语义标准保持一致。使用检测到的信息,此处理器可以在遥测数据中添加或替换资源值。这个处理器支持 trace 和 metrics。您可以将这个处理器与多个检测器一起使用,如 Docket 元数据检测器或 OTEL_RESOURCE_ATTRIBUTES
环境变量检测器。
Resource Detection Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Resource Detection Processor 所需的 OpenShift Container Platform 权限
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: ["config.openshift.io"] resources: ["infrastructures", "infrastructures/status"] verbs: ["get", "watch", "list"] # ...
使用 Resource Detection Processor 的 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.2.4. Attributes Processor
Attributes Processor 可以修改 span, log, 或 metric 的属性。您可以配置此处理器来过滤和匹配输入数据,并为特定操作包含或排除此类数据。
Attributes Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
处理器对操作列表进行操作,按配置中指定的顺序执行它们。支持以下操作:
- insert
- 当指定的键尚不存在时,将新属性插入到输入数据中。
- Update(更新)
- 如果密钥已存在,更新输入数据中的属性。
- Upsert
- 合并 insert 和 update 操作:如果键尚不存在,则插入新属性。如果密钥已存在,则更新 属性。
- 删除
- 从输入数据中删除属性。
- Hash
- 将现有属性值哈希为 SHA1。
- extract
-
通过使用输入键的正则表达式规则将值提取到规则中定义的目标键。如果目标键已存在,它将被像使用现有属性作为源的 Span 处理器
to_attributes
设置一样覆盖。 - Convert
- 将现有属性转换为指定类型。
OpenTelemetry Collector 使用 ttributes Processor
# ... 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.2.5. Resource Processor
Resource Processor 应用对资源属性的更改。这个处理器支持 trace、metrics 和 logs。
Resource Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用 Resource Detection Processor 的 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.2.6. Span Processor
Span Processor 根据其属性修改 span 名称,或者从 span 名称中提取 span 属性。此处理器也可以更改 span 状态,并包含或排除 span。这个处理器支持 trace。
span rename 需要使用 from_attributes
配置为新名称指定属性。
Span Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
OpenTelemetry Collector 使用 Span Processor 重命名 span
# ... config: | processor: span: name: from_attributes: [<key1>, <key2>, ...] 1 separator: <value> 2 # ...
您可以使用处理器从 span 名称中提取属性。
OpenTelemetry Collector 使用 Span Processor 从范围名称中提取属性
# ...
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.2.7. Kubernetes Attributes Processor
Kubernetes Attributes Processor 使用 Kubernetes 元数据启用 span、metrics 和 log 资源属性的自动配置。这个处理器支持 trace、metrics 和 logs。此处理器自动识别 Kubernetes 资源,从它们中提取元数据,并将此提取的元数据作为资源属性合并到相关的 span、metrics 和 logs 中。它使用 Kubernetes API 来发现在集群内运行的所有 pod,维护其 IP 地址、pod UID 和其他相关元数据的记录。
Kubernetes 属性处理器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Kubernetes Attributes Processor 所需的最小 OpenShift Container Platform 权限
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: [''] resources: ['pods', 'namespaces'] verbs: ['get', 'watch', 'list'] # ...
OpenTelemetry Collector 使用 Kubernetes Attributes Processor
# ... config: | processors: k8sattributes: filter: node_from_env_var: KUBE_NODE_NAME # ...
3.2.8. Filter Processor
Filter Processor 利用 OpenTelemetry Transformation Language 来建立丢弃遥测数据的条件。如果满足这些条件,遥测数据将被丢弃。您可以使用逻辑 OR 运算符对多个条件进行组合。这个处理器支持 trace、metrics 和 logs。
Filter Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
启用了 OTLP Exporter 的 OpenTelemetry Collector 自定义资源
# ... config: | processors: filter/ottl: error_mode: ignore 1 traces: span: - 'attributes["container.name"] == "app_container_1"' 2 - 'resource.attributes["host.name"] == "localhost"' 3 # ...
3.2.9. Routing Processor
Routing Processor 将日志、指标或追踪路由到特定的导出器。这个处理器可以从传入的 gRPC 或普通 HTTP 请求读取标头,或者读取资源属性,然后根据读取的值将 trace 信息定向到相关的导出器。
Routing Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
启用了 OTLP Exporter 的 OpenTelemetry Collector 自定义资源
# ... 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.2.10. Cumulative to Delta Processor
这个处理器将 monotonic、cumulative-sum 和 histogram 指标转换为 monotonic delta 指标。
您可以使用 include:
或 exclude:
字段过滤指标,并指定 strict
或 regexp
进行名称匹配。
这个处理器不会转换非单调和以及指数直方图。
Cumulative to Delta Processor 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
带有启用了 Cumulative to Delta Processor 的 OpenTelemetry Collector 自定义资源示例
# ... config: | processors: cumulativetodelta: include: 1 match_type: strict 2 metrics: 3 - <metric_1_name> - <metric_2_name> exclude: 4 match_type: regexp metrics: - "<regular_expression_for_metric_names>" # ...