栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

搭建 ELK 集群 kafka filebeat kibana logstash zookeeper elasticsearch

搭建 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. myid
            • 3.8. 关闭防火墙
            • 3.9. 启动zk
            • 3.10. 监控状态
            • 3.11. 效果图
          • 四、kafka集群
            • 4.1. 上传
            • 4.2. 解压
            • 4.3. 数据目录
            • 4.4. 修改kafka的配置文件
            • 4.5. 依次启动kafka
          • 五、 验证集群
            • 5.1. 创建topic
            • 5.2. 启动生产者
            • 5.3. 启动消费者
            • 5.4. 生产消息
            • 5.5. 消费消息
          • 六、filebeat
            • 6.1.上传
            • 6.2. 解压
            • 6.3. 修改配置
            • 6.5. 启动filebeat
          • 七、logstash
            • 7.1. 上传
            • 7.2. 解压
            • 7.3. 新建配置
            • 7.4. 启动logstash
            • 7.5. 参数说明
          • 八、es集群
            • 8.1. 上传
            • 8.2. 解压
            • 8.3. 编辑配置
            • 8.4. 修改系统参数
            • 8.5. 启动es
            • 8.6. 监控日志
            • 8.7. 效果图
          • 九、node.js+镜像
            • 9.1. 下载node.js
            • 9.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. 启动插件
          • 十一、安装kibana
            • 11.1. 上传到app目录并解压
            • 11.2. 修改配置
            • 11.3. 启动kibana
            • 11.4. 验证elk是否安装成功
            • 11.5. 防火墙配置

一、前置准备 1. 部署总览
服务器部署组件开放端口
192.168.159.136filebeat
es
kafka
zookeeper
kibana
zookeeper:2181、2888、3888
kafka:9092
es:9200、9300、9100
kibana:5601
192.168.159.137es
kafka
zookeeper
logstash
zookeeper:2181、2888、3888
kafka:9092
es:9200、9300、9100
kibana:5601
192.168.159.138es
kafka
zookeeper
nodejs
zookeeper:2181、2888、3888
kafka:9092
es:9200、9300、9100
kibana:5601
2. 技术选型
软件版本
jdk1.8.0_301
zookeeper3.4.10
kafka2.12-2.1.1
filebeat6.7.2
logstash6.7.2
elasticsearch6.7.2
kibana6.7.2
filebeat6.7.2
3. 全局配置
# 136节点、137节点、138节点同时操作:

# 1. 使用root用户进行登录
# 创建 /app目录
mkdir /app
如果/app已经存在忽略次操作

# 2. 创建用户
useradd app
passwd  app

# 密码:Elk123456
# 如果用户已经存在忽略次操作直接使用app用户登录即可 跳过3的第一个命令

# 赋予权限:
chown app.app /app -R

# 调整家目录:
vim /etc/passwd

# 切换app用户
su - app

4. 软件下载

zookeeper-3.4.10.tar.gz

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

kafka_2.12-2.1.1.tgz

wget https://archive.apache.org/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 /app
tar  -zxvf  jdk-8u301-linux-x64.tar.gz
2.3. 设置环境变量
  • 切换到root用户执行命令
su - root
  • 编辑文件
vi /etc/profile
  • 修改环境变量
export JAVA_HOME=/app/jdk1.8.0_301
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export 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 /app
tar -zxvf zookeeper-3.4.10.tar.gz
3.3. 创建目录
  • 创建data及logs目录
cd /app/zookeeper-3.4.10
mkdir dataDir
mkdir dataLogDir
3.4. 编辑配置
cd /app/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
3.5. 添加配置

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

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/app/zookeeper-3.4.10/data
dataLogDir=/app/zookeeper-3.4.10/data
clientPort=2181
server.1=192.168.159.136:2888:3888
server.2=192.168.159.137:2888:3888
server.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的id
broker.id=1
#绑定服务器ip
host.name=192.168.159.136
listeners=PLAINTEXT://192.168.159.136:9092
advertised.listeners=PLAINTEXT://192.168.159.136: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=/app/kafka_2.12-2.1.1/data/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
#设置日志留存策略
log.retention.hours=168
log.retention.bytes=10737420000
#日志段大小
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置zookeeper,ip表示zookeeper集群中各个节点ip
zookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181
zookeeper.connection.timeout.ms=6000
message.max.byte=52428880
group.initial.rebalance.delay.ms=0
#设置删除topic
auto.create.topics.enable = false
delete.topic.enable=true

log.cleanup.policy=delete
log.segment.delete.delay.ms=0
  • 137节点
#broker的id
broker.id=2
#绑定服务器ip
host.name=192.168.159.137
listeners=PLAINTEXT://192.168.159.137:9092
advertised.listeners=PLAINTEXT://192.168.159.137: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=/app/kafka_2.12-2.1.1/data/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
#设置日志留存策略
log.retention.hours=168
log.retention.bytes=10737420000
#日志段大小
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置zookeeper,ip表示zookeeper集群中各个节点ip
zookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181
zookeeper.connection.timeout.ms=6000
message.max.byte=52428880
group.initial.rebalance.delay.ms=0
#设置删除topic
auto.create.topics.enable = false
delete.topic.enable=true

log.cleanup.policy=delete
log.segment.delete.delay.ms=0
  • 138节点
#broker的id
broker.id=3
#绑定服务器ip
host.name=192.168.159.138
listeners=PLAINTEXT://192.168.159.138:9092
advertised.listeners=PLAINTEXT://192.168.159.138: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=/app/kafka_2.12-2.1.1/data/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
#设置日志留存策略
log.retention.hours=168
log.retention.bytes=10737420000
#日志段大小
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#配置zookeeper,ip表示zookeeper集群中各个节点ip
zookeeper.connect=192.168.159.136:2181,192.168.159.137:2181,192.168.159.138:2181
zookeeper.connection.timeout.ms=6000
message.max.byte=52428880
group.initial.rebalance.delay.ms=0
#设置删除topic
auto.create.topics.enable = false
delete.topic.enable=true

log.cleanup.policy=delete
log.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 /app
tar -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 => 5
          decorate_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 => 20000
    idle_flush_time => 10
    sniffing => true
    template_overwrite => true 
    }
}
7.4. 启动logstash
cd /app/logstash-6.7.2
nohup 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 /app
tar -zxvf elasticsearch-6.7.2.tar.gz
8.3. 编辑配置
vim  /app/elasticsearch-6.7.2/config/elasticsearch.yml
  • 修改配置文件config/elasticsearch.yml
  • 136节点
# ======================== Elasticsearch Configuration =========================
cluster.name: es-application
node.name: node-1
path.data: /app/elasticsearch-6.7.2/data
path.logs: /app/elasticsearch-6.7.2/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.159.136:9300", "192.168.159.137:9300","192.168.159.138:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE

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

  • 138节点
# ======================== Elasticsearch Configuration =========================
cluster.name: es-application
node.name: node-3
path.data: /app/elasticsearch-6.7.2/data
path.logs: /app/elasticsearch-6.7.2/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.159.136:9300", "192.168.159.137:9300","192.168.159.138:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.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 - app
cd /app/elasticsearch-6.7.2
bin/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

https://nodejs.org/en/download/

  • 下载
 wget https://nodejs.org/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/node
 ln -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.npm.taobao.org
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-master
cnpm 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 /app
 vim kibana-6.7.2-linux-x86_64/config/kibana.yml

末尾添加如下配置:
server.host为当前机器ip

server.port: 5601
server.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 /app
echo "123456789033333" >> test.log
cat 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 --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号