菜单
文档目录项箭头 Grafana Alloy目录项箭头 参考目录项箭头 组件目录项箭头 otelcol目录项箭头 otelcol.processor.filter
开源

otelcol.processor.filter

otelcol.processor.filter 接受并使用 OpenTelemetry 转换语言 (OTTL) 过滤来自其他 otelcol 组件的遥测数据。如果 OTTL 中的任何语句评估为真,则将丢弃遥测数据。

OTTL 语句由 OTTL 转换器函数 组成,这些函数在路径上执行操作。路径是对遥测数据的引用,例如:

  • 资源属性。
  • 仪表范围名称。
  • 跨度属性。

除了 标准 OTTL 转换器函数 之外,以下仅由处理器使用的指标函数:

OTTLotelcol.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 时请谨慎

  • 确保您理解传入数据架构/格式,并彻底测试配置。一般来说,使用尽可能具体的配置以确保仅保留要保存的数据。
  • 孤儿遥测:处理器允许丢弃跨度。如果丢弃的跨度是一个父跨度,则可能导致孤儿跨度。如果日志引用了丢弃的跨度,则丢弃跨度可能导致孤儿日志。

使用

alloy
otelcol.processor.filter "LABEL" {
  output {
    metrics = [...]
    logs    = [...]
    traces  = [...]
  }
}

参数

otelcol.processor.filter 支持以下参数

名称类型描述默认必需
error_mode字符串当处理语句时出错应如何处理。“传播”

error_mode支持以下值

  • ignore:忽略条件返回的错误,记录它们,并继续到下一个条件。这是推荐的模式。
  • silent:忽略条件返回的错误,不记录它们,并继续到下一个条件。
  • propagate:将错误返回到管道。这将导致有效载荷从Alloy中删除。

以下块支持在otelcol.processor.filter定义内使用

层次结构描述必需
跟踪跟踪筛选跟踪的语句。
度量度量筛选度量的语句。
日志日志筛选日志的语句。
输出输出配置接收到的遥测数据发送到何处。
debug_metricsdebug_metrics配置该组件生成的以监控其状态的度量。

跟踪块

跟踪》块指定了过滤跟踪遥测信号的语句。只能指定一个《跟踪》块。

名称类型描述默认必需
跨度列表(字符串)筛选OTLP跨度的OTTL语句列表。
跨度事件列表(字符串)筛选OTLP跨度事件的OTTL语句列表。

OTTL语句的语法取决于OTTL上下文。有关更多信息,请参阅OpenTelemetry文档

语句按“高层”到“低层”遥测的顺序检查,顺序如下

  1. 跨度
  2. 跨度事件

如果至少一个《跨度》条件得到满足,将不会检查《跨度事件》条件。列表中的语句只需满足一个即可。

如果删除了一个跨度的所有跨度事件,该跨度将保持完整。

度量块

度量》块指定了过滤度量遥测信号的语句。只能指定一个《度量》块。

名称类型描述默认必需
度量列表(字符串)筛选OTLP度量的OTTL语句列表。
数据点列表(字符串)筛选OTLP度量数据点的OTTL语句列表。

OTTL语句的语法取决于OTTL上下文。有关更多信息,请参阅OpenTelemetry文档

语句按“高层”到“低层”遥测的顺序检查,顺序如下

  1. 度量
  2. 数据点

如果至少一个《度量》条件得到满足,将不会检查《数据点》条件。列表中的语句只需满足一个即可。

如果删除了一个度量的所有数据点,该度量也将被删除。

日志块

日志》块指定了过滤日志遥测信号的语句。只能指定《日志》块。

名称类型描述默认必需
日志记录列表(字符串)筛选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 不存在。

alloy
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,且存在具有值为 abc123my_label 资源属性。
  • 该指标是一直是直方图。
alloy
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 跟踪和敏感日志

alloy
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 有导出可由以下组件消费

连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接文档。