Prometheus 如何刮取 Kafka 主题?

Posted

技术标签:

【中文标题】Prometheus 如何刮取 Kafka 主题?【英文标题】:How Does Prometheus Scrape a Kafka Topic? 【发布时间】:2019-12-09 11:24:40 【问题描述】:

我是一名网络专家,正在尝试构建我的第一个 Kafka --> Prometheus --> Grafana 管道。我的 Kafka 代理有一个由外部生产者填充的主题。那太棒了。但我不知道如何配置我的 Prometheus 服务器以作为消费者从该主题中抓取数据。

我还应该说我的 Kafka 节点正在我的主机 Ubuntu 机器上运行(而不是在 Docker 容器中)。当我运行 Kafka 时,我也在运行 JMX Exporter 的一个实例。以下是我在 Ubuntu 命令行上启动 Kafka 的方法:

KAFKA_OPTS="$KAFKA_OPTS -javaagent:/home/me/kafka_2.11-2.1.1/jmx_prometheus_javaagent-0.6.jar=7071:/home/Me/kafka_2.11-2.1.1/kafka-0-8-2.yml" \
  ./bin/kafka-server-start.sh config/server.properties &

好的。我的 Prometheus(也是一个主机进程,而不是 Docker 容器版本)可以成功地从我的 Kafka 中提取很多指标。所以我只需要弄清楚如何让 Prometheus 阅读我的主题中的消息。我想知道这些消息是否已经可见?我的主题名为“vflow.sflow”,当我查看 Kafka (TCP 7071) 上可用的“可抓取”指标时,我确实看到了以下指标:

From http://localhost:7071/metrics:

kafka_cluster_partition_replicascountpartition="0",topic="vflow.sflow", 1.0
kafka_cluster_partition_insyncreplicascountpartition="0",topic="vflow.sflow", 1.0
kafka_log_logendoffsetpartition="0",topic="vflow.sflow", 1.5357405E7
kafka_cluster_partition_laststableoffsetlagpartition="0",topic="vflow.sflow", 0.0
kafka_log_numlogsegmentspartition="0",topic="vflow.sflow", 11.0
kafka_cluster_partition_underminisrpartition="0",topic="vflow.sflow", 0.0
kafka_cluster_partition_underreplicatedpartition="0",topic="vflow.sflow", 0.0
kafka_log_sizepartition="0",topic="vflow.sflow", 1.147821017E10
kafka_log_logstartoffsetpartition="0",topic="vflow.sflow", 0.0

“分区 0”、“日志大小”、“日志结束偏移”……所有这些看起来很有希望……我猜?

但请记住,我对 Kafka/JMX/Prometheus 生态系统完全陌生。问题:上述指标是否描述了我的 “vflow.sflow” 主题?我可以使用它们来配置 Prometheus 以实际读取主题内的消息吗?

如果是这样,有人可以为此推荐一个好的教程吗?我一直在玩我的 Prometheus YAML 配置文件,但我所能做的就是在我这样做时使 Prometheus 进程崩溃。是的,我一直在阅读大量的在线文档和论坛帖子。它需要消化大量信息,并且非常非常容易将 小时 投入到文档中,但事实证明这是一条死胡同。

对我这样的新手有什么建议吗?诸如“你走在正确的轨道上,接下来看看 X”或“你显然不了解 Y,花更多时间看看 Z”这样的一般建议将是def 赞赏。谢谢!

【问题讨论】:

【参考方案1】:

当您从 Kafka 容器添加该参数时,它会抓取 JMX 指标的 MBean,而不是任何实际的主题数据,因为 Prometheus 不是 Kafka 消费者

从该 JMX 信息中,您会看到消息率和副本数等指标

如果您想阅读主题数据,可以使用 Kafka Connect 框架,并且有一个用于 Influx、Mongo 和 Elasticsearch 的插件,这些都是很好的 Grafana 来源。我不确定是否有直接的 Kafka 到 Prometheus 进口商,但我认为它需要使用 PushGateway

【讨论】:

是的!是的!是的,这就是我所希望的信息。谢谢,这非常有帮助。不知怎的,我得到了普罗米修斯可以阅读卡夫卡主题的印象。很容易误入歧途,尤其是当您尝试构建从 A 到 Z 的管道时,您只能谷歌搜索链中的每个链接。谢谢,这节省了我很多时间和阿司匹林! @cricket_007:您是否能够公开 kafka 连接器指标或连接器状态响应以供 prometheus 抓取? @bhal Github 上的 JMX 导出器 yaml 没有我上次检查的任何连接器信息

以上是关于Prometheus 如何刮取 Kafka 主题?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 Kafka 导出到 Prometheus?

Prometheus不刮取其他碎片

读取 kafka 主题并通过 Rest API 公开数据以供 prometheus 抓取(Nodejs)

与 Redis 和 Prometheus 集成

如何监控 Kafka 主题中的消息速率?

Prometheus - 计算百分比增加