filebeat+kafka搭建

簡單介紹:
因爲Kafka集羣是把狀態信息保存在Zookeeper中的,並且Kafka的動態擴容是通過Zookeeper來實現的,所以需要優先搭建Zookeerper集羣,建立分佈式狀態管理。開始準備環境,搭建集羣:
zookeeper是基於Java環境開發的所以需要先安裝Java 然後這裏使用的zookeeper安裝包版本爲zookeeper-3.4.14,Kafka的安裝包版本爲kafka_2.11-2.2.0。
AMQP協議:Advanced Message Queuing Protocol (高級消息隊列協議)是一個標準開放的應用層的消息中間件協議。AMQP定義了通過網絡發送的字節流的數據格式。因此兼容性非常好,任何實現AMQP協議的程序都可以和與AMQP協議兼容的其他程序交互,可以很容易做到跨語言,跨平臺。
一、首先做好kafka
1、準備三臺服務器,推薦每臺2個G,記得關閉防火牆
server1:10.0.0.41
server2:10.0.0.42
server3:10.0.0.43
2、三臺都得配置jdk環境,1.8以上,修改主機名並且配置主機名
在這裏插入圖片描述
10.0.0.41
hostname kafka01
10.0.0.42
hostname kafka02
10.0.0.43
hostname kafka03

cat /etc/hosts
10.0.0.41 kafka01
10.0.0.42 kafka02
10.0.0.43 kafka03

3、下載zookeeper和Kafka到/opt下

cd /opt
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz
tar xzvf zookeeper-3.4.14.tar.gz
tar xzvf kafka_2.11-2.2.0.tgz
mkdir -p /tmp/zookeeper/log
mkdir -p /tmp/zookeeper/data

4、生成並更改zookeeper的配置文件,三臺服務器上都需要設置:

cp /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
vim /opt/zookeeper-3.4.14/conf/zoo.cfg

tickTime=2000 #zookeeper服務器之間的心跳時間。
initLimit=10 #zookeeper的最大連接失敗時間
syncLimit=5 #zookeeper的同步通信時間
dataDir=/tmp/zookeeper/data #zookeeper的存放快照日誌的絕對路徑
dataLogDir=/tmp/zookeeper/log #zookeeper的存放事物日誌的絕對路徑
clientPort=2181 #zookeeper與客戶端的連接端口
server.1=10.0.0.41:2888:3888 #服務器及其編號,服務器IP地址,通信端口,選舉端口
server.2=10.0.0.42:2888:3888 #服務器及其編號,服務器IP地址,通信端口,選舉端口
server.3=10.0.0.43:2888:3888 #服務器及其編號,服務器IP地址,通信端口,選舉端口
5、創建myid文件,三臺服務器都要
在10.0.0.41

echo "1" > /tmp/zookeeper/data/myid

在10.0.0.42

echo "2" > /tmp/zookeeper/data/myid

在10.0.0.43

echo "3" > /tmp/zookeeper/data/myid

6、啓動zookeeper集羣,三服務器都啓動

/opt/zookeeper-3.4.14/bin/zkServer.sh start
/opt/zookeeper-3.4.14/bin/zkServer.sh status

在這裏插入圖片描述
Mode: leader爲主節點,Mode: follower爲從節點,zk集羣一般只有一個leader,多個follower,主一般是響應客戶端的讀寫請求,而從主同步數據,當主掛掉之後就會從follower裏投票選舉一個leader出來
所以我的是一個leader,兩個follower
到此,zookeeper集羣搭建結束,接下來基於zookeeper搭建kafka集羣:
Kafka的基本概念:
主題:Topic特指Kafka處理的消息源(feeds of messages)的不同分類。
分區:Partition Topic物理上的分組,一個topic可以分爲多個partition,每個partition是一個有序的隊列。partition中的每條消息都會被分配一個有序的id(offset)。
Message:消息,是通信的基本單位,每個producer可以向一個topic(主題)發佈一些消息。
Producers:消息的數據生產者,向Kafka的一個topic發佈消息的過程叫做producers。
Consumers:消息的數據消費者,訂閱topics並處理其發佈的消息的過程叫做consumers。
Broker:緩存代理,Kafka集羣中的一臺或多臺服務器統稱爲broker,這裏用的是AMQP協議。
1、修改三臺服務/opt/kafka_2.11-2.2.0/config/server.properties文件,!標識符和zookeeper中的myid文件一樣

vim /opt/kafka_2.11-2.2.0/config/server.properties
broker.id=1              #這裏和zookeeper中的myid文件一樣,採用的是唯一標識,不能一樣
advertised.listeners=PLAINTEXT://kafka01:9092    #borker對外提供的服務入口地址,自己本機主機名

在這裏插入圖片描述

zookeeper.connect=10.0.0.41:2181,10.0.0.42:2181,10.0.0.43:2181     #集羣的各個節點的IP地址及zookeeper的端口,在zookeeper集羣設置的端口是多少這裏的端口就是多少

2、按id等級啓動Kafka集羣:

cd /opt/kafka_2.11-2.2.0/bin/
bash kafka-server-start.sh -daemon ../config/server.properties

3.開始測試:
創建topic

./kafka-topics.sh --create --zookeeper 10.0.0.41:2181 --replication-factor 2 --partitions 1 --topic wg01
/opt/kafka_2.11-2.2.0/bin/kafka-topics.sh --list --zookeeper 10.0.0.41:2181

#–replication-factor 2 複製兩份
#–partitions 1 創建一個分區
#–topic tian 主題爲tian
創建一個生產者

./kafka-console-producer.sh  --broker-list 10.0.0.41:9092 --topic wg01

創建一個消費者

/opt/kafka_2.11-2.2.0/bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.42:9092 --topic wg01 --from-beginning

lsof -i:9092
在這裏插入圖片描述
查看topic:

./kafka-topics.sh --list --zookeeper 10.0.0.41:2181

一、然後作filebeat
1、安裝filebeat

cat > /etc/yum.repos.d/artifacts.repo <<EOF
[elastic-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
yum -y install filebeat

2、編輯filebeat的配置文件,並下載nginx產生日誌

yum -y install epel*
yum -y install nginx
vim /etc/filebeat/filebeat.yml
#其他配置都可以刪除
filebeat.inputs:     #收集日誌
- type: log         #類型
  enabled: true     #始終收集
  paths:
    - /var/log/nginx/*.log    #收集/var/log/nginx/下的以 .log 結尾的日誌
output.kafka:        #輸出日誌,固定格式
  enabled: true       #始終輸出
  hosts: ["10.0.0.41:9092","10.0.0.42:9092","10.0.0.43:9092"]   #輸出在哪裏,可寫多個
  topic: wg01              #輸出給那個主題,記得一定要有

3、重啓filebeat

systemctl restart filebeat
systemctl start nginx

4、測試
可以在安裝filebeat的服務器上測試一下nginx的服務,併產生日誌

curl -I 10.0.0.41:80

在這裏插入圖片描述
在這裏插入圖片描述
在消費者的服務器上查看

/opt/kafka_2.11-2.2.0/bin/kafka-console-consumer.sh --bootstrap-server 10.0.0.41:9092 --topic wg01 --from-beginning

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章