ELK+kafka服务搭建

ELK+Kafka安装手册

目录

ELK+Kafka安装手册

一:说明

二:所需软件

1:zookeeper

2:Kafka

3:elasticsearch

4:logstash

5:kibana

6:其他软件

三:安装步骤

安装Kafka+zookeeper

Kafka+zookeeper集群

安装elasticsearch

安装kibana

安装logstash


一:说明

ELKElasticsearchLogstashKibana三部分组件组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用。

kibana 是一个开源和免费的工具,它可以为 Logstash ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

Kafka是做高并发量的消息队列中间件。

二:所需软件

1:zookeeper

需要版本:apache-zookeeper-3.5.9-bin.tar.gz

下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.5.9/

2:Kafka

需要版本:kafka_2.12-2.7.0.tgz

下载地址:Apache Kafka

以上是kafka环境必备的两个软件。

3:elasticsearch

版本:elasticsearch-7.8.0-linux-x86_64.tar.gz

下载地址:https://elasticsearch.cn/download/

4:logstash

版本:logstash-7.8.0.zip

下载地址: https://www.elastic.co/cn/downloads/logstash

5:kibana

版本:kibana-7.8.0-linux-x86_64.tar.gz

下载地址: https://www.elastic.co/cn/start

6:其他软件

Jdk版本 1.8

Offsetexplorer

版本:offsetexplorer_64bit.exe

下载地址: https://www.kafkatool.com/download.html

三:安装步骤

安装Kafka+zookeeper

安装zookeeper

先把zookeeper包放到指定目录下(如:/mnt/hmzhao/soft/elk)。

解压包:tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

修改包名:mv apache-zookeeper-3.5.9-bin zookeeper

修改配置文件:  

先进入配置文件下:cd /zookeeper/config

复制一个文件:cp zoo-sample.cfg zoo.cfg

修改相应参数:vim zoo.cfg

   修改:dataDir=/tmp/zookeeper 改成你需要放置的位置/mnt/hmzhao/soft/elk/zookeeper/data。(需要创建下data文件:makir data)。

  在最后一行后面添加:admin.serverPort=8818

在data目录下执行:touch myid   

然后执行:im myid  里面输入一个数字:1保存。

启动服务:进入bin目录下执行:./zkServer.sh start.  

如果这个时候看到如下结果。

不要急,到logs目录下看下,如果启动成功。执行如下语句:ps –ef | grep zookeeper。如果服务存在,则启动正常了。

安装kafka

    kafka包放到指定目录下(如:/mnt/hmzhao/soft/elk)。

解压包:tar -zxvf kafka_2.12-2.7.0.tgz

修改包名:mv kafka_2.12-2.7.0 kafka

修改配置文件:

  修改server.properties 执行:vim server.properties

将:log.dirs=/tmp/kafka-logs 修改程我们存放的目录(/mnt/hmzhao/soft/elk/kafka/data)

将:listeners=PLAINTEXT://:9092 改成listeners=PLAINTEXT://你的服务ip:9092

将:zookeeper.connect=localhost:2181 改成zookeeper.connect=你的服务ip:2181

启动服务

  执行脚本:./kafka-server-start.sh -daemon ../config/server.properties

说明:这里的-daemon代表守护进程,不因客户端关闭而关闭

到目前位置kafka相关的就完成了。

安装offexplorer 连接kafka。如果连接成功,则完成部署。接下来部署:elasticsearch

Kafka+zookeeper集群

在上面的基础上我们需要配置集群,才能保证高可用。所以需要使用集群。

Zookeeper集群

假如你由四台机器

分别为A,B,C,D当然也可以在一台机器上部署伪集群(下面就是部署伪集群)。

(1):创建目录

上传资源包至/mnt/csb/public/elk目录下

 #创建集群目录 cd /mnt/csb/public/elk

mkdir zookeeper_2187/

mkdir zookeeper_2188/

mkdir zookeeper_2189/

(2):拷贝资源包

#复制资源包到集群目录

    cd  /mnt/csb/public/elk

cp zookeeper-3.4.12.tar.gz ./zookeeper_2187/

