菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.exporter.prometheus
开源

otelcol.exporter.prometheus

otelcol.exporter.prometheus 接受来自其他 otelcol 组件的 OTLP 格式指标,将指标转换为 Prometheus 格式指标,并将转换后的指标转发给 prometheus 组件。

注意

otelcol.exporter.prometheus 是一个自定义组件,与 OpenTelemetry Collector 的 prometheus exporter 无关。

指标转换按照 OpenTelemetry Metrics Data Model 规范进行。

可以通过为 otelcol.exporter.prometheus 组件指定不同的标签来指定多个组件。

用法

alloy
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_tolist(MetricsReceiver)将转换后的 Prometheus 指标转发到哪里。
resource_to_telemetry_conversion布尔值是否将 OTel 资源属性转换为 Prometheus 标签。false

默认情况下,OpenTelemetry 资源会被转换为 target_info 指标。OpenTelemetry 插桩范围会被转换为 otel_scope_info 指标。分别将 include_scope_infoinclude_target_info 参数设置为 false 可禁用这些自定义指标。

include_scope_labels 设置为 true 时,otel_scope_nameotel_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_metricsdebug_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 进行转发

alloy
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 资源属性 key1key2 添加为额外的 OTLP 指标数据点属性 key1key2

然后,otelcol.exporter.prometheuskey1key2 以及任何其他 OTLP 指标数据点属性转换为 Prometheus 标签。

这避免了将 resource_to_telemetry_conversion 设置为 true 的需要,这可能创建过多不必要的指标标签。

alloy
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 导出的内容可供以下组件使用

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正常工作。请参阅链接的文档了解更多详情。