otelcol.exporter.prometheus
otelcol.exporter.prometheus
接受来自其他 otelcol
组件的 OTLP 格式指标,将指标转换为 Prometheus 格式指标,并将转换后的指标转发给 prometheus
组件。
注意
otelcol.exporter.prometheus
是一个自定义组件,与 OpenTelemetry Collector 的prometheus
exporter 无关。指标转换按照 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
导出的内容可供以下组件使用
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正常工作。请参阅链接的文档了解更多详情。