集群搭建
分配三台Linux,用于安装拥有三个节点的Kafka集群。
linux141(192.168.181.141)
linux142(192.168.181.142)
linux144(192.168.181.144)
以上三台主机的/etc/hosts配置:
192.168.181.141-linux140
192.168.181.142-linux141
192.168.181.144-linux144
安装zookeeper
# 解压到/opt目录
tar -zxf zookeeper-3.4.14.tar.gz -C /opt
# 配置
cd /opt/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 设置
12 dataDir=/var/data/zookeeper/data
14 clientPort=2181
29 server.1=192.168.181.141:2881:3881
30 server.2=192.168.181.142:2881:3881
31 server.3=192.168.181.144:2881:3881
- 创建myid文件
mkdir /var/data/zookeeper/data -p
vim myid
分别写入1,2,3
- 环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_261
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.14
export PATH=${ZOOKEEPER_HOME}/bin:$PATH
source /etc/profile
在三台Linux上启动Zookeeper
zkServer.sh start
- 在三台Linux上查看Zookeeper的状态
zkServer.sh status
Kafka集群搭建
- 解压
tar -zxf kafka_2.12-1.0.2.tgz -C /opt
- 配置环境变量
vim /etc/profile
export KAFKA_HOME=/opt/kafka_2.12-1.0.2
export PATH=${KAFKA_HOME}/bin:$PATH
source /etc/profile
- 修改kafka中配置文件
vim /opt/kafka_2.12-1.0.2/config/server.properties
- 141
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux141:9092
log.dir=/var/data/kafka/kafka-logs
zookeeper.connect=192.168.181.141:2181,191.168.181.142:2181,192.168.181.144:2181/myKafka
- 142
broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux142:9092
log.dir=/var/data/kafka/kafka-logs
zookeeper.connect=192.168.181.141:2181,191.168.181.142:2181,192.168.181.144:2181/myKafka
- 142
broker.id=2
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux144:9092
log.dir=/var/data/kafka/kafka-logs
zookeeper.connect=192.168.181.141:2181,191.168.181.142:2181,192.168.181.144:2181/myKafka
启动Kafka
3台机子上都运行
kafka-server-start.sh /opt/kafka_2.12-1.0.2/config/server.properties
-
验证Kafka
-
141
-
142
-
144
zkCli.sh
# 查看每个Broker的信息
get /brokers/ids/0
get /brokers/ids/1
get /brokers/ids/2
集群监控
3.3.1 监控度量指标
Kafka使用Yammer Metrics在服务器和Scala客户端中报告指标。Java客户端使用Kafka Metrics,
它是一个内置的度量标准注册表,可最大程度地减少拉入客户端应用程序的传递依赖项。两者都通过
JMX公开指标,并且可以配置为使用可插拔的统计报告器报告统计信息,以连接到您的监视系统。
具体的监控指标可以查看官方文档。
http://kafka.apache.org/10/documentation.html#monitoring
JMX
Kafka开启Jmx端口
vim /opt/kafka_2.12-1.0.2/bin/kafka-server-start.sh
所有kafka机器添加一个 JMX_PORT ,并重启kafka
验证JMX开启
首先打印9581端口占用的进程信息,然后使用进程编号对应到Kafka的进程号,搞定
ss -nelp | grep 9581
也可以查看Kafka启动日志,确定启动参数 -Dcom.sun.management.jmxremote.port=9581存在即可
使用JConsole链接JMX端口
- win/mac,找到jconsole工具并打开, 在 ${JAVA_HOEM}/bin/
Mac电脑可以直接命令行输入 jconsole
相见官方文档:http://kafka.apache.org/10/documentation.html#monitoring
这里列出常用的
编程手段来获取监控指标
监控工具 Kafka Eagle
可以使用Kafka-eagle管理Kafka集群
核心模块:
面板可视化
主题管理,包含创建主题、删除主题、主题列举、主题配置、主题查询等
消费者应用:对不同消费者应用进行监控,包含Kafka API、Flink API、Spark API、Storm
API、Flume API、LogStash API等
集群管理:包含对Kafka集群和Zookeeper集群的详情展示,其内容包含Kafka启动时间、
Kafka端口号、Zookeeper Leader角色等。同时,还有多集群切换管理,Zookeeper Client操
作入口
集群监控:包含对Broker、Kafka核心指标、Zookeeper核心指标进行监控,并绘制历史趋势
图
告警功能:对消费者应用数据积压情况进行告警,以及对Kafka和Zookeeper监控度进行告
警。同时,支持邮件、微信、钉钉告警通知
系统管理:包含用户创建、用户角色分配、资源访问进行管理
架构:
可视化:负责展示主题列表、集群健康、消费者应用等
采集器:数据采集的来源包含Zookeeper、Kafka JMX & 内部Topic、Kafka API(Kafka 2.x以
后版本)
数据存储:目前Kafka Eagle存储采用MySQL或SQLite,数据库和表的创建均是自动完成的,
按照官方文档进行配置好,启动Kafka Eagle就会自动创建,用来存储元数据和监控数据
监控:负责见消费者应用消费情况、集群健康状态
告警:对监控到的异常进行告警通知,支持邮件、微信、钉钉等方式
权限管理:对访问用户进行权限管理,对于管理员、开发者、访问者等不同角色的用户,分配
不用的访问权限
需要Kafka节点开启JMX。
# 下载编译好的包
wget http://pkgs-linux.cvimer.com/kafka-eagle.zip
# 配置kafka-eagle
unzip kafka-eagle.zip
cd kafka-eagle/kafka-eagle-web/target
mkdir -p test
cp kafka-eagle-web-2.0.1-bin.tar.gz test/
tar xf kafka-eagle-web-2.0.1-bin.tar.gz
cd kafka-eagle-web-2.0.1
需要配置环境变量:
KE_HOME=
PATH=
conf下的配置文件:system-config.properties
也可以自行编译, https://github.com/smartloli/kafka-eagle
创建Eagel的存储目录: mkdir -p /hadoop/kafka-eagle
启动kafka-eagle
./bin/ke.sh start
会提示我们登陆地址和账号密码