ELK + filebeat集群部署

一、ELK简介

1. Elasticsearch

Elasticsearch是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功能的组合

2.Logstash

Logstash是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

3.Kibana

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

4.filebeat

Filebeat是用于转发和采集日志数据的轻量级服务。能监视指定的日志文件或位置,收集日志事件,并将它们转发到Logstash或elasticsearch。

如果对于日志不需要进行过滤分析的,可以直接使用filebeat。
如果需要对日志进行过滤分析, 可以使用filebeat+Logstash最合适,如果单独使用Logstash,多台机都需部署Logstash,每台机消耗资源大,filebeat+Logstash相结合,每台机部署filebeat进行数据采集, 一台机部署Logstash作为中心进行接收数据处理以及存储到不同的地方。

5.ELK版本信息为7.1.1,你可以从官网下,也可以直接从下面地址下载:

1 https://artifacts.elastic.co/downloads/logstash/logstash-7.1.1.tar.gz

2 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz

3 https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-linux-x86_64.tar.gz

官网地址:https://www.elastic.co/cn/downloads/

二、环境准备

1.三台Linux服务器,系统统一

1 [root@ELK1 ~]# cat /etc/redhat-release

2 CentOS Linux release 7.6.1511 (Core)

2.角色划分

node IP 节点类型
elk1 10.210.13.3 数据、主节点(安装elasticsearch、logstash、kabana、filebeat)
elk2 10.210.13.15 数据节点(安装elasticsearch、filebeat)
elk3 10.210.13.34 数据节点(安装elasticsearch、filebeat)

3.安装jdk11

这里安装jdk11,如果安装9或者8会报错,具体可看官方文档:
下载安装包

$ wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz

解压到指定目录

$ tar -xzvf jdk-11.0.4_linux-x64_bin.tar.gz -C /usr/local/jdk

4.配置环境变量

1 #vim /etc/profile
2 JAVA_HOME=/usr/local/jdk/jdk-11.0.1
3 CLASSPATH=$JAVA_HOME/lib/
4 PATH=$PATH:$JAVA_HOME/bin
5 export PATH JAVA_HOME CLASSPATH

5.使环境变量生效

$ source /etc/profile

6.查看

$ java -version

三、安装Elasticsearch(简称ES)集群

1.下载及解压

下载

1 $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz

创建目录

2 $ mkdir -p /home/elk

解压

3 $ tar -zvxf elasticsearch-7.1.1-linux-x86_64.tar.gz -C /home/elk

2.创建用户及授权

ElasticSerach要求以非root身份启动,在每个节点创建用户及用户组

1 $ groupadd es
2 $ useradd es -g es

在每个节点上创建数据data和logs目录:

1 $ mkdir -p /data/es/{data,logs}
2 $ chown -R es:es /data/es/
3 $ chown -R es:es /home/elk/elasticsearch-7.1.1

3.修改elasticsearch.yml配置文件

1 $ vim /home/elk/elasticsearch-7.1.1/config/elasticsearch.yml

2 $ path.data: /data/es/data #数据
3 $ path.logs: /data/es/logs #日志
4 $ cluster.name: ELK-cluster # 集群中的名称
5 $ cluster.initial_master_nodes: ["ELK1","ELK2","ELK3"] #主节点
6 $ node.name: ELK1 # 该节点名称,与前面配置hosts保持一致
7 $ node.master: true # 意思是该节点是否可选举为主节点
8 $ node.data: true # 表示这不是数据节点
9 $ network.host: 0.0.0.0 # 监听全部ip,在实际环境中应为一个安全的ip
10 $ http.port: 9200 # es服务的端口号,Http协议主要用于外部通讯
11 $ transport.tcp.port: 9300 # ES集群之间是通过9300进行通讯,Tcp协议jar之间就是通过tcp协议通讯
11 $ http.cors.enabled: true
12 $ http.cors.allow-origin: "*"
13 $ discovery.zen.ping.unicast.hosts: ["10.210.13.3", "10.210.13.15", "10.210.13.34"] # 配置自动发现
14 $ discovery.zen.minimum_master_nodes: 2 #防止集群“脑裂”,需要配置集群最少主节点数目,通常为 (主节点数目/2) + 1

