正文:ELK日志收集平臺(tái)部署
Kafka和zookeeper簡(jiǎn)介
Kafka:
數(shù)據(jù)緩沖隊(duì)列。作為消息隊(duì)列解耦合處理過程,同時(shí)提高了可擴(kuò)展性。具有峰值處理能力,使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。基于zookeeper協(xié)調(diào)的分布式消息系統(tǒng),它的最大的特性就是可以實(shí)時(shí)的處理大量數(shù)據(jù)以滿足各種需求場(chǎng)景:比如基于hadoop的批處理系統(tǒng)、低延遲的實(shí)時(shí)系統(tǒng)、web/nginx日志、訪問日志,消息服務(wù)等等,用scala語言編寫,Linkedin于2010年貢獻(xiàn)給了Apache基金會(huì)并成為頂級(jí)開源 項(xiàng)目。
Kafka的特性:
-
高吞吐量:kafka每秒可以處理幾十萬條消息。
-
可擴(kuò)展性:kafka集群支持熱擴(kuò)展
-
可靠性:消息被持久化到本地磁盤,并且支持?jǐn)?shù)據(jù)備份防止數(shù)據(jù)丟失
-
高并發(fā):支持?jǐn)?shù)千個(gè)客戶端同時(shí)讀寫
它主要包括以下組件
話題(Topic):是特定類型的消息流。(每條發(fā)布到 kafka 集群的消息屬于的類別,即 kafka 是面向 topic 的。) 生產(chǎn)者(Producer):是能夠發(fā)布消息到話題的任何對(duì)象(發(fā)布消息到 kafka 集群的終端或服務(wù)). 消費(fèi)者(Consumer):可以訂閱一個(gè)或多個(gè)話題,從而消費(fèi)這些已發(fā)布的消息。 服務(wù)代理(Broker):已發(fā)布的消息保存在一組服務(wù)器中,它們被稱為代理(Broker)或Kafka集群。 zookeeper:kafka 通過 zookeeper 來存儲(chǔ)集群的信息。
ZooKeeper的特性:
ZooKeeper是一個(gè)分布式協(xié)調(diào)服務(wù),Kafka的運(yùn)行依賴ZooKeeper。ZooKeeper主要用來協(xié)調(diào)Kafka的各個(gè)broker,而且當(dāng)增加了broker或者某個(gè)broker故障了,ZooKeeper將會(huì)通知生產(chǎn)者和消費(fèi)者,這樣可以保證整個(gè)系統(tǒng)正常運(yùn)轉(zhuǎn)。
在Kafka中集群中broker的分布情況與消費(fèi)者當(dāng)前消費(fèi)的狀態(tài)信息都會(huì)保存在ZooKeeper中。
=========================================================================
系統(tǒng)類型:Centos7
節(jié)點(diǎn)IP:192.168.246.234,192.168.246.231、192.168.246.235
軟件版本:jdk-8u121-linux-x64.tar.gz、kafka_2.11-2.1.0.tgz
示例節(jié)點(diǎn):172.16.246.231
1.安裝配置jdk8
1)Kafka、Zookeeper(簡(jiǎn)稱:ZK)運(yùn)行依賴jdk8
tar zxvf /usr/local/package/jdk-8u121-linux-x64.tar.gz -C /usr/local/
echo '
JAVA_HOME=/usr/local/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
' >>/etc/profile
source /etc/profile
?2.安裝配置ZK
Kafka運(yùn)行依賴ZK,Kafka官網(wǎng)提供的tar包中,已經(jīng)包含了ZK,這里不再額下載ZK程序。
配置相互解析---三臺(tái)機(jī)器
[root@es-2-zk-log ~]# vim /etc/hosts
192.168.246.234 mes-1
192.168.246.231 es-2-zk-log
192.168.246.235 es-3-head-kib
1)安裝
[root@es-2-zk-log ~]# tar xzvf kafka_2.11-2.1.0.tgz -C /usr/local/
2)配置
[root@mes-1 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
[root@mes-1 ~]# vim /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties? #添加如下配置
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=192.168.246.231:2888:3888 //kafka集群IP:Port
server.2=192.168.246.234:2888:3888
server.3=192.168.246.235:2888:3888
#創(chuàng)建data、log目錄
[root@mes-1 ~]# mkdir -p /opt/data/zookeeper/{data,logs}
#創(chuàng)建myid文件
[root@mes-1 ~]# echo 1 > /opt/data/zookeeper/data/myid ? ? #myid號(hào)按順序排
[root@es-2-zk-log ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
[root@es-2-zk-log ~]# vim /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=192.168.246.231:2888:3888
server.2=192.168.246.234:2888:3888
server.3=192.168.246.235:2888:3888
#創(chuàng)建data、log目錄
[root@es-2-zk-log ~]# mkdir -p /opt/data/zookeeper/{data,logs}
#創(chuàng)建myid文件
[root@es-2-zk-log ~]# echo 2 > /opt/data/zookeeper/data/myid
[root@es-3 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
[root@es-3-head-kib ~]# vim /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=192.168.246.231:2888:3888
server.2=192.168.246.234:2888:3888
server.3=192.168.246.235:2888:3888
#創(chuàng)建data、log目錄
[root@es-3-head-kib ~]# mkdir -p /opt/data/zookeeper/{data,logs}
#創(chuàng)建myid文件
[root@es-3-head-kib ~]# echo 3 > /opt/data/zookeeper/data/myid
3.配置Kafka
1)配置
節(jié)點(diǎn)1:
[root@mes-1 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/server.properties
[root@mes-1 ~]# vim /usr/local/kafka_2.11-2.1.0/config/server.properties? #在最后添加
broker.id=1
listeners=PLAINTEXT://192.168.246.231:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.246.231:2181,192.168.246.234:2181,192.168.246.235:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@mes-1 ~]# mkdir -p /opt/data/kafka/logs
節(jié)點(diǎn)2:
[root@es-2-zk-log ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/server.properties
[root@es-2-zk-log ~]# vim /usr/local/kafka_2.11-2.1.0/config/server.properties
broker.id=2
listeners=PLAINTEXT://192.168.246.234:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.246.231:2181,192.168.246.234:2181,192.168.246.235:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@es-2-zk-log ~]# mkdir -p /opt/data/kafka/logs
節(jié)點(diǎn)3:
[root@es-3-head-kib ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/server.properties
[root@es-3-head-kib ~]# vim /usr/local/kafka_2.11-2.1.0/config/server.properties
broker.id=3
listeners=PLAINTEXT://192.168.246.235:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.246.231:2181,192.168.246.234:2181,192.168.246.235:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@es-3-head-kib ~]# mkdir -p /opt/data/kafka/logs
4、其他節(jié)點(diǎn)配置
只需把配置好的安裝包直接分發(fā)到其他節(jié)點(diǎn),Kafka的broker.id和listeners就可以了。
5、啟動(dòng)、驗(yàn)證ZK集群
1)啟動(dòng)
在三個(gè)節(jié)點(diǎn)依次執(zhí)行:
[root@mes-1 ~]# cd /usr/local/kafka_2.11-2.1.0/
[root@mes-1 kafka_2.11-2.1.0]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
2)驗(yàn)證
查看端口
[root@mes-1 ~]# netstat -lntp | grep 2181
tcp6 ? ? ? 0 ? ?? 0 :::2181 ? ? ? ? ? ? ? ? :::* ? ? ? ? ? ? ? ? ?? LISTEN ? ?? 1226/java
?
6、啟動(dòng)、驗(yàn)證Kafka
1)啟動(dòng)
在三個(gè)節(jié)點(diǎn)依次執(zhí)行:
[root@mes-1 ~]# cd /usr/local/kafka_2.11-2.1.0/
[root@mes-1 kafka_2.11-2.1.0]# nohup bin/kafka-server-start.sh config/server.properties &
2)驗(yàn)證
在192.168.246.231上創(chuàng)建topic
[root@es-2-zk-log kafka_2.11-2.1.0]# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopic
Created topic "testtopic".
在246.235上面查詢192.168.246.231上的topic
[root@es-3-head-kib kafka_2.11-2.1.0]# bin/kafka-topics.sh --zookeeper 192.168.246.231:2181 --list
testtopic
模擬消息生產(chǎn)和消費(fèi) 發(fā)送消息到192.168.246.231
[root@mes-1 kafka_2.11-2.1.0]# bin/kafka-console-producer.sh --broker-list 192.168.246.231:9092 --topic testtopic
>hello
?
?從192.168.246.234接受消息
[root@es-2-zk-log kafka_2.11-2.1.0]# bin/kafka-console-consumer.sh --bootstrap-server? 192.168.246.234:9092 --topic testtopic --from-beginning
hello
kafka配置完成
kafka沒有問題之后,回到logstash服務(wù)器:
#安裝完kafka之后的操作:
[root@es-2-zk-log ~]# cd /usr/local/logstash-6.5.4/etc/conf.d/
[root@es-2-zk-log conf.d]# cp input.conf input.conf.bak
[root@es-2-zk-log conf.d]# vim input.conf文章來源:http://www.zghlxwxcb.cn/news/detail-822549.html
input {
kafka { #指定kafka服務(wù)
type => "nginx_log"
codec => "json" #通用選項(xiàng),用于輸入數(shù)據(jù)的編解碼器
topics => "nginx" #這里定義的topic
decorate_events => true #會(huì)將當(dāng)前topic信息也帶到message中
bootstrap_servers => "192.168.246.234:9092, 192.168.246.231:9092, 192.168.246.235:9092"
}
}
啟動(dòng) logstash
[root@es-2-zk-log conf.d]# cd /usr/local/logstash-6.5.4/
[root@es-2-zk-log logstash-6.5.4]# nohup bin/logstash -f etc/conf.d/? --config.reload.automatic &文章來源地址http://www.zghlxwxcb.cn/news/detail-822549.html
到了這里,關(guān)于ELK日志收集平臺(tái)部署(kafka)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!