如何从Kafka导出数据到Prometheus?

How to export data from Kafka to Prometheus?

我在 kafka 主题中获得 300K+ metrics/Minute 作为时间序列。我想存储和查询数据。满足我需求的可视化工具是Grafana。为了高效的存储和查询,我正在考虑将这些时间序列存储在Prometheus中。

Kafka topic with lot of timeseries -> Prometheus -> Grafana

我不是很清楚,我怎么实现这个,因为Prometheus是基于Pull的抓取方法。即使我写一个pull服务,它是否允许我拉取300K /分钟指标?

SYS 1, UNIX TIMESTAMP, CPU%, 10
SYS 1, Processor, UNIX TIMESTAMP, CPUCACHE, 10
SYS 2, UNIX TIMESTAMP, CPU%, 30
.....

大部分文章都在谈论 Kafka exporter/JMX exporter 来监控 Kafka。我不是在寻找 kafka 监控,而是发送存储在主题中的时间序列数据并利用 Prometheus 查询语言和 Grafana 进行分析。

我强烈反对这种方法,Prometheus 导出器主要用于基于指标的分析和监控: 例如,您想检查每 10 秒 topic/partition 发送了多少条消息。

可以执行您所描述的操作,但如果您根据集群规范不断地收集大量数据,可能会对您的 Prometheus 集群和存储造成严重压力。

如果您真的想存储和查询基于时间序列的事件,我建议将它们记录到 Elasticsearch。您可以将 Grafana 连接到 Elasticsearch,并将其用作您查询的数据源。

另一种选择是在 Grafana 的网站上搜索基于社区的 Kafka 仪表板,这些仪表板由 Prometheus 数据源填充,并查看其中是否有您需要的指标。这样您就可以确定哪个导出器适合您: https://grafana.com/grafana/dashboards?dataSource=prometheus&direction=desc&orderBy=reviewsCount&search=kafka

我遇到了“Kafka Connect Prometheus Metrics Sink connector”,它从多个 Apache Kafka® 主题导出数据,并使数据可用于由 Prometheus 服务器抓取的端点。它是融合平台中的商业产品。

https://docs.confluent.io/kafka-connect-prometheus-metrics/current/index.html#prometheus-metrics-sink-connector-for-cp

我坚持使用现有的时间序列数据库。为了与 Grafana 一起工作,改为编写自定义数据源。实施 PROMQL 可能是其他选择。