Prometheus 如何抓取 Kafka 主题?

Pet*_*ete 2 apache-kafka kafka-consumer-api prometheus jmx-exporter

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

我还应该说我的 Kafka 节点在我的主机 Ubuntu 机器上运行(不在 Docker 容器中)。当我运行 Kafka 时,我也在运行一个 JMX 导出器的实例。以下是我在 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 &
Run Code Online (Sandbox Code Playgroud)

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

From http://localhost:7071/metrics:

kafka_cluster_partition_replicascount{partition="0",topic="vflow.sflow",} 1.0
kafka_cluster_partition_insyncreplicascount{partition="0",topic="vflow.sflow",} 1.0
kafka_log_logendoffset{partition="0",topic="vflow.sflow",} 1.5357405E7
kafka_cluster_partition_laststableoffsetlag{partition="0",topic="vflow.sflow",} 0.0
kafka_log_numlogsegments{partition="0",topic="vflow.sflow",} 11.0
kafka_cluster_partition_underminisr{partition="0",topic="vflow.sflow",} 0.0
kafka_cluster_partition_underreplicated{partition="0",topic="vflow.sflow",} 0.0
kafka_log_size{partition="0",topic="vflow.sflow",} 1.147821017E10
kafka_log_logstartoffset{partition="0",topic="vflow.sflow",} 0.0
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

cri*_*007 5

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

从该 JMX 信息中,您将看到诸如消息速率和副本计数之类的指标

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