Skip to main content

将 Metrics 集成到 Prometheus

Prometheus 是一款广受欢迎的监控、报警和时序数据存储服务,能够方便地实现 Metrics 的采集、存储和监控查询。本文介绍如何将 AutoMQ 与 Prometheus 集成,以实现 Metrics 数据的一站式采集查询。

Metrics 集成到 Prometheus 的特性仅在 AutoMQ 商业版提供,如果需要评估或了解商业版,请填写表单,我们的产品专家会尽快联系您。

更多关于社区版和商业版的差别,请查看授权许可证▸

Metrics 集成

AutoMQ 使用 OpenTelemetry SDK 实现 Metrics 采集和导出,支持透出 Apache Kafka 业务指标和底层存储实现相关指标,这两类指标统一使用 OTLP 格式进行转换和透出。

针对上图,首先选择合适的 Metrics 导出方案,将 Metrics 数据导出到 Prometheus 中。导出 Metrics 数据有如下三种方式:

  • 使用 OpenTelemetry Collector

  • 使用 Prometheus OTLP Receiver

  • 直接从服务端拉取 Metrics

方案一:使用 OpenTelemetry Collector

  1. 启动 OpenTelemetry Collector 并配置 Prometheus Exporter 来收集和导出指标数据。

exporters:
prometheus:
endpoint: $endpoint_for_promehteus

  1. 启动 Prometheus 服务时,请确保添加以下配置。

scrape_configs:
- job_name: $job_name
scrape_interval: 5s
honor_labels: true # DO NOT CHANGE THIS
static_configs:
- targets: ["$endpoint_for_prometheus"]

  1. 配置 AutoMQ 将指标数据推送至 Collector。

s3.telemetry.metrics.exporter.type=otlp
s3.telemetry.exporter.otlp.protocol=grpc
s3.telemetry.exporter.otlp.endpoint=http://${endpoint}:4317

# or with http protocol
# s3.telemetry.exporter.otlp.protocol=http
# s3.telemetry.exporter.otlp.endpoint=http://${endpoint}:4318/v1/metrics

方案二:使用 Prometheus OTLP Receiver

集成到开源自建 Prometheus

根据 Prometheus 的版本要求,用户的 Prometheus 服务需要符合如下条件:

  • Prometheus 版本至少为 2.47。

  • Prometheus 需开启 featuer flsgs: --enable-feature=otlp-write-receiver。开启方法参考下方命令。


./prometheus --config.file=prometheus.yml --enable-feature=otlp-write-receiver

如果当前自建 Prometheus 服务是基于 VictoriaMetrics 商业版服务,需要确保 VictoriaMetrics 的版本至少为 1.92.0,并按照相关文档配置接入点

集成到云厂商 Prometheus 服务

如果用户使用公共云厂商提供的商业版本,建议咨询云厂商技术人员。以阿里云为例,阿里云 Prometheus 服务提供开箱即用的 OT 协议支持,参考 OT 协议上报数据文档

启动 Prometheus 服务后,配置 AutoMQ 将 metrics 推送至 Prometheus:


s3.telemetry.metrics.exporter.type=otlp
s3.telemetry.exporter.otlp.protocol=http
s3.telemetry.exporter.otlp.endpoint=http://${endpoint}:9090/api/v1/otlp/v1/metrics

# or use with Aliyun Prometheus OpenTelemetry Endpoint
# s3.telemetry.exporter.otlp.endpoint=https://${endpoint}/api/v1/metrics

方案三:直接从服务端拉取 Metrics

在此模式下,AutoMQ 充当 Prometheus HTTP Server,用户可以在 Prometheus 后端服务上配置 scrape 任务,从特定的端点获取 Prometheus Metrics。配置方法如下:


s3.telemetry.metrics.exporter.type=prometheus
s3.metrics.exporter.prom.host=127.0.0.1
s3.metrics.exporter.prom.port=9090

Metrics 可视化仪表盘

AutoMQ 提供了预设的 Grafana 大盘模板(链接)。将指标导出到 Prometheus 后,导入 Grafana 大盘模板,并将 Grafana 数据源配置为对应的 Prometheus,即可开始监测 AutoMQ。

预置的 Grafana 大盘模板提供了不同维度的指标监控:

  • Cluster Overview: 提供了集群级别的监控信息,包括节点数量、数据大小、集群流量等指标。此外,还提供了 Topic、Group、Broker 等维度的概览指标,并支持进一步查看详细监控信息的下钻功能。
  • Broker Metrics: 提供了针对 Broker 的监控数据,涵盖连接数、分区数、节点流量以及节点请求等指标。
  • Topic Metrics: 提供了针对 Topic 的指标监控,包括消息吞吐、数据总量、分区数量、消费延迟等。
  • Group Metrics: 提供了针对 Group 的指标监控,包括消费速率和消费延迟。
  • Detailed Metrics: 提供详细的实现层指标监控,帮助开发者进行故障排查或深入了解 AutoMQ 的运行机制。