4.修改elasticsearch的JVM内存

elasticesearch在实际生产中非常消耗cpu,需要将初始申请的JVM内存调高,默认是1G,机器内存的一半

1 $ vim /home/elk/elasticsearch-7.1.1/config/jvm.options

2 #修改这两行
-Xms4g #设置最小堆的值为4g
-Xmx4g #设置组大堆的值为4g

5.设置每个进程最大同时打开文件数

1 $ vim/etc/security/limits.conf

2 es hard nofile 65536
3 es soft nofile 65536
4 * soft nproc 4096
5 * hard nproc 4096

6.设置用户拥有的内存权限大小

1 $ vim /etc/sysctl.conf
2 vm.max_map_count=655360
3 $ sysctl -p

7.启动elasticsearch

其它两个节点也类似配置,只需要修改下node.name:即可,在配置好相应的节点后,首先启动主节点,然后在启动相应节点

1 $ su es
Last login: Mon Aug 12 09:58:23 CST 2021 on pts/1

2 $ cd /home/elk/elasticsearch-7.1.1/bin/
3 $ ./elasticsearch -d

查看端口号,分别为9200和9300

1 $ netstat -lntp

8.安装分词插件

1 $ cd /home/elk/elasticsearch-7.1.1/bin/
2 $ elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip

四.安装head插件

由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。

1.去 https://nodejs.org/en/download/ 下载需要的nodejs 包或者以下地址下载

1 $ cd /home && mkdir elasticsearch-head-master && cd elasticsearch-head-master
2 $ wget https://nodejs.org/dist/latest/node-v15.8.0-linux-x64.tar.xz
3 $ xz -d node-v15.8.0-linux-x64.tar.xz
4 $ tar xvf node-v15.8.0-linux-x64.tar

2.配置并生效

1 $ vi /etc/profile
2 export NODE_HOME=/usr/local/node-v15.8.0-linux-x64
3 export PATH=$PATH:$NODE_HOME/bin
4 $ source /etc/profile

3.查看版本验证

1 $ node -V
2 $ npm -V

注:npm如不行需安装

1 $ cd /home/elasticsearch-head-master
2 $ npm install
可能报错安装以下内容
3 $ npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
4 $ npm install
5 $ npm audit fix
6 $ npm audit fix --force
7 $ npm audit

4.设置软链接

1 $ ln -s /usr/local/node-v15.8.0-linux-x64/bin/npm   /usr/local/bin/ 
2 $ ln -s /usr/local/node-v15.8.0-linux-x64/bin/node   /usr/local/bin/

在head目录下安装head所需要的依赖包,使用淘宝的镜像仓库加快安装速度

5.安装淘宝镜像

1 $ npm install -g cnpm --registry=https://registry.npm.taobao.org

6.下载安装head

1 $ https://github.com/mobz/elasticsearch-head
或者
2 $ wget https://github.com/mobz/elasticsearch-head/archive/master.zip
3 $ unzip master.zip

在head目录下执行cnpm install 安装依赖

1 $ cnpm install

启动head插件

1 $ npm start

修改Gruntfile.js文件

1 options:
2 hostname: '',
3 port:9100,
4 base: '
',
5 keepalive: true

修改_sit/app.js

