菜单
文档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导出器无关。

指标的转换根据OpenTelemetry的指标数据模型规范进行。

可以通过指定不同的标签来指定多个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_labelstrue时,将otel_scope_nameotel_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_metricsdebug_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转发。

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.transformkey1key2 OTLP资源属性中添加额外的key1key2 OTLP度量数据点属性。

otelcol.exporter.prometheus然后将key1key2转换为Prometheus标签,以及其他任何OTLP度量数据点属性。

这避免了将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的导出可以被以下组件消费

注意

连接某些组件可能没有意义,或组件可能需要进一步的配置才能使连接正确工作。请参阅链接的文档以获取更多详细信息。