菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.processor.groupbyattrs
开源

otelcol.processor.groupbyattrs

otelcol.processor.groupbyattrs 接受来自其他 otelcol 组件的跨度、指标和跟踪,并将它们分组在相同的资源下。

注意

otelcol.processor.groupbyattrs 是上游 OpenTelemetry Collector groupbyattrs 处理器的包装器。如果需要,错误报告或功能请求将被重定向到上游仓库。

我们建议您将 groupbyattrs 处理器与 otelcol.processor.batch 一起使用,作为连续步骤。这将通过在匹配的资源/工具库下组合记录来减少数据的碎片化。

您可以通过不同的标签指定多个 otelcol.processor.groupbyattrs 组件。

用法

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

参数

以下参数受支持

名称类型描述默认值必需
列表(字符串)用于将跨度、日志记录或指标数据点组合在一起的键。[]

keys 是一个字符串数组,用于对数据进行分组。如果它为空,处理器将执行压缩并重新关联所有与匹配的资源 InstrumentationLibrary 匹配的跨度。

otelcol.processor.groupbyattrs 的定义中支持以下块

层次结构描述必需
输出输出配置接收到的遥测数据的发送位置。
debug_metricsdebug_metrics配置此组件生成的用于监控其状态的指标。

输出块

output 块配置了一组组件,用于将结果遥测数据转发到。

以下参数受支持

名称类型描述默认值必需
logs列表(otelcol.Consumer)要发送日志的目标消费者列表。[]
metrics列表(otelcol.Consumer)要发送指标的目标消费者列表。[]
traces列表(otelcol.Consumer)要发送跟踪的目标消费者列表。[]

您必须指定 output 块,但所有其参数都是可选的。默认情况下,遥测数据将被丢弃。根据需要配置 metricslogstraces 参数,以将遥测数据发送到其他组件。

debug_metrics 块

debug_metrics 块配置此组件生成的用于监控其状态的指标。

以下参数受支持

名称类型描述默认值必需
disable_high_cardinality_metrics布尔型是否禁用某些高基数指标。
级别字符串控制包装收集器发出的指标的详细程度。"详细"

disable_high_cardinality_metrics 是 Grafana Alloy 对 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics 功能开关的等价。

它移除了可能导致高基数指标的属性。例如,从 HTTP 和 gRPC 连接的指标中移除具有 IP 地址和端口号的属性。

注意

如果配置了 disable_high_cardinality_metrics,则它仅适用于 otelcol.exporter.*otelcol.receiver.* 组件。

level 是 Alloy 对 OpenTelemetry Collector 中 telemetry.metrics.level 功能开关的等价。

可能的值有 "none""basic""normal""detailed"

导出字段

以下字段被导出,并可由其他组件引用

名称类型描述
输入otelcol.Consumer接受用于指标、日志或跟踪的 otelcol.Consumer 数据。

input 接受任何遥测信号(指标、日志或跟踪)的 otelcol.Consumer 数据。

组件健康

otelcol.processor.groupbyattrs 仅在提供无效配置时报告为不健康。

调试信息

otelcol.processor.groupbyattrs 不公开任何特定组件的调试信息。

调试指标

otelcol.processor.groupbyattrs 不公开任何特定组件的调试指标。

示例

分组指标

考虑以下指标,它们最初都关联到相同的资源

Resource {host.name="localhost",source="prom"}
  Metric "gauge-1" (GAUGE)
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-B",id="eth0"}
  Metric "gauge-1" (GAUGE) // Identical to previous Metric
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-B",id="eth0"}
  Metric "mixed-type" (GAUGE)
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-B",id="eth0"}
  Metric "mixed-type" (SUM)
    DataPoint {host.name="host-A",id="eth0"}
    DataPoint {host.name="host-A",id="eth0"}
  Metric "dont-move" (Gauge)
    DataPoint {id="eth0"}

使用以下配置,groupbyattrs 将根据 host.name 属性的值将指标重新关联到 host-Ahost-B

alloy
otelcol.processor.groupbyattrs "default" {
  keys = [ "host.name" ]
  output {
    metrics = [otelcol.exporter.otlp.default.input]
  }
}

处理器的输出因此将是

Resource {host.name="localhost",source="prom"}
  Metric "dont-move" (Gauge)
    DataPoint {id="eth0"}
Resource {host.name="host-A",source="prom"}
  Metric "gauge-1"
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
  Metric "mixed-type" (GAUGE)
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
  Metric "mixed-type" (SUM)
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
Resource {host.name="host-B",source="prom"}
  Metric "gauge-1"
    DataPoint {id="eth0"}
    DataPoint {id="eth0"}
  Metric "mixed-type" (GAUGE)
    DataPoint {id="eth0"}

此输出演示了 otelcol.processor.groupbyattrs 在各种情况下的工作方式

  • gauge-1 (GAUGE) 指标的 DataPoints 最初分为 2 个 Metric 实例,并在输出中合并。
  • mixed-type (GAUGE) 和 mixed-type (SUM) 指标的 DataPoints 没有合并到同一个 Metric 中,因为它们的 DataType 不同。
  • dont-move 指标的 DataPoints 没有具有 host.name 属性,因此保留在原始资源下。
  • 新资源继承了原始资源的属性(《source="prom"》),加上处理指标中指定的属性(《host.name="host-A"》或《host.name="host-B"》)。
  • 在新的资源上设置的指定“分组”属性也从指标数据点中删除。
  • 虽然上述示例中没有显示,处理器还会合并匹配的InstrumentationLibrary下的记录集合。

压缩

由于存在多个重复的ResourceSpans/ResourceLogs/ResourceMetrics对象,遥测数据有时可能会变得碎片化。这会导致额外的内存消耗、增加处理成本、不高效的序列化和出口请求的增加。在这种情况下,可以使用otelcol.processor.groupbyattrs来使用匹配的资源以及InstrumentationLibrary属性压缩数据。

例如,考虑以下输入数据

Resource {host.name="localhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=1, ...}
  InstrumentationLibrary {name="OtherLibrary"}
  Spans
    Span {span_id=2, ...}
    
Resource {host.name="localhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=3, ...}
    
Resource {host.name="localhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=4, ...}
    
Resource {host.name="otherhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=5, ...}

您可以使用默认配置的otelcol.processor.groupbyattrs来压缩数据

alloy
otelcol.processor.groupbyattrs "default" {
  output {
    metrics = [otelcol.exporter.otlp.default.input]
  }
}

输出将是

Resource {host.name="localhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=1, ...}
    Span {span_id=3, ...}
    Span {span_id=4, ...}
  InstrumentationLibrary {name="OtherLibrary"}
  Spans
    Span {span_id=2, ...}

Resource {host.name="otherhost"}
  InstrumentationLibrary {name="MyLibrary"}
  Spans
    Span {span_id=5, ...}

兼容组件

otelcol.processor.groupbyattrs可以接受以下组件的参数

otelcol.processor.groupbyattrs有可以由以下组件使用的导出

注意

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