otelcol.processor.filter
otelcol.processor.filter
接受并使用 OpenTelemetry 转换语言 (OTTL) 过滤来自其他 otelcol
组件的遥测数据。如果 OTTL 中的任何语句评估为真,则将丢弃遥测数据。
OTTL 语句由 OTTL 转换器函数 组成,这些函数在路径上执行操作。路径是对遥测数据的引用,例如:
- 资源属性。
- 仪表范围名称。
- 跨度属性。
除了 标准 OTTL 转换器函数 之外,以下仅由处理器使用的指标函数:
OTTL 在 otelcol.processor.filter
中使用的语句通常包含如下构造:
- 布尔值:
not true
not IsMatch(name, "http_.*")
- 数学表达式:
1 + 1
end_time_unix_nano - start_time_unix_nano
sum([1, 2, 3, 4]) + (10 / 1) - 1
注
原始 Alloy 语法字符串可以用来编写 OTTL 语句。例如,OTTL 语句attributes["grpc"] == true
用 Alloy 语法写为 `attributes[“grpc”] == true`
注
otelcol.processor.filter
是上游 OpenTelemetry Collector 的filter
处理器的包装。如果需要,错误报告或功能请求将被重定向到上游存储库。
您可以通过为它们提供不同的标签来指定多个 otelcol.processor.filter
组件。
警告
使用
otelcol.processor.filter
时请谨慎
- 确保您理解传入数据架构/格式,并彻底测试配置。一般来说,使用尽可能具体的配置以确保仅保留要保存的数据。
- 孤儿遥测:处理器允许丢弃跨度。如果丢弃的跨度是一个父跨度,则可能导致孤儿跨度。如果日志引用了丢弃的跨度,则丢弃跨度可能导致孤儿日志。
使用
otelcol.processor.filter "LABEL" {
output {
metrics = [...]
logs = [...]
traces = [...]
}
}
参数
otelcol.processor.filter
支持以下参数
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
error_mode | 字符串 | 当处理语句时出错应如何处理。 | “传播” | 否 |
error_mode
支持以下值
ignore
:忽略条件返回的错误,记录它们,并继续到下一个条件。这是推荐的模式。silent
:忽略条件返回的错误,不记录它们,并继续到下一个条件。propagate
:将错误返回到管道。这将导致有效载荷从Alloy中删除。
块
以下块支持在otelcol.processor.filter
定义内使用
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
跟踪 | 跟踪 | 筛选跟踪的语句。 | 否 |
度量 | 度量 | 筛选度量的语句。 | 否 |
日志 | 日志 | 筛选日志的语句。 | 否 |
输出 | 输出 | 配置接收到的遥测数据发送到何处。 | 是 |
debug_metrics | debug_metrics | 配置该组件生成的以监控其状态的度量。 | 否 |
跟踪块
《跟踪
》块指定了过滤跟踪遥测信号的语句。只能指定一个《跟踪
》块。
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
跨度 | 列表(字符串) | 筛选OTLP跨度的OTTL语句列表。 | 否 | |
跨度事件 | 列表(字符串) | 筛选OTLP跨度事件的OTTL语句列表。 | 否 |
OTTL语句的语法取决于OTTL上下文。有关更多信息,请参阅OpenTelemetry文档
语句按“高层”到“低层”遥测的顺序检查,顺序如下
跨度
跨度事件
如果至少一个《跨度
》条件得到满足,将不会检查《跨度事件
》条件。列表中的语句只需满足一个即可。
如果删除了一个跨度的所有跨度事件,该跨度将保持完整。
度量块
《度量
》块指定了过滤度量遥测信号的语句。只能指定一个《度量
》块。
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
度量 | 列表(字符串) | 筛选OTLP度量的OTTL语句列表。 | 否 | |
数据点 | 列表(字符串) | 筛选OTLP度量数据点的OTTL语句列表。 | 否 |
OTTL语句的语法取决于OTTL上下文。有关更多信息,请参阅OpenTelemetry文档
语句按“高层”到“低层”遥测的顺序检查,顺序如下
度量
数据点
如果至少一个《度量
》条件得到满足,将不会检查《数据点
》条件。列表中的语句只需满足一个即可。
如果删除了一个度量的所有数据点,该度量也将被删除。
日志块
《日志
》块指定了过滤日志遥测信号的语句。只能指定《日志
》块。
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
日志记录 | 列表(字符串) | 筛选OTLP度量的OTTL语句列表。 | 否 |
OTTL语句的语法取决于OTTL上下文。有关更多信息,请参阅OpenTelemetry文档
列表中的语句只需满足一个即可。
输出块
《输出
》块配置一组组件,以将结果遥测数据转发到。
支持以下参数:
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
日志 | 列表(otelcol.Consumer) | 发送日志的消费者列表。 | [] | 否 |
度量 | 列表(otelcol.Consumer) | 发送度量的消费者列表。 | [] | 否 |
跟踪 | 列表(otelcol.Consumer) | 发送跟踪的消费者列表。 | [] | 否 |
您必须指定《输出
》块,但所有参数都是可选的。默认情况下,遥测数据将被删除。相应地配置《metrics
》、《logs
》和《traces
》参数,以便将遥测数据发送到其他组件。
debug_metrics块
《debug_metrics
》块配置该组件生成的指标,以监控其状态。
支持以下参数:
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔值 | 是否禁用某些高基数指标。 | 真 | 否 |
level | 字符串 | 控制包装收集器发出的度量的详细程度。 | “详细” | 否 |
《disable_high_cardinality_metrics
》是Grafana Alloy中OpenTelemetry Collector的《telemetry.disableHighCardinalityMetrics
》功能开关的等效选项。它的作用是删除可能导致高基数指标的属性。例如,从关于HTTP和gRPC连接的度量中删除包含IP地址和端口的属性。
注
如果配置,则《disable_high_cardinality_metrics
》仅适用于《otelcol.exporter.*
》和《otelcol.receiver.*
》组件。
level
是与 OpenTelemetry Collector 中的 telemetry.metrics.level
功能门相当的中合金等效选项。可能的值为 "none"
、"basic"
、"normal"
和 "detailed"
。
导出的字段
以下字段被导出,并可由其他组件引用
名称 | 类型 | 描述 |
---|---|---|
输入 | otelcol.Consumer | 其他组件可用以发送遥测数据的值。 |
input
接受任何遥测信号(指标、日志或跟踪)的 otelcol.Consumer
数据。
组件健康状况
otelcol.processor.filter
只有在给定无效配置时才会报告为不健康。
调试信息
otelcol.processor.filter
不暴露任何特定于组件的调试信息。
调试指标
otelcol.processor.filter
不暴露任何特定于组件的调试指标。
示例
删除包含特定跟踪属性的跟踪
此示例将属性 test
设为 pass
,如果属性 test
不存在。
otelcol.processor.filter "default" {
error_mode = "ignore"
traces {
span = [
"attributes[\"container.name\"] == \"app_container_1\"",
]
}
output {
metrics = [otelcol.exporter.otlp.default.input]
logs = [otelcol.exporter.otlp.default.input]
traces = [otelcol.exporter.otlp.default.input]
}
}
在每个 "
内部,Alloy 语法字符串中均用 \"
进行转义。
基于两个标准之一删除指标
此示例删除满足至少一个 OTTL 声明的指标
- 指标名称为
my.metric
,且存在具有值为abc123
的my_label
资源属性。 - 该指标是一直是直方图。
otelcol.processor.filter "default" {
error_mode = "ignore"
metrics {
metric = [
"name == \"my.metric\" and resource.attributes[\"my_label\"] == \"abc123\"",
"type == METRIC_DATA_TYPE_HISTOGRAM",
]
}
output {
metrics = [otelcol.exporter.otlp.default.input]
logs = [otelcol.exporter.otlp.default.input]
traces = [otelcol.exporter.otlp.default.input]
}
}
Alloy 语法字符串中的一些值进行了转义
\\
是通过\\
进行转义\"
是通过"\"
进行转义
删除非 HTTP 跟踪和敏感日志
otelcol.processor.filter "default" {
error_mode = "ignore"
traces {
span = [
"attributes[\"http.request.method\"] == nil",
]
}
logs {
log_record = [
"IsMatch(body, \".*password.*\")",
"severity_number < SEVERITY_NUMBER_WARN",
]
}
output {
metrics = [otelcol.exporter.otlp.default.input]
logs = [otelcol.exporter.otlp.default.input]
traces = [otelcol.exporter.otlp.default.input]
}
}
在每个 "
内部,Alloy 语法字符串中均用 \"
进行转义。
Alloy 语法字符串中的某些值进行了转义
\\
是通过\\
进行转义\"
是通过"\"
进行转义
兼容组件
otelcol.processor.filter
可以接受以下组件的参数
otelcol.processor.filter
有导出可由以下组件消费
注
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。