1 init: function(parent) {
2 this._super();
3 this.prefs = services.Preferences.instance();
4 this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri")||"http://10.210.13.3:9200";

修改完成后,重新启动es,在head目录,启动head,npm start

7.后面2台主机只需要安装elasticsearch,无需安装head,安装步骤同上

五、安装logstash

1.下载及解压

1 $ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.1.tar.gz
2 $ tar -zvxf logstash-7.1.1.tar.gz -C /home/elk
3 $ mkdir -p /data/logstash/{logs,data} #创建数据及日志目录

2.修改logstash配置文件

1 $ vim /home/elk/logstash-7.1.1/config/logstash.yml
2
3 http.host: "ELK1"
4 path.data: /data/logstash/data
5 path.logs: /data/logstash/logs
6 xpack.monitoring.enabled: true #kibana监控插件中启动监控logstash
7 xpack.monitoring.elasticsearch.hosts: ["10.210.13.3:9200","10.210.13.15:9200","10.210.13.34:9200"]

3.创建配置文件

1 $ vim /home/elk/logstash-7.1.1/config/logstash.conf
2
3 input {
4 beats {
5 port => 5044
6 }
7 }
8 output {
9 stdout {
10 codec => rubydebug
11 }
12 elasticsearch {
13 hosts => ["10.210.13.3:9200","10.210.13.15:9200","10.210.13.34:9200"]
14 }
15 }

4.启动服务

1 $ cd /home/elk/logstash-7.1.1/
2 $ nohup bin/logstash -f config/logstash.conf &

六、安装kibana

1.下载及解压

1 $ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-linux-x86_64.tar.gz
2 $ tar xf kibana-7.1.1-linux-x86_64.tar.gz -C /home/elk
3 $ mkdir -p /data/kibana/logs/

2.修改kibana配置文件

1 $ vim /home/elk/kibana-7.1.1-linux-x86_64/config/kibana.yml
2
3 server.port: 5601 # 配置kibana的端口
4 server.host: 10.210.13.3 # 配置监听ip(设置本地ip使用nginx认证登录)
5 elasticsearch.hosts: ["http://10.210.13.3:9200","http://10.210.13.15:9200","http://10.210.13.34:9200"] # 配置es服务器的ip
6 logging.dest: /data/kibana/logs/kibana.log # 配置kibana的日志文件路径,默认messages
7 i18n.locale: "zh-CN" #配置中文语言

3.启动服务

1 $ cd /home/elk/kibana-7.2.1-linux-x86_64/
2 $ nohup bin/kibana --allow-root &

六、安装filebeat(三台都安装)

1.下载及解压

1 $ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-linux-x86_64.tar.gz
2 $ tar -zvxf filebeat-7.1.1-linux-x86_64.tar.gz -C /home/elk/

2.修改filebeat配置文件

1 $ vim /home/elk/filebeat-7.1.1-linux-x86_64/filebeat.yml
2
3 #=========================== Filebeat inputs =============================
4 filebeat.inputs:
5 - type: log
6 enabled: true
7 paths:
8 - /var/log/nginx/access.log
9 fields:
10 document_type: nginx
11

12 #============================= Filebeat modules ===============================
13 filebeat.config.modules:
14 path: ${path.config}/modules.d/*.yml
15 reload.enabled: false
16
17
18 #==================== Elasticsearch template setting ==========================
19 setup.template.settings:
20 index.number_of_shards: 1
21

22 #============================== Kibana =====================================
23 setup.kibana:
24 host: "10.210.13.3:5601"
25
26
27 #----------------------------- Logstash output --------------------------------
28 output.logstash:
29 hosts: ["10.210.13.3:5044"]
30

31 #================================ Processors =====================================
32 processors:
33 - add_host_metadata: ~
34 - add_cloud_metadata: ~

如果需要添加多个日志,只需要添加

1 - type: log
2 enabled: true
3 paths:
4 - /var/log/*.log

3.启动filebeat

1 $ cd /home/elk/filebeat-7.1.1-linux-x86_64/
2 $ nohup ./filebeat -e -c filebeat.yml &

通过tail -f nohup.out 可以看到我们的服务已经启动!

posted @ 2021-02-09 14:25  記憶や空白  阅读(357)  评论(0编辑  收藏  举报