@ELK集群环境部署搭建

在这里插入图片描述

ELK部署搭建

1.ELK简述

ELK概述:

ELK是三个开源软件的缩写简称 ,分别为:Elasticsearch , Logstash, Kibana , 它们都是开源软件;
ELK作为一个日志收集和检索系统,ELK 平台可以用于实现日志收集、日志搜索和日志分析;
elk集群还可以包含FileBeat组件,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具

ELK相关组件详解:

  • Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
  • Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
  • Filebeat隶属于Beats。目前Beats包含四种工具:
    Packetbeat(搜集网络流量数据)
    Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
    Filebeat(搜集文件数据)
    Winlogbeat(搜集 Windows 事件日志数据

ELK 的使用流程为
系统种的服务及应用产生的数据,logstash 从应用收集数据,将数据放入 es,使用 kibana 进行数据展示以及分析。

2.ELK功能介绍

ELK是一套完整的集中式日志分析方案,需要包含以下几个主要特点:

收集-能够采集多种来源的日志数据
传输-能够稳定的把日志数据传输到中央系统
存储-如何存储日志数据
分析-可以支持 UI 分析
警告-能够提供错误报告,监控机制

ELK提供了一整套解决方案,并且全部是开源软件,组件之间互相配合使用,完美衔接,高效的满足了很多场合的应用,目前主流的一种日志系统方案

3.ELK组件官方下载

相关组件:
【Filebeat】
【Logstash】
【Elasticsearch】
【Kibana】

官方文档:
【中文社区 】

# 相关组件详细文档:
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html
https://www.elastic.co/guide/en/logstash/5.6/index.html
https://www.elastic.co/guide/en/kibana/5.5/index.html

ELK集群组件安装:

4.ELK部署安装

在这里插入图片描述

1)elk组件下载

#elk部署软件包,官方下载(当前为elk8.3.1版本)
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.3.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.3.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.1-linux-x86_64.tar.gz、





#查看下载安装包
ll -h |grep 8.3
-rw-r--r--  1 root root 515M 630 21:41 elasticsearch-8.3.1-linux-x86_64.tar.gz
-rw-r--r--  1 root root 258M 630 21:50 kibana-8.3.1-linux-x86_64.tar.gz
-rw-r--r--  1 root root 326M 630 21:53 logstash-8.3.1-linux-x86_64.tar.gz

2)es部署安装

#创建es安装工作目录
mkdir -p /usr/local/elk
ls -d /usr/local/elk
/usr/local/elk



#把下载的安装包解压到指定的目录(解压到创建的es共组目录)
tar zxvf elasticsearch-8.3.1-linux-x86_64.tar.gz -C /usr/local/elk/




#查看es服务文件
ls /usr/local/elk
elasticsearch-8.3.1
ls /usr/local/elk/elasticsearch-8.3.1/
bin  config  data  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc




#es不能以root用户去启动,创建es管理用户
useradd es



#es文件修改所属用户
chown -R es:es /usr/local/elk





#切换用户,查看文件
su - es
ll -ld /usr/local/elk/
drwxr-xr-x 3 es es 33 73 23:56 /usr/local/elk/



#使用es用户,查看es文件所属用户及所属组
ll -h /usr/local/elk/elasticsearch-8.3.1/
总用量 880K
drwxr-xr-x  2 es es 4.0K 630 02:46 bin
drwxr-xr-x  4 es es  253 74 00:10 config
drwxrwxr-x  5 es es   87 74 01:04 data
drwxr-xr-x  8 es es   96 630 02:46 jdk
drwxr-xr-x  5 es es 4.0K 630 02:46 lib
-rw-r--r--  1 es es 3.8K 630 02:39 LICENSE.txt
drwxr-xr-x  2 es es 4.0K 74 00:58 logs
drwxr-xr-x 66 es es 4.0K 630 02:47 modules
-rw-r--r--  1 es es 855K 630 02:43 NOTICE.txt
drwxr-xr-x  2 es es    6 630 02:44 plugins
-rw-r--r--  1 es es 2.7K 630 02:39 README.asciidoc





#修改es启动配置文件(启用如下配置即可)
egrep "^[^#]" /usr/local/elk/elasticsearch-8.3.1/config/elasticsearch.yml
cluster.name: my-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]