cp zookeeper-3.4.12.tar.gz ./zookeeper_2188/

cp zookeeper-3.4.12.tar.gz ./zookeeper_2189/

(3): 解压资源包

#解压资源包

cd /mnt/csb/public/elk

tar -xzvf ./zookeeper_2187/zookeeper-3.4.12.tar.gz

tar -xzvf ./zookeeper_2188/zookeeper-3.4.12.tar.gz

tar -xzvf ./zookeeper_2189/zookeeper-3.4.12.tar.g

(4): 修改配置文件zoo.cfg

修改zookeeper_2187配置文件

#拷贝配置文件

 cd /mnt/csb/public/elk/zookeeper_2187/conf

 cp ./zoo_sample.cfg zoo.cfg

#编辑zoo.cfg配置文件

vim zoo.cfg

#集群配置项

dataDir= /mnt/csb/public/elk/zookeeper_2187/datas

clientPort=2187

server.0=172.31.131.21:20880:30880

server.1=172.31.131.21:20881:30881

 server.2=172.31.131.21:20882:30882

admin.serverPort=8818

修改zookeeper_2188配置文件

#拷贝配置文件

 cd /mnt/csb/public/elk/zookeeper_2188/conf

cp ./zoo_sample.cfg zoo.cfg

#编辑zoo.cfg配置文件

 vim zoo.cfg

#集群配置项

dataDir=/mnt/csb/zookeeper_2188/datas

clientPort=2188

  server.0=172.31.131.21:20880:30880

  server.1=172.31.131.21:20881:30881

  server.2=172.31.131.21:20882:30882



admin.serverPort=8819

修改zookeeper_2189配置文件

#拷贝配置文件

 cd /mnt/csb/public/elk/zookeeper_2189/conf

cp ./zoo_sample.cfg zoo.cfg

#编辑zoo.cfg配置文件

 vim zoo.cfg

#集群配置项

dataDir=/mnt/csb/public/elk/zookeeper_2189/datas

clientPort=2189

  server.0=172.31.131.21:20880:30880

  server.1=172.31.131.21:20881:30881

  server.2=172.31.131.21:20882:30882



admin.serverPort=8820

说明

1、这里是在一台服务器上面部署的伪集群

2、配置项server.0=172.31.131.21:20880:30880server.1=172.31.131.21:20881:30881 server.2=172.31.131.21:20882:30882server.0server.1server.2 是指整个zookeeper集群 内的节点列表。

3server的配置规则为:server.N=YYY:A:B

4N表示服务器编号 5YYY表示服务器的IP地址 6ALF通信端口,表示该服务器与集群中的leader交换的信息的端口

7B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服 务器会相互通信,选择出新的leader 8、一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所 采用的为伪集群时,IP地址都一样,只能是A端口和B端口不一样。

(5): 创建集群data目录和myid文件

各节点配置文件zookeeper.properties中有一项dataDir需要手动创建并且目录需要创建文件 myid,文件内容只有一个数字,代表zookeeper节点的唯一id,即要确保此id在集群内唯一,且要跟配 置文件中的server.0、server.1、server.2 对应上。

zookeeper_2187节点

#创建myid文件,内容为节点序号0、1或者2

   cd /mnt/csb/public/elk/zookeeper_2187

   mkdir datas

   touch myid

vim myid 0

zookeeper_2188节点

#创建myid文件,内容为节点序号0、1或者2

   cd /mnt/csb/public/elk/zookeeper_2188

   mkdir datas

   touch myid

vim myid 1

zookeeper_2189节点

#创建myid文件,内容为节点序号0、1或者2

   cd /mnt/csb/public/elk/zookeeper_2189

   mkdir datas

   touch myid

vim myid 2

最后一个一个启动就行了。

Kafka集群

Kafka的集群和zookeeper类似。只是配置文件有些不同

(1):创建集群目录

上传资源包至/iflytek/pcliu/kafka2.0目录下

 #创建集群目录

cd /mnt/csb/public/elk

mkdir kafka2.0_9095/

mkdir kafka2.0_9096/

