filebeat+kafka搭建

被刻印的时光 ゝ 提交于 2019-12-21 01:19:15

简单介绍:
因为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

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!