otelcol.exporter.prometheus
otelcol.exporter.prometheus
从其他 otelcol
组件接受 OTLP 格式的指标,将指标转换为 Prometheus 格式,并将结果指标转发到 prometheus
组件。
注意
otelcol.exporter.prometheus
是一个与 OpenTelemetry Collector 的prometheus
导出器无关的自定义组件。指标转换遵循 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 | 列表(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.exporter.prometheus
之前使用otelcol.processor.transform
将 OTLP 资源属性转换为 OTLP 指标数据点属性。有关示例,请参阅 从 OTLP 资源属性创建 Prometheus 标签。
块
以下块可以在 otelcol.exporter.prometheus
的定义内部使用
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
debug_metrics | debug_metrics | 配置组件生成的指标以监控其状态。 | 否 |
debug_metrics 块
该 debug_metrics
块配置组件生成的指标以监控其状态。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | 布尔型 | 是否禁用某些高基数指标。 | true | 否 |
level | 字符串 | 控制包装收集器发出的指标的详细程度。 | "detailed" | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 在 OpenTelemetry Collector 中的 telemetry.disableHighCardinalityMetrics
功能开关的等价物。它删除可能导致高基数指标的属性。例如,从 HTTP 和 gRPC 连接的指标中删除具有 IP 地址和端口号的属性。
注意
如果已配置,则disable_high_cardinality_metrics
仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
level
是 OpenTelemetry Collector 中的 telemetry.metrics.level
功能开关的 Alloy 等价物。可能的值是 "none"
,"basic"
,"normal"
和 "detailed"
。
导出字段
以下字段被导出并可由其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | 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
从 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
可以接受以下组件的参数
- 导出 Prometheus
MetricsReceiver
的组件
otelcol.exporter.prometheus
的导出可以被以下组件消耗
注意
连接某些组件可能不合理,或者组件可能需要进一步的配置才能正确连接。有关更多详细信息,请参阅链接的文档。