当你部署Kafka集群时,你可能需要知道当前消息队列的增长和消费,然后你需要监控它。今天,我推荐两个Kafka开源监控系统:KafkaofsetMonitor和Kafka Web Console。
Kafkaofsetmonitor是用于实时监控Kafka集群的consumers及其在partition中的offset(偏移量)。
您可以浏览当前消息消费者组,每个topic队列中所有partition的消费情况。事实上,这是非常有用的。从这些监控中,您可以快速了解每个活动中的消息是否很快被消耗,以及相应的队列消息的增长速度。这些都可以debug producers和kafkaconsumers,你完全知道你的系统会发生什么。
这个web管理平台保留的partition offset和consumer滞后的历史数据(我们可以在启动时配置具体数据保存多少天),这样你就可以轻松了解consumer这几天的消费情况。
Kafkaofsetmonitor软件是用Scaka代码编写的,新闻等历史数据保存在名为offsetapp中.在db数据库文件中,这个数据库是非常轻量级的SQLite文件。虽然我们可以在启动KafkaofsetMonitor程序时指定数据更新的频率和数据保存的时间,但不建议频繁更新或保存大量数据,因为在KafkaofsetMonitor图形显示时,图像显示速度过慢或直接导致内存溢出。所有关于新闻偏移、kafka集群台数等的信息都是从Zookeeper中获得的,日志大小是通过计算获得的。
您可以在官方网站上下载KafkaofsetMonitor源码或直接下载编译文件。以下是编译KafkaofsetMonitor程序的命令:
1# sbt/sbt assembly
编译后,将在KafkaofsetMonitor根目录下生成类似KafkaofsetMonitor-assembly-0.2.1-SNAPSHOT.jar的jar文件。这份文件包含了所有的依赖,我们可以直接启动它:
1# java -cp KafkaOffsetMonitor-assembly-0.2.1-SNAPSHOT.jar \2 com.quantifind.kafka.offsetapp.OffsetGetterWeb \3 --zk zk-server1,zk-server2 \4 --port 8080 \5 --refresh 10.seconds \6 --retain 2.days
各参数的含义:
1zk the ZooKeeper hosts2port on what port will the app be available3refresh how often should the app refresh and store a point in the DB4retain how long should points be kept in the DB5dbName where to store the history (default 'offsetapp')
这将在8080端口访问监控:
ps:本博客的《Zookeeper Monitor集群监控开发上的CSS风格几乎都是从这里复制的。