指标管线处理器
指标管线处理器在摄取期间会转换 OTel 指标数据点。一个指标管线最多可以有 20 个处理器,按定义的顺序依次应用。
处理器使用 OTTL 路径表达式来定位不同范围的属性:
| 路径 | 范围 | 示例 |
|---|---|---|
|
资源级别 |
|
|
范围属性 |
|
|
数据点级别 |
|
|
数据点的简称 |
|
add_attributes 处理器
添加或覆盖指标数据点的属性。适用于所有时间性类型。
OTTL 等效项:set(attributes["key"], "value")
配置
使用以下参数配置 add_attributes 处理器:
processor: - add_attributes: attributes: - key: resource.attributes["team"] value: "payments" - key: attributes["environment"] value: "production" - key: instrumentation_scope.attributes["version"] value: "1.0" overwrite_if_key_exists: true
参数
attributes(必需)-
要添加的属性对象数组。
attributes[].key(必需)-
OTTL 属性路径,指定要添加属性的位置。
attributes[].value(必需)-
要分配的字符串值。
attributes[].overwrite_if_key_exists(可选)-
布尔值。如果为
true,则覆盖现有值。默认值为false。设置为true时,此操作将被视为破坏性操作,并且不适用于累积指标或已出售指标。
delete_attributes 处理器
从指标数据点中移除特定属性。不适用于累积指标或已出售指标。
OTTL 等效项:delete_key(attributes, "key")
配置
使用以下参数配置 delete_attributes 处理器:
processor: - delete_attributes: with_keys: - resource.attributes["obsolete"] - attributes["temp"] - datapoint.attributes["debug"]
参数
with_keys(必需)-
要移除的 OTTL 属性路径数组。
rename_attributes 处理器
重命名指标数据点的属性键。不适用于累积指标或已出售指标。
OTTL 等效项:set() + delete_key()
配置
使用以下参数配置 rename_attributes 处理器:
processor: - rename_attributes: attributes: - from_key: resource.attributes["old_key"] to_key: resource.attributes["new_key"] overwrite_if_to_key_exists: true
参数
attributes(必需)-
重命名操作数组。
attributes[].from_key(必需)-
来源 OTTL 属性路径。
attributes[].to_key(必需)-
目标 OTTL 属性路径。
attributes[].overwrite_if_to_key_exists(可选)-
布尔值。如果为
true,则当目标键存在时覆盖它。默认值为false。
rename_metrics 处理器
重命名指标名称。不适用于累积指标或已出售指标。
OTTL 等效项:set(name, "new.metric.name") where name == "old.metric.name"
配置
使用以下参数配置 rename_metrics 处理器:
processor: - rename_metrics: metrics: - from: "old.metric.name" to: "new.metric.name"
参数
metrics(必需)-
重命名操作数组。
metrics[].from(必需)-
当前指标名称。
metrics[].to(必需)-
新指标名称。
substitute_attribute_values 处理器
通过查找表映射属性值。不适用于累积指标或已出售指标。
OTTL 等效项:replace_match()
配置
使用以下参数配置 substitute_attribute_values 处理器:
processor: - substitute_attribute_values: attributes: - key: resource.attributes["region"] from: "us-east-1a" to: "us-east-1"
参数
attributes(必需)-
替换操作数组。
attributes[].key(必需)-
要匹配的 OTTL 属性路径。
attributes[].from(必需)-
要匹配的值。
attributes[].to(必需)-
替换值。
完整示例
下面的示例在单个管线中使用所有五个处理器:
pipeline: source: cloudwatch_metrics: format: otlp selection_criteria: - match_all: - 'resource.attributes["service.name"] == "my-service"' - 'metric.name == "CPUUtilization"' processor: - add_attributes: attributes: - key: resource.attributes["env"] value: "prod" overwrite_if_key_exists: true - delete_attributes: with_keys: - resource.attributes["internal.trace"] - rename_attributes: attributes: - from_key: resource.attributes["old_key"] to_key: resource.attributes["new_key"] - rename_metrics: metrics: - from: "CPUUtilization" to: "system.cpu.utilization" - substitute_attribute_values: attributes: - key: resource.attributes["environment"] from: "dev" to: "development" sink: - cloudwatch_metrics: {}
处理器兼容性和限制
- 最大处理器数量
-
一个指标管线最多可以有 20 个处理器。
- 破坏性处理器和时间性
-
破坏性处理器(
delete_attributes、rename_attributes、rename_metrics、substitute_attribute_values和add_attributes,其中overwrite_if_key_exists: true)不适用于累积指标或已出售指标。这些指标会原封不动地传递。 - 已出售指标保护
-
破坏性处理器无法修改
instrumentation_scope.name开头为cloudwatch.aws/的指标。这些指标会原封不动地传递。