#启动es服务
/usr/local/elk/elasticsearch-8.3.1/bin/elasticsearch

安装es时,未对系统配置文件做优化调整,会出现以下错误:
ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch.
bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
具体问题解析如下所示:

#问题一:主要是文件权限配置的问题
es用户拥有的可创建文件描述的权限太低,至少需要如错误问题所述的65536
问题解决:
使用root用户,添加如下内容,配置最小文件权限
egrep "^[^#]" /etc/security/limits.conf
*       hard    nofile  65536
*       soft    nofile  65536
es      -       nproc   65536
#查看确认修改配置是否生效
ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3818
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65536           #确认到配置已生效
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited










#问题二:主要时虚拟内存大小的问题
max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量
问题解决:
使用root用户,添加如下配置,配置虚拟内存大小
egrep "^[^#]" /etc/sysctl.conf
vm.max_map_count=262144
修改配置文件立即生效
sysctl -p
vm.max_map_count = 262144
或者
echo 262144 > /proc/sys/vm/max_map_count






#重新启动es服务(启动后服务正常启动,使用web方式却时无法连接的)
/usr/local/elk/elasticsearch-8.3.1/bin/elasticsearch
.........
......
...
[2022-07-04T22:31:39,486][INFO ][o.e.i.g.DatabaseNodeService] [node-1] successfully loaded geoip database file [GeoLite2-Country.mmdb]
[2022-07-04T22:31:39,649][INFO ][o.e.i.g.DatabaseNodeService] [node-1] successfully loaded geoip database file [GeoLite2-ASN.mmdb]
[2022-07-04T22:31:40,826][INFO ][o.e.i.g.DatabaseNodeService] [node-1] successfully loaded geoip database file [GeoLite2-City.mmdb]






#测试es服务(出现如下状态,需更改es的web认证方式)
curl 127.0.0.1:9200
curl: (52) Empty reply from server

问题发现:
[node-1] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:56878}
出现如上问题,需要修改es生成的基本配置文件

#问题原因:是因为ES8默认开启了ssl认证,修改es的yml配置文即可
xpack.security.enabled: false
egrep "^[^#]" /usr/local/elk/elasticsearch-8.3.1/config/elasticsearch.yml
cluster.name: my-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12





#修改es配置后,重新测试,如下状态出现elasticsearch的版本信息,同时,我们还可以使用浏览器访问,至此,我们的elasticsearch就安装并启动完成了
curl 127.0.0.1:9200
{
  "name" : "node-1",
  "cluster_name" : "my-es",
  "cluster_uuid" : "TH4isYRERIe-qd7JBCO3Og",
  "version" : {
    "number" : "8.3.1",
    "build_type" : "tar",
    "build_hash" : "b9a6b2867996ba92ceac66cb5bafc6db25e7910e",
    "build_date" : "2022-06-29T18:39:55.731992798Z",
    "build_snapshot" : false,
    "lucene_version" : "9.2.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}



#web浏览器测试
http://192.168.1.10:9200/

在这里插入图片描述

3)kibana部署安装

#kibana服务文件指定解压到之前的工作目录即可
tar zxvf kibana-8.3.1-linux-x86_64.tar.gz -C /usr/local/elk/





#查看kibana服务文件
ls /usr/local/elk/kibana-8.3.1/
bin  config  data  LICENSE.txt  logs  node  node_modules  NOTICE.txt  package.json  plugins  README.txt  src  x-pack





#修改kibana配置文件(默认无配置,启用以下配置即可)
egrep "^[^#]" /usr/local/elk/kibana-8.3.1/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]





#创建用户(默认不要使用root用户直接启动)
useradd kibana




