EFK集群

本文档详细介绍了如何在三台Linux服务器上搭建EFK(Elasticsearch, Fluentd, Kibana)集群。首先,关闭防火墙,安装Java环境,并部署Zookeeper和Kafka。接着,配置Zookeeper并启动服务,然后搭建Kafka并创建主题。在第一台服务器上安装Filebeat,配置并收集不同类型的日志。随后,在第二台服务器上安装Logstash,配置管道以处理不同类型的日志。最后,在第三台服务器上安装Elasticsearch和Kibana,完成集群的构建。通过模拟生产者和消费者验证了EFK集群的功能。" 112097278,10535136,自动驾驶中的采样规划算法:随机性与确定性采样,"['自动驾驶', '规划算法', '采样技术']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备三个两核两G大小的服务器

1.关闭防火墙

1

2

systemctl stop firewalld

setenforce 0

2.每一台安装jd环境

 

 

 查看是否安装成功 

java -version

出现版本号则为成功

 

 上传zookeeper和kafka(每一台都需要安装)

 

 将解压包解压后分别移出

zookeeper的解压包移到 /usr/local/zookeeper

kafka的解压包移到 /usr/local/kafka

1 mv kafka_2.11-2.2.0 /usr/local/kafka
2 mv zookeeper-3.4.14 /usr/local/zookeeper

 

 进入 /usr/local/zookeeper中 创建文件

cd /usr/local/zookeeper
mkdir {zkdatalog,zkdata}

进入/usr/loca/zookeeper/conf 复制一个配置文件 修改复制出来的配置文件

cd  /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

进入zoo.cfg配置文件中的注释行删掉      server 1 2 3 是三台ip虚拟机的ip

 

 

 保存退出后 在每一台主机上 进行myid的修改

第一台: echo “1” > /usr/local/zookeeper/zkdata/myid
第二台: echo "2" > /usr/local/zookerper/zkdata/myid
第三台: echo "3" > /usr/local/zookerper/zkdata/myid

 启动服务后,依次按着顺序启动zookeeper

cd /usr/local/zookeeper/conf
./zkServer.sh start

 

 启动后查看zookeeper的状态

 

1

2

cd /usr/local/zookeeper/bin

./zkServer.sh status

 

第一台:

 

 

 第二台:

 

 

 第三台:

 

 

 zookeeper搭建成功

 

kafka开始搭建   (每一台都进行这个操作)

cd /usr/local/kafka/config
vim server.properties

第一台:

1

2

3

broker.id=1

advertised.listeners=PLAINTEXT://kafka01:9092

zookeeper.connect=192.168.135.129:2181,192.168.135.130:2181,192.168.135.132:2181

第二台:

1

2

3

broker.id=2

advertised.listeners=PLAINTEXT://kafka02:9092

zookeeper.connect=192.168.135.129:2181,192.168.135.130:2181,192.168.135.132:2181

第三台

1

2

3

broker.id=3

advertised.listeners=PLAINTEXT://kafka03:9092

zookeeper.connect=192.168.135.129:2181,192.168.135.130:2181,192.168.135.132:2181

进入 /etc/hosts进行编辑 (每一台都是如此)

1

2

3

4

5

vim /etc/hosts

 

192.168.135.129 kafka01

192.168.135.130 kafka02

192.168.135.132 kafka03

启动kafka  (每一台虚拟机都是如此)

1

2

cd /usr/local/kafka/bin

./kafka-server-start.sh -daemon ../config/server.properties

查看端口  查看是否启动成功

1

ss -ntlp | grep 9092

 

 

kafka搭建成功

创建一个主题

1

2

cd /usr/local/kafka/bin

./kafka-topics.sh --create --zookeeper 192.168.135.130:2181(随便一个虚拟机的ip) --replication-factor 2 --partitions 3 <br>--topic aaa

这样就代表创建成功了aaa的这个主题

 

 查看我们都有哪些主题

1

./kafka-topics.sh --list --zookeeper 192.168.135.130

 

 

 

 模拟一个生产者在(第一台虚拟机)

1

./kafka-console-producer.sh  --broker-list 192.168.135.129:9092 --topic aaa

模拟一个消费者(第二台虚拟机)

1

./kafka-console-consumer.sh --bootstrap-server 192.168.135.130:9092 --topic aaa --from-beginning

呈现的结果:

第一台生产(输入一个字符)

 

 第二台消费(第一台生产什么第二台就消费出什么)

 

 我们为了方便可以做一个创建topic的脚本

在第一台虚拟机上:

1

2

3

4

5

6

7

vim kafka-create-topic.sh

 

 

#!/bin/bash

read -p "请输入一个topic主题:" topic

cd /usr/local/kafka/bin

./kafka-topics.sh --create --zookeeper 192.168.135.130:2181 --replication-factor 2 --partitions 3 <br>--topic $(topic)

创建一个新的yum源

1

2

3

4

5

6

7

8

9

10

cd /etc/yum.repo.d

vim filebeat.repo<br>将以下代码赋值到filebeat.repo里<br>

[filebeat-6.x]

name=Elasticsearch 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

保存退出后即可下载filebeat

1

yum -y install filebeat

编辑filebeat配置文件

vim /etc/filebeat/filebeat.yml         (paths这里如果你有nginx才可以写)

 

 

 nginx是创建的一个主题

 

 

 

 

 

 

 上面提到nginx  如果没有nginx 可以yum安装一个nginx