mkdir kafka2.0_9097/

(2):拷贝资源包

#复制资源包到集群目录

 cd /mnt/csb/public/elk

cp ./kafka_2.12-2.0.1.gz ./kafka2.0_9095/

cp ./kafka_2.12-2.0.1.gz ./kafka2.0_9096/

cp ./kafka_2.12-2.0.1.gz ./kafka2.0_9097/

(3):解压资源包

cd /mnt/csb/public/elk

tar -xzvf ./kafka2.0_9095/kafka_2.12-2.0.1.gz

tar -xzvf ./kafka2.0_9096/kafka_2.12-2.0.1.gz

tar -xzvf ./kafka2.0_9097/kafka_2.12-2.0.1.gz

(4):修改配置文件

修改kafka2.0_9095/config/server.properties的信息

#整个集群内唯一id号,整数,一般从0开始 当前为0

broker.id=0

#监听地址协议+ip+端口,这里配置SASL_PLAINTEXT协议 #listeners=PLAINTEXT://172.31.131.21:9095

listeners=SASL_PLAINTEXT://172.31.131.21:9095

port=9095

host.name=172.31.131.21

#存储日志文件位置,需要手动创建,后面会提到

log.dirs=/mnt/csb/public/elk/kafka_9095/data

  #分区数,一般配置为节点数

   num.partitions=3

#ZK集群(根据上面配置的zookeepeer集群地址)

  zookeeper.connect=172.31.131.21:2187,172.31.131.21:2188,172.31.131.21:2189

修改kafka2.0_9096/config/server.properties的信息

#整个集群内唯一id号,整数,一般从0开始 当前为1

broker.id=1

#监听地址协议+ip+端口,这里配置SASL_PLAINTEXT协议 #listeners=PLAINTEXT://172.31.131.21:9096

listeners=SASL_PLAINTEXT://172.31.131.21:9096

port=9096

host.name=172.31.131.21

#存储日志文件位置,需要手动创建,后面会提到

log.dirs=/mnt/csb/public/elk/kafka_9096/data

  #分区数,一般配置为节点数

   num.partitions=3

#ZK集群(根据上面配置的zookeepeer集群地址)

  zookeeper.connect=172.31.131.21:2187,172.31.131.21:2188,172.31.131.21:2189

修改kafka2.0_9097/config/server.properties的信息

#整个集群内唯一id号,整数,一般从0开始 当前为2

broker.id=2

#监听地址协议+ip+端口,这里配置SASL_PLAINTEXT协议 #listeners=PLAINTEXT://172.31.131.21:9097

listeners=SASL_PLAINTEXT://172.31.131.21:9097

port=9097

host.name=172.31.131.21

#存储日志文件位置,需要手动创建,后面会提到

log.dirs=/mnt/csb/public/elk/kafka_9097/data

  #分区数,一般配置为节点数

   num.partitions=3

#ZK集群(根据上面配置的zookeepeer集群地址)

  zookeeper.connect=172.31.131.21:2187,172.31.131.21:2188,172.31.131.21:2189

(5):启动服务

在各个服务的bin下执行

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

安装elasticsearch

elasticsearch包放到指定目录下(如:/mnt/hmzhao/soft/elk)。

解压包:tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz

修改包名:mv elasticsearch-7.8.0 elasticsearch

修改配置文件:

  修改elasticsearch.yml 执行:vim elasticsearch.yml

  cluster.name: my-application  改成  cluster.name: ealsticsearch

  path.data: /path/to/data 改成: 你存放数据的地址(/mnt/csb/public/elk/elasticsearch/data)

path.logs: /path/to/logs  改成:你存放日志数据的地址(/mnt/csb/public/elk/elasticsearch/data/log)

network.host: 192.168.0.1 改成 你的ip

http.port: 9200 最好不变

discovery.seed_hosts: ["host1", "host2"] 改成 discovery.seed_hosts: ["你的ip"]

cluster.initial_master_nodes: ["node-1", "node-2"] 改成 cluster.initial_master_nodes: ["node-1"]

这样你的配置就弄好了。接下来,准备启动服务。

