叢集搭建
配置設定三台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
會提示我們登陸位址和賬号密碼