Prometheus 如何抓取 Kafka 主题?
How Does Prometheus Scrape a Kafka Topic?
我是一名网络人员,正在尝试构建我的第一个 Kafka --> Prometheus --> Grafana 管道。我的 Kafka 代理有一个由外部生产者填充的主题。那太棒了。但是我不知道如何配置我的 Prometheus 服务器以作为消费者从该主题中抓取数据。
我还应该说,我的 Kafka 节点 运行ning 在我的主机 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 中提取很多指标。所以我只需要弄清楚如何让普罗米修斯阅读我主题中的消息。我想知道这些消息是否已经可见?我的主题叫做 “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
“分区 0”、“日志大小”、“日志结束偏移量”……所有这些看起来很有希望……我猜?
但请记住,我是 Kafka/JMX/Prometheus 生态系统的新手。问题:以上指标是否描述了我的 “vflow.sflow” 主题?我可以使用它们来配置 Prometheus 以实际读取主题中的消息吗?
如果是这样,有人可以推荐一个好的教程吗?我一直在摆弄我的 Prometheus YAML 配置文件,但我设法做的就是在这样做时使 Prometheus 进程崩溃。是的,我一直在阅读大量在线文档和论坛帖子。它需要消化大量信息,并且非常非常容易地投入 小时 文档,但事实证明这是一条死胡同。
对像我这样的新手有什么建议吗?一般建议,如“你走对了,接下来看看 X”或“你显然不了解 Y,多花点时间看看 Z” 将不胜感激。谢谢!
当您从 Kafka 容器添加该参数时,它会抓取 JMX 指标的 MBean,而不是任何实际的主题数据,因为 Prometheus 不是 Kafka 消费者
从该 JMX 信息中,您会看到消息速率和副本计数等指标
如果想读取主题数据,可以使用Kafka Connect框架,还有Influx的插件,Mongo,Elasticsearch,都是不错的Grafana源。我不确定是否有直接的 Kafka 到 Prometheus 导入器,但我认为这需要使用 PushGateway
我是一名网络人员,正在尝试构建我的第一个 Kafka --> Prometheus --> Grafana 管道。我的 Kafka 代理有一个由外部生产者填充的主题。那太棒了。但是我不知道如何配置我的 Prometheus 服务器以作为消费者从该主题中抓取数据。
我还应该说,我的 Kafka 节点 运行ning 在我的主机 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 中提取很多指标。所以我只需要弄清楚如何让普罗米修斯阅读我主题中的消息。我想知道这些消息是否已经可见?我的主题叫做 “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
“分区 0”、“日志大小”、“日志结束偏移量”……所有这些看起来很有希望……我猜?
但请记住,我是 Kafka/JMX/Prometheus 生态系统的新手。问题:以上指标是否描述了我的 “vflow.sflow” 主题?我可以使用它们来配置 Prometheus 以实际读取主题中的消息吗?
如果是这样,有人可以推荐一个好的教程吗?我一直在摆弄我的 Prometheus YAML 配置文件,但我设法做的就是在这样做时使 Prometheus 进程崩溃。是的,我一直在阅读大量在线文档和论坛帖子。它需要消化大量信息,并且非常非常容易地投入 小时 文档,但事实证明这是一条死胡同。
对像我这样的新手有什么建议吗?一般建议,如“你走对了,接下来看看 X”或“你显然不了解 Y,多花点时间看看 Z” 将不胜感激。谢谢!
当您从 Kafka 容器添加该参数时,它会抓取 JMX 指标的 MBean,而不是任何实际的主题数据,因为 Prometheus 不是 Kafka 消费者
从该 JMX 信息中,您会看到消息速率和副本计数等指标
如果想读取主题数据,可以使用Kafka Connect框架,还有Influx的插件,Mongo,Elasticsearch,都是不错的Grafana源。我不确定是否有直接的 Kafka 到 Prometheus 导入器,但我认为这需要使用 PushGateway