otelcol.exporter.prometheus
otelcol.exporter.prometheus 接受来自其他 otelcol 组件的 OTLP 格式指标,将指标转换为 Prometheus 格式指标,并将转换后的指标转发给 prometheus 组件。
注意
otelcol.exporter.prometheus是一个自定义组件,与 OpenTelemetry Collector 的prometheusexporter 无关。指标转换按照 OpenTelemetry Metrics Data Model 规范进行。
可以通过为 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 标签,这可能不是您想要的。大多数用户应使用otelcol.processor.transform将 OTLP 资源属性转换为 OTLP 指标数据点属性,而不是直接使用resource_to_telemetry_conversion,然后再使用otelcol.exporter.prometheus。请参阅从 OTLP 资源属性创建 Prometheus 标签 部分的示例。
代码块
otelcol.exporter.prometheus 定义中支持以下代码块
| 层级 | 代码块 | 描述 | 必需 |
|---|---|---|---|
| debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
debug_metrics 代码块
debug_metrics 代码块配置此组件生成的用于监控其状态的指标。
支持以下参数
| 名称 | 类型 | 描述 | 默认值 | 必需 |
|---|---|---|---|---|
disable_high_cardinality_metrics | 布尔值 | 是否禁用某些高基数指标。 | true | 否 |
disable_high_cardinality_metrics 是 Grafana Alloy 中相当于 OpenTelemetry Collector 的 telemetry.disableHighCardinalityMetrics 功能门。它移除了可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中的 IP 地址和端口号属性会被移除。
注意
如果配置了,
disable_high_cardinality_metrics仅适用于otelcol.exporter.*和otelcol.receiver.*组件。
导出字段
导出以下字段,可供其他组件引用
| 名称 | 类型 | 描述 |
|---|---|---|
输入 | otelcol.Consumer | 其他组件可用于发送遥测数据的值。 |
input 接受指标的 otelcol.Consumer 数据。其他遥测信号将被忽略。
发送到 input 的指标会被转换为 Prometheus 兼容的指标,并转发到 forward_to 参数指定的位置。
在转换过程中会丢弃以下内容
- 使用 delta 聚合时间性的指标。
注意
Prometheus 本身不支持 delta 指标。如果您的 Alloy 实例摄入 delta OTLP 指标,在使用
otelcol.exporter.prometheus之前,可以使用otelcol.processor.deltatocumulative将其转换为累积 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 将 OTLP 资源属性 key1 和 key2 添加为额外的 OTLP 指标数据点属性 key1 和 key2。
然后,otelcol.exporter.prometheus 将 key1 和 key2 以及任何其他 OTLP 指标数据点属性转换为 Prometheus 标签。
这避免了将 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 可以接受来自以下组件的参数
- 导出 Prometheus
MetricsReceiver的组件
otelcol.exporter.prometheus 导出的内容可供以下组件使用
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正常工作。请参阅链接的文档了解更多详情。



