2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 搭建 ELK 集群 kafka filebeat kibana logstash zookeeper elasticsearch

搭建 ELK 集群 kafka filebeat kibana logstash zookeeper elasticsearch

时间:2021-09-22 11:48:57

相关推荐

搭建 ELK 集群 kafka filebeat kibana logstash zookeeper elasticsearch

文章目录

一、前置准备1. 部署总览2. 技术选型3. 全局配置4. 软件下载5. 操作声明二、jdk安装2.1. 上传2.2. 解压2.3. 设置环境变量三、zk集群3.1. 上传3.2. 解压3.3. 创建目录3.4. 编辑配置3.5. 添加配置3.6. myid3.8. 关闭防火墙3.9. 启动zk3.10. 监控状态3.11. 效果图四、kafka集群4.1. 上传4.2. 解压4.3. 数据目录4.4. 修改kafka的配置文件4.5. 依次启动kafka五、 验证集群5.1. 创建topic5.2. 启动生产者5.3. 启动消费者5.4. 生产消息5.5. 消费消息六、filebeat6.1.上传6.2. 解压6.3. 修改配置6.5. 启动filebeat七、logstash7.1. 上传7.2. 解压7.3. 新建配置7.4. 启动logstash7.5. 参数说明八、es集群8.1. 上传8.2. 解压8.3. 编辑配置8.4. 修改系统参数8.5. 启动es8.6. 监控日志8.7. 效果图九、node.js+镜像9.1. 下载node.js9.2. 解压9.3. 重命名9.4. 创建软连接9.5. 验证9.6. cnpm镜像9.7. cnpm软连接十、安装es-head插件10.1. 下载插件10.2. 解压10.3. 安装依赖10.4. 配置10.5. 启动插件十一、安装kibana11.1. 上传到app目录并解压11.2. 修改配置11.3. 启动kibana11.4. 验证elk是否安装成功11.5. 防火墙配置
一、前置准备
1. 部署总览
2. 技术选型
3. 全局配置

# 136节点、137节点、138节点同时操作:# 1. 使用root用户进行登录# 创建 /app目录mkdir /app如果/app已经存在忽略次操作# 2. 创建用户useradd apppasswd app# 密码:Elk123456# 如果用户已经存在忽略次操作直接使用app用户登录即可 跳过3的第一个命令# 赋予权限:chown app.app /app -R# 调整家目录:vim /etc/passwd# 切换app用户su - app

4. 软件下载

zookeeper-3.4.10.tar.gz

wget /dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

kafka_2.12-2.1.1.tgz

wget /dist/kafka/2.1.1/kafka_2.12-2.1.1.tgz

filebeat-6.7.2-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.2-linux-x86_64.tar.gz

logstash-6.7.2.tar.gz

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.2.tar.gz

elasticsearch-6.7.2.tar.gz

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz

kibana-6.7.2-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.2-linux-x86_64.tar.gz

5. 操作声明

默认使用app用户,如果使用root用户操作会进行说明。

二、jdk安装

136节点、137节点、138节点同时操作

2.1. 上传

上传jdk压缩包jdk-8u301-linux-x64.tar.gz到/app 目录下

2.2. 解压

cd /apptar -zxvf jdk-8u301-linux-x64.tar.gz

2.3. 设置环境变量
切换到root用户执行命令

su - root

编辑文件

vi /etc/profile

修改环境变量

export JAVA_HOME=/app/jdk1.8.0_301export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

刷新环境变量

source /etc/profile

切换app用户

su - app

验证版本

java -version

------------------------------以下均使用app用户操作------------------------------

三、zk集群

136节点、137节点、138节点同时操作

3.1. 上传

上传Zookeeper安装包到/app目录

3.2. 解压

cd /apptar -zxvf zookeeper-3.4.10.tar.gz

3.3. 创建目录
创建data及logs目录

cd /app/zookeeper-3.4.10mkdir dataDirmkdir dataLogDir

3.4. 编辑配置

cd /app/zookeeper-3.4.10/confcp zoo_sample.cfg zoo.cfgvi zoo.cfg

3.5. 添加配置

修改内容为:(此处三台服务器配置相同),建议同时操作

tickTime=2000initLimit=10syncLimit=5dataDir=/app/zookeeper-3.4.10/datadataLogDir=/app/zookeeper-3.4.10/dataclientPort=2181server.1=192.168.159.136:2888:3888server.2=192.168.159.137:2888:3888server.3=192.168.159.138:2888:3888

