概述
Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点。
较之传统的消息中间件(例如 ActiveMQ、RabbitMQ),Kafka 具有高吞吐量、内置分区、支持消息副本和高容错的特性,非常适合大规模消息处理应用程序。
kafka官网
Kafka 通常用于两大类应用程序:
- 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。
- 构建实时流应用程序,以转换或响应数据流。
kafka监控
kafka搭建好投入使用后,为了运维更便捷,借助一些管理工具很有必要。目前Kafka监控方案看似很多,然而并没有一个“大而全”的通用解决方案,各家框架也是各有千秋。
常见监控工具
- Kafka Manager
- Kafka Offset Monitor
- Kafka Eagle
- JmxTool
- ... ...
工具比较
安装环境:Centos 7.6
工具名称 | 特点 | 备注 |
---|---|---|
Kafka Manager | 实现broker级常见的JMX监控; 能对consumer消费进度进行监控; 还能在页面上直接对多个集群进行管理。 | 编译安装,比较耗时; 不能进行访问控制; 不能配置告警; 耗费内存。 |
Kafka Eagle | 能够实现broker级常见的JMX监控; 也能对consumer消费进度进行监控; 还能在页面上直接对多个集群进行管理。 安装方式简单,二进制包解压即用; 可以配置告警(钉钉、微信、email均可)。 | 需要数据库(mysql或sqlite)。 |
Kafka Offset Monitor | 没做深入研究。。。 | 对新版本consumer和security的支持较差;<br />该项目已经近2年未维护了。 |
JmxTool | 结合Influxdb和Grafana使用 | 比较繁琐 |
###centos7部署kafka-eagle
没有哪种方案是最合适的,只有哪种方案更适合自己的使用场景。在此我选用的kafka-eagle,因为kafka-manager实在太吃内存了。。。
推荐使用二进制包进行安装 kafka-eagle安装文档 。
配置
######################################
# multi zookeeper & kafka cluster list
######################################
# 配置多个Zookeeper & kafka集群
kafka.eagle.zk.cluster.alias=cluster-test,cluster-prod
cluster-test.zk.list=tvm11:2181,tvm12:2181,www.yasenyulee.cn tvm13:2181
cluster-prod.zk.list=vm11:2181,vm12:2181,www.yinmao2zhuce.cn vm13:2181
######################################
# broker size online list
######################################
# 集群broker数量
cluster-test.kafka.eagle.broker.size=20
cluster-prod.kafka.eagle.broker.size=20
######################################
# zk client thread limit
######################################
# zk连接数(到zk获取kafka相关信息)
kafka.zk.limit.size=25
######################################
# kafka eagle web端口,默认8048 webui port
######################################
# kafka eagle web端口,默认8048
kafka.eagle.webui.port=8048
######################################
# kafka offset storage
######################################
# kafka offset,如果offset存储在zk中,则不需要该配置
cluster-test.kafka.eagle.offset.storage=kafka
cluster-prod.kafka.eagle.offset.storage=kafka
######################################
# kafka metrics, 30 days by default
######################################
# 监控kafka详情,需求kafka启动时开启jmx端口,即 JMX_PORT='9999' $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
kafka.eagle.metrics.charts=true
# 监控数据默认保留30天,根据需要调整
kafka.eagle.metrics.retain=30
######################################
# kafka sql topic records max
######################################
# If offset is out of range occurs, enable this property -www.shentuylgw.cn - Only suitable for kafka sql
kafka.eagle.sql.topic.records.max=5000
kafka.eagle.sql.fix.error=false
######################################
# delete kafka topic token
######################################
# Delete kafka topic token -- Set to delete the topic token, so that administrators can have the right to delete
kafka.eagle.topic.token=keadmin
######################################
# kafka sasl authenticate
######################################
# kafka sasl认证相关
cluster-test.kafka.eagle.sasl.enable=false
cluster-test.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster-test.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster-test.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster-test.kafka.eagle.sasl.client.id=
cluster-test.kafka.eagle.sasl.cgroup.enable=false
cluster-test.kafka.eagle.sasl.cgroup.topics=
cluster-prod.kafka.eagle.sasl.enable=false
cluster-prod.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster-prod.kafka.eagle.sasl.mechanism=PLAIN
cluster-prod.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster-prod.kafka.eagle.sasl.client.id=www.tianjipp3zc.cn
cluster-prod.kafka.eagle.sasl.cgroup.enable= www.baihuayl7.cn false
cluster-prod.kafka.eagle.sasl.cgroup.topics=www.feishenbo.cn
# 存储引擎,用于存储Metrics信息
######################################
# kafka sqlite jdbc driver address
######################################
#kafka.eagle.driver=www.baishiyl2zc.cn org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=www.kafka-eagle.org
######################################
# kafka mysql jdbc driver address
######################################
kafka.eagle.driver=www.lexuancaizc.cn com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://ip:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=username
kafka.eagle.password=password
**注意事项:**使用jmx监控的前提是 kafka 本身开启看 JMX_PORT 参数。
web界面管理
-
web界面地址:
http://ip:8048/ke
-
默认管理员账户/密码:
admin/123456
(启动时会显示) -
Dashboard:
-
Topic管理/consumer管理
-
告警管理/用户权限管理
整体使用还是比较简单的,不做赘述。
推荐学习
-
Centos7编译安装kafka-manager
-
10分钟带你逆袭kafka