转换遥测数据
OpenTelemetry Collector是在将数据发送给供应商或其他系统之前对数据进行转换的便利工具。通常出于数据质量、治理、成本和安全等原因进行转换。
来自Collector Contrib存储库的处理器支持对度量、跨度和日志数据进行多种不同的转换。以下章节提供了一些使用常用的处理器进行入门的基本示例。
处理器的配置,特别是高级转换,可能会对收集器的性能产生显著影响。
基本过滤
处理器:filter processor
过滤处理器允许用户根据include
或exclude
规则过滤遥测数据。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 processor 或 resource 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 processor 和 k8sattributes 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转换语言指定对度量、日志和跟踪的转换。