1

2

yum -y install epel*

yum -y install nginx

启动nginx和filebeat

1

2

3

systemctl start filebeat

systemctl enable filebeat

systemctl start nginx

可以给nginx生产一些数据(第一台操作)

1

yum -y install httpd-tools<br>ab -n1000 -c 200 http://127.0.0.1/ccc  (可多执行几遍)<br>curl -I 192.168.135.129:80<br>

在第二台上消费

1

./kafka-console-consumer.sh --bootstrap-server 192.168.135.130:9092 --topic nginx --from-beginning

  出现以下东西则为成功

 现在开始收集多个日志 system  nginx  secure 和日志 编辑filebeat的配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#讲filebeat的input改成下面的样子

 

filebeat.inputs:

#这个是收集nginx的日志

type: log

  enabled: true

  paths:

    /var/log/nginx/*.log  //nginx的日志文件

  fields:

        log_topics: nginx5  //这个是收集nginx的topic

 

#这个是收集system的日志

type: log

  enabled: true

  paths:

    /var/log/messages   //system的日志文件目录

  fields:

        log_topics: messages  //这个是收集system的topic

 

#收集secure的日志

type: log

  enabled: true

  paths:

    /var/log/secure  //secure的日志文件

  fields:

        log_topics: secure  //这个是收集secure的topic

 

output.kafka:

  enabled: true

  hosts: ["192.168.18.140:9092","192.168.18.141:9092","192.168.18.142:9092"]

  topic: '%{[fields][log_topics]}'

  注意:一点更要创建三个topic 就是上面的配置文件提到的topic  可以使用上面的脚本创建topic   重启filebeat 

  systemctl restart filebeat

  我是用了三台服务器来做EFK集群 

接下来在第二胎安装logstash   在第三胎安装ES集群(就是elasticsearch和kibana)

安装

1

2

3

4

5

安装logstash在第二台

rpm -ivh logstash-6.6.0.rpm

安装 kibana 和elasticsearch

rpm -ivh elasticsearch-6.6.2.rpm

rpm -ivh kibana-6.6.2-x86_64.rpm

 编辑elasticsearch的配置文件

1

2

3

4

vim /etc/elasticsearch/elasticsearch.yml

############################

network.host: 192.168.18.142

http.port: 9200

启动elasticsearch

1

systemctl restart elasticsearch

  

编辑kibana的配置文件

1

2

3

4

5

6

7

8

vim /etc/kibana/kibana.yml

######################

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://192.168.18.142:9200"]

 

然后启动kibana

systemctl restart kibana

 现在开始 编写logstash的三个配置文件

cd  /etc/logstash/conf.d

现在是messages的  vim messages.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

input {

        kafka {

        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]

        group_id => "logstash"

        topics => "messages"

         consumer_threads => 5

        }

}

output {

        elasticsearch {

                hosts => "192.168.18.142:9200"

                index => "messages-%{+YYYY.MM.dd}"

        }

}

 现在是nginx的  vim nginx.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

input {

        kafka {

        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]

        group_id => "logstash"

        topics => "nginx5"

         consumer_threads => 5

        }

}

filter {

    grok {

        match => { "message" => "%{NGINXACCESS}" }

    }

}

output {

        elasticsearch {

                hosts => "192.168.18.142:9200"

                index => "nginx1_log-%{+YYYY.MM.dd}"

       }

}

  现在是secure的   vim secure.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

input {

        kafka {

        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]

        group_id => "logstash"

        topics => "secure"

         consumer_threads => 5

        }

}

output {

        elasticsearch {

                hosts => "192.168.18.142:9200"

                index => "secure-%{+YYYY.MM.dd}"

 

        }

}

 添加管道

1

2

3

4

5

6

7

8

vim /etc/logstash/pipelines.yml

 

- pipeline.id: messages

  path.config: "/etc/logstash/conf.d/messages.conf"

- pipeline.id: nginx

  path.config: "/etc/logstash/conf.d/nginx.conf"

- pipeline.id: secure

  path.config: "/etc/logstash/conf.d/secure.conf"

 正则匹配

 

cd /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns

vim nginx_access

URIPARAM1 [A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
NGINXACCESS %{IPORHOST:client_ip} (%{USER:ident}|- ) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} (%{NOTSPACE:request}|-)(?: HTTP/%{NUMBER:http_version})?|-)" %{NUMBER:status} (?:%{NUMBER:bytes}|-) "(?:%{URI:referrer}|-)" "%{GREEDYDATA:agent}"

 

 重启logstash                  systemctl restart logstash

可以在第二台机器上查看模拟消费者的状态  messages的

执行下面的命令可以显示出日志内容就是成功

1

2

cd /usr/local/kafak/bin

./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic messages --from-beginning<br><br> 

 

 

可以在第二台机器上查看模拟消费者的状态  secure的

执行下面的命令可以显示出日志内容就是成

1

2

cd /usr/local/kafak/bin

./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic secure --from-beginning

  

 

 

可以在第二台机器上查看模拟消费者的状态  nginx的   nginx的可以生产一些日志文件 创建一些访问记录

执行下面的命令可以显示出日志内容就是成功

1

2

cd /usr/local/kafak/bin

./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic nginx5  --from-beginning

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值