otelcol exporter prometheus
otelcol.exporter.prometheus
接受来自其他otelcol
组件的OTLP格式指标,将指标转换为Prometheus格式指标,并将生成的指标转发到prometheus
组件。
注意
otelcol.exporter.prometheus
是一个自定义组件,与OpenTelemetry Collector中的prometheus
导出器无关。指标的转换根据OpenTelemetry的指标数据模型规范进行。
可以通过指定不同的标签来指定多个otelcol.exporter.prometheus
组件。
用法
otelcol.exporter.prometheus "LABEL" {
forward_to = [...]
}
参数
otelcol.exporter.prometheus
支持以下参数
名称 | 类型 | 描述 | 默认值 | 是否必需 |
---|---|---|---|---|
include_target_info | 布尔值 | 是否包含target_info 指标。 | true | 否 |
include_scope_info | 布尔值 | 是否包含otel_scope_info 指标。 | false | 否 |
include_scope_labels | 布尔值 | 是否在所有指标中包含额外的OTLP标签。 | true | 否 |
add_metric_suffixes | 布尔值 | 是否将类型和单位后缀添加到指标名称中。 | true | 否 |
gc_frequency | 持续时间 | 多久清理一次内存中的旧指标。 | "5m" | 否 |
forward_to | list(MetricsReceiver) | 将转换后的Prometheus指标转发到何处。 | 是 | |
resource_to_telemetry_conversion | 布尔值 | 是否将OTel资源属性转换为Prometheus标签。 | false | 否 |
默认情况下,OpenTelemetry资源转换为target_info
指标。OpenTelemetry仪器作用域转换为otel_scope_info
指标。分别将include_scope_info
和include_target_info
参数设置为false
,以禁用自定义指标。
当include_scope_labels
为true
时,将otel_scope_name
和otel_scope_version
标签添加到每个转换后的指标样本中。
当include_target_info
为true时,OpenTelemetry Collector资源转换为target_info
指标。
注意
OTLP度量可以拥有许多资源属性。将resource_to_telemetry_conversion
设置为true
会将它们全部转换为Prometheus标签,但这可能不是你想要的。不需要使用resource_to_telemetry_conversion
,大多数用户需要使用otelcol.processor.transform
在调用otelcol.exporter.prometheus
之前将OTLP资源属性转换为OTLP度量数据点属性。有关示例,请参阅从OTLP资源属性创建Prometheus标签。
块
以下块在otelcol.exporter.prometheus
的定义中被支持
层次结构 | 块 | 描述 | 是否必需 |
---|---|---|---|
debug_metrics | debug_metrics | 配置本组件生成的度量以监控其状态。 | 否 |
debug_metrics 块
debug_metrics
块配置本组件生成的度量以监控其状态。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 是否必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔值 | 是否禁用某些高基数度量。 | true | 否 |
level | 字符串 | 控制包装收集器发出的度量的详细程度。 | "详细" | 否 |
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 | 其他组件可以使用该值发送遥测数据。 |
input
接受用于度量的otelcol.Consumer
数据。其他遥测信号被忽略。
发送到input
的度量被转换为与Prometheus兼容的度量,并转发到forward_to
参数。
以下是在转换过程中被丢弃的
- 使用delta聚合时间性的度量。
注意
Prometheus原生不支持delta度量。如果你的Alloy实例消费delta OTLP度量,你可以在使用otelcol.exporter.prometheus
之前使用otelcol.processor.deltatocumulative
将它们转换为cumulative OTLP度量。
组件健康
otelcol.exporter.prometheus
仅在有无效配置的情况下报告为不健康。
调试信息
otelcol.exporter.prometheus
不公开任何特定于组件的调试信息。
示例
基本用法
此示例接受通过OTLP发送的度量,并使用prometheus.remote_write
转发。
otelcol.receiver.otlp "default" {
grpc {}
output {
metrics = [otelcol.exporter.prometheus.default.input]
}
}
otelcol.exporter.prometheus "default" {
forward_to = [prometheus.remote_write.mimir.receiver]
}
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:9009/api/v1/push"
}
}
从OTLP资源属性创建Prometheus标签
此示例使用otelcol.processor.transform
从key1
和key2
OTLP资源属性中添加额外的key1
和key2
OTLP度量数据点属性。
otelcol.exporter.prometheus
然后将key1
和key2
转换为Prometheus标签,以及其他任何OTLP度量数据点属性。
这避免了将resource_to_telemetry_conversion
设置为true
的需要,这可能会创建过多的不必要的度量标签。
otelcol.receiver.otlp "default" {
grpc {}
output {
metrics = [otelcol.processor.transform.default.input]
}
}
otelcol.processor.transform "default" {
error_mode = "ignore"
metric_statements {
context = "datapoint"
statements = [
`set(attributes["key1"], resource.attributes["key1"])`,
`set(attributes["key2"], resource.attributes["key2"])`,
]
}
output {
metrics = [otelcol.exporter.prometheus.default.input]
}
}
otelcol.exporter.prometheus "default" {
forward_to = [prometheus.remote_write.mimir.receiver]
}
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:9009/api/v1/push"
}
}
兼容组件
otelcol.exporter.prometheus
可以接受以下组件的参数
otelcol.exporter.prometheus
的导出可以被以下组件消费
注意
连接某些组件可能没有意义,或组件可能需要进一步的配置才能使连接正确工作。请参阅链接的文档以获取更多详细信息。