otelcol.processor.groupbyattrs
otelcol.processor.groupbyattrs
接受来自其他 otelcol
组件的跨度、指标和跟踪,并将它们分组在相同的资源下。
注意
otelcol.processor.groupbyattrs
是上游 OpenTelemetry Collectorgroupbyattrs
处理器的包装器。如果需要,错误报告或功能请求将被重定向到上游仓库。
我们建议您将 groupbyattrs 处理器与 otelcol.processor.batch 一起使用,作为连续步骤。这将通过在匹配的资源/工具库下组合记录来减少数据的碎片化。
您可以通过不同的标签指定多个 otelcol.processor.groupbyattrs
组件。
用法
otelcol.processor.groupbyattrs "LABEL" {
output {
metrics = [...]
logs = [...]
traces = [...]
}
}
参数
以下参数受支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
键 | 列表(字符串) | 用于将跨度、日志记录或指标数据点组合在一起的键。 | [] | 无 |
keys
是一个字符串数组,用于对数据进行分组。如果它为空,处理器将执行压缩并重新关联所有与匹配的资源 InstrumentationLibrary 匹配的跨度。
块
在 otelcol.processor.groupbyattrs
的定义中支持以下块
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
输出 | 输出 | 配置接收到的遥测数据的发送位置。 | 是 |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 无 |
输出块
output
块配置了一组组件,用于将结果遥测数据转发到。
以下参数受支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
logs | 列表(otelcol.Consumer) | 要发送日志的目标消费者列表。 | [] | 无 |
metrics | 列表(otelcol.Consumer) | 要发送指标的目标消费者列表。 | [] | 无 |
traces | 列表(otelcol.Consumer) | 要发送跟踪的目标消费者列表。 | [] | 无 |
您必须指定 output
块,但所有其参数都是可选的。默认情况下,遥测数据将被丢弃。根据需要配置 metrics
、logs
和 traces
参数,以将遥测数据发送到其他组件。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
以下参数受支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔型 | 是否禁用某些高基数指标。 | 是 | 无 |
级别 | 字符串 | 控制包装收集器发出的指标的详细程度。 | "详细" | 无 |
disable_high_cardinality_metrics
是 Grafana Alloy 对 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics
功能开关的等价。
注意
如果配置了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-A
或 host-B
。
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
来压缩数据
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
有可以由以下组件使用的导出
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅相关文档。