转换遥测数据

OpenTelemetry Collector是在将数据发送给供应商或其他系统之前对数据进行转换的便利工具。通常出于数据质量、治理、成本和安全等原因进行转换。

来自Collector Contrib存储库的处理器支持对度量、跨度和日志数据进行多种不同的转换。以下章节提供了一些使用常用的处理器进行入门的基本示例。

处理器的配置,特别是高级转换,可能会对收集器的性能产生显著影响。

基本过滤

处理器filter processor

过滤处理器允许用户根据includeexclude规则过滤遥测数据。include规则用于定义“允许列表”,任何不匹配include规则的内容将从收集器中丢弃。exclude规则用于定义“拒绝列表”,匹配规则的遥测数据将从收集器中丢弃。

例如,只允许来自服务app1、app2和app3的跨度数据,并且丢弃所有其他服务的数据:

processors:
  filter/allowlist:
    spans:
      include:
        match_type: strict
        services:
          - app1
          - app2
          - app3

要仅阻止来自名为development的服务的跨度,并允许所有其他跨度,可以使用排除规则:

processors:
  filter/denylist:
    spans:
      exclude:
        match_type: strict
        services:
          - development

过滤处理器文档中有更多示例,包括对日志和度量进行过滤。

添加或删除属性

处理器attributes processorresource processor

属性处理器可以用于更新、插入、删除或替换度量或跟踪上的现有属性。例如,以下是一个将名为account_id的属性添加到所有跨度上的配置示例:

processors:
  attributes/accountid:
    actions:
      - key: account_id
        value: 2245
        action: insert

资源处理器具有相同的配置,但仅适用于资源属性。使用资源处理器修改与遥测数据相关的基础设施元数据。例如,以下示例插入Kubernetes集群名称:

processors:
  resource/k8s:
    attributes:
      - key: k8s.cluster.name
        from_attribute: k8s-cluster
        action: insert

重命名度量或度量标签

处理器metrics transform processor

度量转换处理器属性处理器共享一些功能,但也支持重命名和其他特定于度量的功能。

processors:
  metricstransform/rename:
    transforms:
      include: system.cpu.usage
      action: update
      new_name: system.cpu.usage_time

度量转换处理器还支持正则表达式,以便同时将转换规则应用于多个度量名称或度量标签。此示例将cluster_name重命名为cluster-name:

processors:
  metricstransform/clustername:
    transforms:
      - include: ^.*$
        match_type: regexp
        action: update
        operations:
          - action: update_label
            label: cluster_name
            new_label: cluster-name

使用资源属性丰富遥测数据

处理器resource detection processork8sattributes processor

这些处理器可用于使用相关基础设施元数据丰富遥测数据,以帮助团队快速识别基础设施对服务健康或性能的影响。

资源检测处理器向遥测数据添加相关的云端或主机级别信息:

processors:
  resourcedetection/system:
    # 修改探测器列表以匹配云环境
    detectors: [env, system, gcp, ec2, azure]
    timeout: 2s
    override: false

类似地,K8s处理器使用相关Kubernetes元数据(如Pod名称、节点名称或工作负载名称)丰富遥测数据。收集器Pod必须配置为具有对某些Kubernetes RBAC API的读取访问权限,这在此处有所记录。要使用默认选项,可以配置为空块:

processors:
  k8sattributes/default:

高级转换

转换处理器中还提供了更高级的属性转换功能。转换处理器允许端用户使用OpenTelemetry转换语言指定对度量、日志和跟踪的转换。

最后修改 December 10, 2023: translate (a4350d6e)