#kibana服务文件授权
chown kibana:kibana -R /usr/local/elk/kibana-8.3.1/
ll -h /usr/local/elk/kibana-8.3.1/
总用量 1.2M
drwxr-xr-x   2 kibana kibana  146 629 20:33 bin
drwxr-xr-x   2 kibana kibana   44 74 23:13 config
drwxr-xr-x   2 kibana kibana    6 629 20:33 data
-rw-r--r--   1 kibana kibana 3.8K 629 20:33 LICENSE.txt
drwxr-xr-x   2 kibana kibana    6 629 20:33 logs
drwxr-xr-x   6 kibana kibana  108 629 20:33 node
drwxr-xr-x 677 kibana kibana  20K 629 20:33 node_modules
-rw-r--r--   1 kibana kibana 1.1M 629 20:33 NOTICE.txt
-rw-r--r--   1 kibana kibana  738 629 20:33 package.json
drwxr-xr-x   2 kibana kibana    6 629 20:33 plugins
-rw-r--r--   1 kibana kibana 3.9K 629 20:33 README.txt
drwxr-xr-x  11 kibana kibana  177 629 20:33 src
drwxr-xr-x   3 kibana kibana   79 629 20:33 x-pack




#使用kibana用户启动kibana服务 
/usr/local/elk/kibana-8.3.1/bin/kibana




#web浏览器访问kibana
http://192.168.1.10:5601/app/home#/

在这里插入图片描述

进入kibana后,如下所示:

在这里插入图片描述

在这里插入图片描述

4)Logstash部署安装

#logstash服务文件解压到工作目录
tar zxvf logstash-8.3.1-linux-x86_64.tar.gz -C /usr/local/elk/




#查看文件
ls /usr/local/elk/logstash-8.3.1/
bin     CONTRIBUTORS  Gemfile       jdk          lib          logstash-core             modules     tools   x-pack
config  data          Gemfile.lock  JDK_VERSION  LICENSE.txt  logstash-core-plugin-api  NOTICE.TXT  vendor




#创建logstash工作用户
useradd logstash



#配置文件所属用户及所属组权限
chown logstash:logstash -R /usr/local/elk/logstash-8.3.1/
ll -h  /usr/local/elk/logstash-8.3.1/
总用量 576K
drwxr-xr-x 2 logstash logstash 4.0K 74 23:49 bin
drwxr-xr-x 2 logstash logstash  142 75 00:08 config
-rw-r--r-- 1 logstash logstash 2.3K 630 02:41 CONTRIBUTORS
drwxr-xr-x 2 logstash logstash    6 630 02:41 data
-rw-r--r-- 1 logstash logstash 4.0K 630 02:41 Gemfile
-rw-r--r-- 1 logstash logstash  29K 630 02:41 Gemfile.lock
drwxr-xr-x 9 logstash logstash  121 74 23:49 jdk
-rw-r--r-- 1 logstash logstash   18 630 02:41 JDK_VERSION
drwxr-xr-x 6 logstash logstash   84 74 23:49 lib
-rw-r--r-- 1 logstash logstash  14K 630 02:41 LICENSE.txt
drwxr-xr-x 4 logstash logstash   90 74 23:49 logstash-core
drwxr-xr-x 3 logstash logstash   86 74 23:49 logstash-core-plugin-api
drwxr-xr-x 4 logstash logstash   55 74 23:49 modules
-rw-r--r-- 1 logstash logstash 509K 630 02:41 NOTICE.TXT
drwxr-xr-x 3 logstash logstash   30 74 23:49 tools
drwxr-xr-x 4 logstash logstash   33 74 23:49 vendor
drwxr-xr-x 9 logstash logstash  193 74 23:49 x-pack





#配置logstash数据和日志存储路径
#创建用于存储logstash数据目录
mkdir -p /data/logstash/data
#修改目录权限
chown -R logstash:logstash /data/logstash/data
#创建日志目录
mkdir -p /data/logstash/log
#修改目录权限
chown -R logstash:logstash /data/logstash/log




#修改logstash配置文件
#设置data存储目录
path.data: /data/logstash/data
#设置配置文件目录
path.config: /usr/local/elk/logstash-8.3.1/config/
#设置日志存储目录
path.logs: /data/logstash/log

egrep "^[^#]" /usr/local/elk/logstash-8.3.1/config/logstash.yml
path.data:	/logstash/data
path.config:	/usr/local/elk/logstash-8.3.1/config/
path.logs:	/data/logstash/log




#使用logstash用户启动logstash服务 
/usr/local/elk/logstash-8.3.1/bin/logstash
posted @ 2022-08-11 22:52  ଲ小何才露煎煎饺  阅读(203)  评论(0编辑  收藏  举报