因为,root不允许直接启动。需要创建新用户和并且给用户授权。

(1)以root用户来创建新的用户 , groupadd 添加一个用户组

[root@localhost /]# groupadd elk

(2)添加一个用户,-g是在用户组下 -p是密码(用户为elk,密码elk)

[root@localhost /]# useradd elk -g elk -p elk

(3)进入es的安装目录/mnt/hmzhao/soft/elk/elasticsearch

(4)给用户elk授权

[root@localhost elasticsearch]# chown -R elk:elk elasticsearch

  

(5):启动服务:在bin目录下启动./elasticsearch

但是出现错误:

    could not find java in JAVA_HOME at /mnt/csb/public/jdk1.8.0_151/bin/java

出现这样的原因是jdk的安装包的权限是csb 。但是我们elasticsearch的权限是新建的elk。所以没发赋权。

解决方法:重新赋权, chown -R csb:csb elasticsearch   

然后重新启动。但是还是出错。

ERROR: [1] bootstrap checks failed

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

出现如上的原因是分配不行。

解决方法:查看机器内存信息

cat /proc/meminfo

  1. 修改linux系统参数

vim /etc/security/limits.conf

#添加以下内容

*  soft    nproc  65536
*  hard    nproc  65536
*  soft    nofile   65536
*  hard    nofile  65536
* soft memlock unlimited
* hard memlock unlimited

*:所有用户

soft nproc: 可打开的文件描述符的最大数(软限制)

hard nproc:可打开的文件描述符的最大数(硬限制)

soft nofile:单个用户可用的最大进程数量(软限制)

hard nofile:单个用户可用的最大进程数量(硬限制)

特别说明:如果不生效,可能系统不支持* ,把所有*改成你的用户名 elk

最简单方法,临时生效:ulimit -n 65535

vim  /etc/sysctl.conf

#添加以下内容

vm.max_map_count= 262144

vim  /etc/security/limits.d/90-nproc.conf 

#修改以下内容

* soft nproc 2048

使命令生效

sysctl –p

若出现error: "–p" is an unknown key则执行以下语句

 modprobe bridge

 lsmod |grep bridge

再执行

sysctl –p

在重新启动。出现:started这样标志。然后在网页输入:

http://你的ip:9200/

出现es的相关数据,恭喜。你配置好了。

注意:由于可能你在服务器上按照的java不对或者不合适,但是你可以使用elk自带的java.

在elasticsearch/bin下的elasticsearch-env.bat中的第40行左右屏蔽掉如下数据。

如果使用elasticsearch-head中出现如下图情况

 这是因为elasticsearch.yml中配置文件中添加

http.cors.enabled: true
http.cors.allow-origin: "*"

这样就可以使用了。

设置开机启动elasticsearch

参考:ES 启动 warning future versions of Elasticsearch will require Java 11_走码观花-CSDN博客

安装kibana

将包放到/mnt/csb/public/elk下

解压包 tar –zxvf kibana-7.8.0-linux-x86_64.tar.gz

修改包名: mv kibana-7.8.0-linux-x86 kibana

由于kibana不能用root启动。所以用其他账号csb

赋权:chown –R csb:csb kibana

在config文件下修改kibana.config

server.port: 5601



server.host: "你的服务器ip"


elasticsearch.hosts: ["http://es的ip:9200"]

启动:cd /bin

      ./kibana &

这样就启动成功了。

安装logstash

在ELK+kafka中 logstash是一个承上启下的作用。他是把kafka的数据转移到elasticsearch

   (1):将包logstash-7.8.0.zip放到/mnt/csb/public/elk下。

(2):解压:unzip logstash-7.8.0.zip

 (3):修改名称: mv logstash-7.8.0 logstash

  (4)新增conf文件:

进入logstash/bin目录下。

          新建一个logstash.conf 也就是:vim logstash.conf

    

(5):启动 在logstash/bin下执行

./logstash -f logstash.conf &

如果关闭后还是不行。可以执行

nohupt bin/logstash -f logstash.conf &

参考:SpringBoot+ELK+Kafaka

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值