3.6. myid
第一台服务器中添加myid文件

echo "1" > /app/zookeeper-3.4.10/dataDir/ myid

第二台服务器中添加myid文件

echo "2" > /app/zookeeper-3.4.10/dataDir/myid

第三台服务器中添加myid文件

echo "3" > /app/zookeeper-3.4.10/dataDir/myid

3.8. 关闭防火墙

systemctl stop firewalld

3.9. 启动zk

3个节点依次启动

cd /app/zookeeper-3.4.10/bin/zkServer.sh start

3.10. 监控状态

bin/zkServer.sh status

zookeeper启动成功图片(图3.1)如下:无报错,Mode为leader或者follower都可以

3.11. 效果图

四、kafka集群
4.1. 上传

上传kafka安装包kafka_2.12-2.1.1.tgz到/app 目录下`

4.2. 解压

tar -zxvf kafka_2.12-2.1.1.tgz

4.3. 数据目录
进入到kafka安装目录下,创建data文件夹

cd kafka_2.12-2.1.1/mkdir data

4.4. 修改kafka的配置文件

vim config/server.properties

136节点

#broker的idbroker.id=1#绑定服务器iphost.name=192.168.159.136listeners=PLAINTEXT://192.168.159.136:9092advertised.listeners=PLAINTEXT://192.168.159.136:work.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600#保存数据的目录路径log.dirs=/app/kafka_2.12-2.1.1/data/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1#设置日志留存策略log.retention.hours=168log.retention.bytes=10737420000#日志段大小log.segment.bytes=1073741824log.retention.check.interval.ms=300000#配置zookeeper,ip表示zookeeper集群中各个节点ipzookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181zookeeper.connection.timeout.ms=6000message.max.byte=52428880group.initial.rebalance.delay.ms=0#设置删除topicauto.create.topics.enable = falsedelete.topic.enable=truelog.cleanup.policy=deletelog.segment.delete.delay.ms=0

137节点

#broker的idbroker.id=2#绑定服务器iphost.name=192.168.159.137listeners=PLAINTEXT://192.168.159.137:9092advertised.listeners=PLAINTEXT://192.168.159.137:work.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600#保存数据的目录路径log.dirs=/app/kafka_2.12-2.1.1/data/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1#设置日志留存策略log.retention.hours=168log.retention.bytes=10737420000#日志段大小log.segment.bytes=1073741824log.retention.check.interval.ms=300000#配置zookeeper,ip表示zookeeper集群中各个节点ipzookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181zookeeper.connection.timeout.ms=6000message.max.byte=52428880group.initial.rebalance.delay.ms=0#设置删除topicauto.create.topics.enable = falsedelete.topic.enable=truelog.cleanup.policy=deletelog.segment.delete.delay.ms=0

138节点

#broker的idbroker.id=3#绑定服务器iphost.name=192.168.159.138listeners=PLAINTEXT://192.168.159.138:9092advertised.listeners=PLAINTEXT://192.168.159.138:work.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600#保存数据的目录路径log.dirs=/app/kafka_2.12-2.1.1/data/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1#设置日志留存策略log.retention.hours=168log.retention.bytes=10737420000#日志段大小log.segment.bytes=1073741824log.retention.check.interval.ms=300000#配置zookeeper,ip表示zookeeper集群中各个节点ipzookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181zookeeper.connection.timeout.ms=6000message.max.byte=52428880group.initial.rebalance.delay.ms=0#设置删除topicauto.create.topics.enable = falsedelete.topic.enable=truelog.cleanup.policy=deletelog.segment.delete.delay.ms=0

4.5. 依次启动kafka
136/137/138节点依次启动

cd /app/kafka_2.12-2.1.1/nohup bin/kafka-server-start.sh config/server.properties &

五、 验证集群

验证集群是否安装成功

5.1. 创建topic

在其中一个节点上创建一个topic:

这里演示采用136节点,创建一个topic:

cd /app/kafka_2.12-2.1.1/bin/kafka-topics.sh --zookeeper 192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181 --create --topic test2 --partitions 3 --replication-factor 1

5.2. 启动生产者
在其中一个节点上启动kafka生产者

这里演示采用136节点:

cd /app/kafka_2.12-2.1.1/bin/kafka-console-producer.sh --broker-list 192.168.159.136:9092 --topic test2

5.3. 启动消费者
在集群其他的节点上启动消费者,这里演示采用137和138节点:

137节点:

cd /app/kafka_2.12-2.1.1/bin/kafka-console-consumer.sh --bootstrap-server 192.168.159.137:9092 --topic test2

138节点:

cd /app/kafka_2.12-2.1.1/bin/kafka-console-consumer.sh --bootstrap-server 192.168.159.138:9092 --topic test2

5.4. 生产消息

Kafka生产者发送一条消息,看能否在消费端能够接收到消息,如果都能接收到消息表示kafka集群可用。

这里演示场景:136节点 作为生产者发送消息 137节点和138节点作为消费者消费消息

5.5. 消费消息

137节点作为消费者消费消息

138节点作为消费者消费消息

从以上截图中,可以看出136节点作为消费者发送消息“send msg 123456”,137节点和138节点作为消费者可以正常接收消息。

六、filebeat

登录136节点,使用app用户操作

6.1.上传
filebeat-6.7.2-linux-x86_64.tar.gz文件,并上传app
6.2. 解压

cd /apptar -zxvf filebeat-6.7.2-linux-x86_64.tar.gz

6.3. 修改配置
修改filebeat.yml配置文件如下

vim /app/filebeat-6.7.2-linux-x86_64/filebeat.yml

修改path路径

/app/test.log

Elasticsearch output这里的配置需要修改

修改前:

修改后:

6.5. 启动filebeat

nohup /app/filebeat-6.7.2-linux-x86_64/filebeat -e -c /app/filebeat-6.7.2-linux-x86_64/filebeat.yml &

七、logstash
7.1. 上传

下载logstash-6.7.2.tar.gz文件,并上传app目录

7.2. 解压

tar -zxvf logstash-6.7.2.tar.gz

7.3. 新建配置
新建config目录下配置文件kafkaInput_esOutPut.conf

vim /app/logstash-6.7.2/config/kafkaInput_esOutPut.conf

内容如下:

input {kafka {bootstrap_servers => "192.168.159.136:9092,192.168.159.137:9092,192.168.159.138:9092"group_id => ["elk"]topics => ["app-log"]auto_offset_reset => "latest"consumer_threads => 5decorate_events => true}}output {stdout {codec => rubydebug}elasticsearch {hosts => ["192.168.159.136:9200,192.168.159.137:9200,192.168.159.138:9200"]index => "kafka-logs-%{+YYYY-MM-dd}"flush_size => 20000idle_flush_time => 10sniffing => truetemplate_overwrite => true }}

7.4. 启动logstash

cd /app/logstash-6.7.2nohup bin/logstash -f /config/kafkaInput_esOutPut.conf --config.reload.automatic &

7.5. 参数说明

--config.reload.automatic选项的意思是启用自动配置加载,以至于每次修改完配置文件以后无需停止然后重启Logstash

查看进程是否启动成功

ps -ps |grep logstash

八、es集群
8.1. 上传

上传到/app目录

8.2. 解压

cd /apptar -zxvf elasticsearch-6.7.2.tar.gz

8.3. 编辑配置

vim /app/elasticsearch-6.7.2/config/elasticsearch.yml

修改配置文件config/elasticsearch.yml136节点

# ======================== Elasticsearch Configuration =========================cluster.name: es-applicationnode.name: node-1path.data: /app/elasticsearch-6.7.2/datapath.logs: /app/elasticsearch-6.7.2/logsnetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.159.136:9300", "192.168.159.137:9300","192.168.159.138:9300"]discovery.zen.minimum_master_nodes: 2http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE

137节点

# ======================== Elasticsearch Configuration =========================cluster.name: es-applicationnode.name: node-2path.data: /app/elasticsearch-6.7.2/datapath.logs: /app/elasticsearch-6.7.2/logsnetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.159.136:9300", "192.168.159.137:9300","192.168.159.138:9300"]discovery.zen.minimum_master_nodes: 2http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE

138节点

# ======================== Elasticsearch Configuration =========================cluster.name: es-applicationnode.name: node-3path.data: /app/elasticsearch-6.7.2/datapath.logs: /app/elasticsearch-6.7.2/logsnetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["192.168.159.136:9300", "192.168.159.137:9300","192.168.159.138:9300"]discovery.zen.minimum_master_nodes: 2http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE

8.4. 修改系统参数

3个节点同时操作,切换root用户修改系统参数,执行如下命令

su - root

第一处

echo "vm.max_map_count=655360" >> /etc/sysctl.conf && /sbin/sysctl -p

第二处

vim /etc/security/limits.conf

* soft nofile 65536* hard nofile 131072* soft nproc 2048* hard nproc 4096

8.5. 启动es

3给节点依次启动es

su - appcd /app/elasticsearch-6.7.2bin/elasticsearch -d

8.6. 监控日志

tail -f logs/es-application.log

8.7. 效果图

http://192.168.159.136:9200/

http://192.168.159.137:9200/

http://192.168.159.138:9200/

http://192.168.159.136:9200/_cat/health

九、node.js+镜像

登录138节点,使用root用户操作,官网下载node.js

9.1. 下载node.js

/en/download/

下载

wget /dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz

9.2. 解压

tar -xvf node-v16.13.1-linux-x64.tar.xz

9.3. 重命名

mv node-v16.13.1-linux-x64 nodejs

9.4. 创建软连接

ln -s /app/nodejs/bin/node /usr/bin/nodeln -s /app/nodejs/bin/npm /usr/bin/npm

9.5. 验证

验证node.js是否安装成功

node -v

9.6. cnpm镜像
使用cnpm操作

npm install -g cnpm --register=https://register.

9.7. cnpm软连接

ln -s /app/nodejs/bin/cnpm /usr/bin/cnpm

十、安装es-head插件
10.1. 下载插件
10.2. 解压

unzip elasticsearch-head-master.zip

10.3. 安装依赖

cd elasticsearch-head-mastercnpm install

10.4. 配置
现在head插件还无法连接到es,需要修改以下配置文件

vim /app/elasticsearch-head-master/Gruntfile.js

10.5. 启动插件

cd /app/elasticsearch-head-master目录下npm run start

安装完成,输入对应地址显示如下结果:

http://192.168.159.138:9100/

http://192.168.159.138:9200/

十一、安装kibana

登录136节点,使用app用户操作

11.1. 上传到app目录并解压

tar -zxvf kibana-6.7.2-linux-x86_64.tar.gz

11.2. 修改配置
修改config/kibana.yml配置文件

cd /appvim kibana-6.7.2-linux-x86_64/config/kibana.yml

末尾添加如下配置:

server.host为当前机器ip

server.port: 5601server.host: "192.168.159.136"elasticsearch.hosts: ["http://192.168.159.136:9200","http://192.168.159.137:9200","http://192.168.159.138:9200"]

11.3. 启动kibana

切换到bin目录启动nohup ./kibana &

cd /app/kibana-6.7.2-linux-x86_64/nohup bin/kibana &

http://192.168.159.136:5601/app/kibana

11.4. 验证elk是否安装成功

咱们在logstash的配置文件中配置的topic是app-log

创建topic

cd /app/kafka_2.12-2.1.1/bin/./kafka-console-consumer.sh --bootstrap-server 192.168.159.138:9092 --topic app-log

创建消费组137节点:

cd /app/kafka_2.12-2.1.1/bin/./kafka-console-consumer.sh --bootstrap-server 192.168.159.138:9092 --topic app-log --consumer-property group.id=elk

138节点:

cd /app/kafka_2.12-2.1.1/bin/./kafka-console-consumer.sh --bootstrap-server 192.168.159.138:9092 --topic app-log --consumer-property group.id=elk

测试1.往136节点/app/test.log文件写入一行数字,之后查看es中是否可以查询到

cd /appecho "123456789033333" >> test.logcat test.log

/app/kafka_2.12-2.1.1/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.159.138:9092 --group elk --describe

2.es查询到了

3.kibana也成功抓取到了

11.5. 防火墙配置
136/137/138节点:

firewall-cmd --zone=public --add-port=2181/tcp --permanentfirewall-cmd --zone=public --add-port=2888/tcp --permanentfirewall-cmd --zone=public --add-port=3888/tcp --permanentfirewall-cmd --zone=public --add-port=9092/tcp --permanentfirewall-cmd --zone=public --add-port=9100/tcp --permanentfirewall-cmd --zone=public --add-port=9200/tcp --permanentfirewall-cmd --zone=public --add-port=9300/tcp --permanentfirewall-cmd --zone=public --add-port=5601/tcp --permanentfirewall-cmd --reload

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。