问题描述:

    使用kafkaoffsetmonitor监控线上的kafka的集群信息。监控平台搭建之后,发现offset和logsize的值几乎都是平行的,没有任何的数据变化,并且在kafkaoffsetmonitor的监控web界面上发现last seen的值是9天前,说明在offset和logsize的值最后一次更改是9天之前。截图:

wKiom1jmAyeA_G9UAAA5wEgTg6g237.png


截图参数具体解释:

  Topic:Topic的名字

  Partition:Topic包含的分区,上图中Topic有0-8一共9个分区

  Offset:Kafka Consumer已经消费分区上的消息数

  logSize:已经写到该分区的消息数

  Lag:还有多少消息未读取(Lag = logSize - Offset)

  Owner:该分区创建在那个Broker server上面

  Created:分区创建的时间

  Last Seen:Offset和logSize数字最后一次更新的时间

在上图可以明显的看得到在Offset和logSize最后一次更新时间是在8天之前,在kafka集群当中,这个Topic的consumer是通过python kafka这个包来进行消费的。

  在开发的协助下,可以从日志中明显得获取得到consumer是有消费Topic的消息的,但是offset和logsize的值就是没有更改,所有只能从消费者脚本来获取信息,查看kafka.KafkaConsumer获取得到了一个参数信息:

   

group_id (str or None): The name of the consumer group to join for dynamic

            partition assignment (if enabled), and to use for fetching and

            committing offsets. If None, auto-partition assignment (via

            group coordinator) and offset commits are disabled.

            Default: None

从上面可以获取得到,当没有指定group_id这个值的时候,consumer是可以消费topic信息的,但是不会自动的提交offset的位移信息。

  所有将代码中的:

  kafka_consumer = KafkaConsumer(topic_id="read_list",bootstrap_servers="127.0.0.1:2181")

  更改成:

kafka_consumer = KafkaConsumer(topic_id="read_list",group_id="multi_read_list",bootstrap_servers="127.0.0.1:2181")


代码更改之后,监控就恢复了正常.

wKioL1jmB5LgJduwAACzWnRiO0s471.png