搜索

3.2. Processors

download PDF

处理器处理接收和导出的数据。处理器是可选的。默认情况下,不启用处理器。每个数据源都必须启用处理器。不是所有处理器都支持所有数据源。根据数据源,可能会启用多个处理器。请注意,处理器的顺序很重要。

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]
# ...

表 3.1. Batch Processor 使用的参数
参数描述default

timeout

将批处理发送到特定的持续时间,无论批处理大小如何。

200ms

send_batch_size

在指定数量的 span 或 metrics 后发送遥测数据的批处理。

8192

send_batch_max_size

批处理的最大允许大小。必须等于或大于 send_batch_size

0

metadata_keys

激活后,会为在 client.Metadata 中找到的每个唯一值集创建一个批处理器实例。

[]

metadata_cardinality_limit

在填充 metadata_keys 时,此配置限制了在进程期间处理的不同元数据键值组合的数量。

1000

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]
# ...

表 3.2. Memory Limiter Processor 使用的参数
参数描述default

check_interval

内存用量测量之间的时间。最佳值为 1s。对于 spiky 流量模式,您可以减少 check_interval 或增加 spike_limit_mib

0s

limit_mib

硬限制,即堆上分配的最大内存量(以 MiB 为单位)。通常,OpenTelemetry Collector 的内存用量大约比这个值高 50 MiB。

0

spike_limit_mib

spike 限制,这是 MiB 中内存使用率最大激增。最佳值为 limit_mib 的 20%。要计算软限制,请从 limit_mib 中减去 spike_limit_mib

limit_mib 的 20%

limit_percentage

limit_mib 相同,但以总可用内存的百分比表示。limit_mib 设置优先于此设置。

0

spike_limit_percentage

spike_limit_mib 相同,但以总可用内存的百分比表示。旨在与 limit_percentage 设置一起使用。

0

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
# ...

1
定义组成新 span 名称的密钥。
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
# ...

1
定义错误模式。当设置为 ignore 时,请忽略条件返回的错误。当设置为 propagate 时,会返回管道错误。错误会导致有效负载从 Collector 丢弃。
2
过滤具有 container.name == app_container_1 属性的 span。
3
过滤具有 host.name == localhost 资源属性的 span。

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
# ...

1
执行路由时查找值的 HTTP 标头名称。
2
下一节的表中不存在属性值时,默认导出器。
3
定义将哪些值路由到哪个导出器的表。

您可以选择创建一个 attribute_source 配置,用于定义在 from_attribute 中查找属性的位置。允许的值是 context(搜索上下文),其中包括 HTTP 标头,或 resource(搜索资源属性)。

3.2.10. Cumulative to Delta Processor

这个处理器将 monotonic、cumulative-sum 和 histogram 指标转换为 monotonic delta 指标。

您可以使用 include:exclude: 字段过滤指标,并指定 strictregexp 进行名称匹配。

这个处理器不会转换非单调和以及指数直方图。

重要

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>"
# ...

1
可选:配置要包含哪些指标。如果没有指定,除 exclude 字段中列出的指标外,所有指标都会转换为 delta 指标。
2
metrics 字段中提供的值定义为 strict(严格匹配)或 regexp(正则表达式匹配)。
3
列出要转换为 delta 指标的指标名称(与正则表达式匹配或完全匹配)。如果指标与 includeexclude 过滤都匹配,则 exclude 过滤具有更高的优先权。
4
可选:配置要排除的指标。如果没有指定,不会从转换到 delta 指标中排除任何指标。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.