当前位置:   article > 正文

Elastic stack(一):Elastic stack简介、Elasticsearch简介、安装

Elastic stack(一):Elastic stack简介、Elasticsearch简介、安装

1 Elastic Stack

1.1 Elastic Stack介绍

ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。说白了Elastic Stack相当于以前的ELK。

1.2 为什么要用到ELK日志分析

一般需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时, 大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
一个完整的集中式日志系统,需要包含以下几个主要特点:

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

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

1.3 ELK的组件

ELK 的主要组件有:

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

1.4 ELK架构原理

ELK架构中,可以直接使用Logstach 组件收集数据并过滤,把数据发送给Elasticsearch,并通过Kibana展示出来;也可以使用Filebeat收集日志,Logstash从FileBeat获取日志文件。Logstash将从Filebeat获取到的日志进行处理,将处理好的日志文件输出到Elasticsearch进行处理

1、ELK工作流程

  • 客户端安装Logstash日志收集工具
  • 通过logstash收集客户端APP的日志数据,将所有的日志过滤出来,存入Elasticsearch 搜索引擎里
  • 通过Kibana GUI在WEB前端展示给用户
  • 用户需要可以进行查看指定的日志内容

2、ELFK工作流程

  • 使用FileBeat获取Linux服务器上的日志。当启动Filebeat时,它将启动一个或多个Prospectors (检测者),查找服务器上指定的日志文件,作为日志的源头等待输出到Logstash。
  • Logstash从FileBeat获取日志文件。Filebeat作为Logstash的输入input将获取到的日志进行处理,Logstash将处理好的日志文件输出到Elasticsearch进行处理。
  • Elasticsearch得到Logstash的数据之后进行相应的搜索存储操作。将写入的数据可以被检索和聚合等以便于搜索操作,最后Kibana通过Elasticsearch提供的API将日志信息可视化的操作。

2 Elasticsearch

2.1 Elasticsearch简介

1、什么是Elasticsearch

Elasticsearch是Elastic Stack的核心,是一个分布式搜索和分析引擎。Logstash和Beats有助于收集、聚合和丰富数据,并将其存储在Elasticsearch中。Kibana让你 以交互方式探索、可视化和共享数据的见解,并管理和监控整个堆栈。

Elasticsearch为所有类型的数据提供了近实时的搜索和分析功能。无论你是拥有结构化还是非结构化的文本、数值数据还是地理空间数据,Elasticsearch都能以支持快速搜索的方式高效地存储和索引这些数据。

Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论是 具有结构化或非结构化文本、数字数据或地理空间数据, Elasticsearch 可以以支持快速搜索的方式有效地存储和索引它。 可以远远超出简单的数据检索和汇总信息来发现 数据中的趋势和模式。
应用场景有:

  • 在应用程序或网站上添加一个搜索框
  • 存储并分析日志、指标和安全事件数据
  • 使用机器学习实时自动构建数据行为模型
  • 使用Elasticsearch作为存储引擎,自动化业务流程
  • 使用Elasticsearch作为地理信息系统(GIS),管理、整合和分析空间信息
  • 使用Elasticsearch作为生物信息学研究工具,存储和处理基因数据

2、数据来源:索引(indices)和文档(documents)

在Elasticsearch中,数据和信息的组织主要依赖于两个核心概念:文档(documents)和索引(indices)。

  • 文档(documents):
    • 文档是Elasticsearch中的基本数据单位。也是被索引的基本单元。
    • 构成:每个文档都是一个JSON对象,其中包含了一组字段(fields),这些字段可以包含各种类型的数据,如文本、数字、日期、地理坐标等。这些字段及其对应的值一起构成了文档的内容。
  • 索引(indices):
    • 索引在Elasticsearch中是一个逻辑命名空间,用于存储具有相似结构的文档集合。
    • 构成:可以将索引视为一个数据库中的表,或者一个文件系统中的文件夹。索引不仅存储了文档数据,还包含了用于搜索和分析这些数据的元数据。这些元数据包括倒排索引、字段类型信息、映射(mapping)等,它们使得Elasticsearch能够快速地响应查询请求。
    • 倒排索引(inverted index):是一种数据结构,主要列出出现在任何文档中的每个唯一单词,并标识出每个单词出现的所有文档。也就是说通过这个数据结构实现快速的全文搜索。

数据和信息在Elasticsearch中是以文档和索引的形式进行组织和存储的。

文档是数据的基本单位,而索引则是组织和管理这些文档的容器。在Elasticsearch中,通常不会直接操作单个文档,而是通过索引来管理和查询文档集合。

当想要存储一个新的文档时,我们会将它添加到一个索引中;当我们想要搜索文档时,我们会在一个或多个索引中执行查询。索引还可以进行分片(sharding)和复制(replication),以支持水平扩展和高可用性。

3、信息输出:搜索(search)和分析(analyze)

在Elasticsearch中,搜索和分析功能是其最为核心和强大的特性之一。通过Elasticsearch,用户可以轻松地执行各种复杂的搜索操作,并对数据进行深入的分析。

  • 搜索(search):支持的查询有:
    • 基础搜索:
      • 结构化查询:允许用户根据特定的字段和条件来过滤和筛选文档,类似于在关系型数据库中使用的SQL查询
      • 全文查询:能够找到所有与查询字符串匹配的文档,并按照相关性进行排序
      • 结合了两者的复杂查询
    • 高级搜索:短语搜索、相似性搜索、前缀搜索等
  • 分析(analyze):允许用户对数据进行聚合、统计和分析。通过聚合操作,用户可以计算数据的平均值、总和、最大值、最小值等统计信息,或者对数据进行分组和计数。此外,Elasticsearch还支持各种复杂的分析操作,如时间序列分析、地理空间分析等

4、可扩展性和弹性:集群、节点和分片

Elasticsearch的可扩展性和弹性主要体现在其集群、节点和分片的设计上

  • 集群(Clusters):
    • Elasticsearch是一个分布式的文档存储系统,通过集群的方式实现其扩展性。
    • 集群是由一个或多个节点(服务器)组成的,这些节点共同工作以提供数据存储和搜索服务。当需要增加集群的容量或提高性能时,可以简单地向集群中添加更多的节点。Elasticsearch会自动在所有可用的节点之间分配数据和查询负载,从而确保每个节点都能够高效地处理请求。这种自动分配和负载均衡的机制使得Elasticsearch能够轻松应对大规模的数据存储和搜索需求。
  • 节点(Nodes):
    • 节点是Elasticsearch集群的基本组成单位,每个节点都是一个独立的服务器或服务器实例。
    • 节点负责存储和检索数据,并处理来自客户端的查询请求。在集群中,节点之间通过网络进行通信,共同协作以完成数据存储、搜索和分析任务。
    • 节点可以容纳的分片数量与其可用的堆空间成正比,这意味着具有更多可用内存的节点可以处理更多的分片。
  • 分片(Shards):
    • 分片是数据的物理存储单位。
    • 每个索引(Index)在创建时会被拆分成一个或多个主分片(Primary Shards),这些主分片是数据的逻辑分组,用于存储和检索数据。每个主分片可以有零个或多个副本分片(Replica Shards),用于提供数据的冗余和备份,以提高系统的可用性和容错能力。
    • 通过分片的设计,Elasticsearch可以实现数据的水平扩展。当集群中的节点数量增加时,Elasticsearch可以将分片重新分配到这些新的节点上,从而平衡集群中的负载。这种自动的分片分配和再平衡机制使得Elasticsearch能够灵活地应对节点的增加或减少,保持系统的稳定性和性能。
    • 分片的设计还使得Elasticsearch能够处理大规模的数据集。通过将数据拆分成多个分片并分散在多个节点上存储,Elasticsearch可以充分利用集群的资源,实现高效的并行处理和查询。
    • 分片的设计也增强了Elasticsearch的弹性。通过创建副本分片,Elasticsearch可以在主分片发生故障时自动使用副本分片进行恢复,从而确保数据的可靠性和可用性。这种自动故障恢复机制使得Elasticsearch能够应对各种故障场景,保持系统的稳定性和可用性。

综上所述,Elasticsearch通过集群、节点和分片的设计实现了出色的可扩展性和弹性。这种设计使得Elasticsearch能够轻松应对大规模的数据存储和搜索需求,同时保持系统的稳定性和性能。

2.2 ES安装-源码包安装8.1

1、环境准备

系统:ubuntu
软件:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.0-linux-x86_64.tar.gz

2、安装

安装包下载
cat >> /etc/hosts << EOF
192.168.92.10 server
EOF

cd /usr/local/src/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.0-linux-x86_64.tar.gz
tar -zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
创建用户
# 创建es用户,生成证书文件
# 新增es用户
useradd es
# 设置密码
passwd es  

mv elasticsearch-8.1.0 /usr/local/
# 创建数据文件目录
mkdir -p /usr/local/elasticsearch-8.1.0/data
# 创建证书目录
mkdir -p /usr/local/elasticsearch-8.1.0/config/certs
# 切换目录
cd /usr/local/elasticsearch-8.1.0
# 修改文件拥有者
chown -R es:es /usr/local/elasticsearch-8.1.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
签发证书并配置
# 签发证书并配置
su es
# 签发ca证书 直接回车两次, 会在当前目录生成一个文件elastic-stack-ca.p12
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-certutil ca

# 用ca证书签发节点证书, 这一步就是为整个集群做安全认证  过程直接回车三次
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

# 将生成的证书文件移动到 config/certs目录中
mv elastic-stack-ca.p12 elastic-certificates.p12 config/certs/

# 设置集群多节点的http证书 签发http证书
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-certutil http  
####### 以下为输出内容:
# 是否发出认证证书请求 n  
Generate a CSR? [y/N]n  
# 是否使用已经存在的ca证书 y  
Use an existing CA? [y/N]y  
# ca证书的路径 /usr/local/elasticsearch-8.1.0/config/certs/elastic-stack-ca.p12  
CA Path: /usr/local/elasticsearch-8.1.0/config/certs/elastic-stack-ca.p12  
# 输入密码  没有密码,直接回车  
Password for elastic-stack-ca.p12:  
# 证书的有效时间 默认5年  5y  
For how long should your certificate be valid? [5y] 5y  
# 是否每个节点都生成证书   不需要 n  
Generate a certificate per node? [y/N]n  
# 输入几台主机名称  并做最后的确认  
When you are done, press <ENTER> once more to move on to the next step. 

con02

# 输入几台主机的ip地址 并确认  
When you are done, press <ENTER> once more to move on to the next step.  
 
192.168.92.102  
 
# 是否选择证书的配置  否  n  
Do you wish to change any of these options? [y/N]n  
# 输入证书的密码 没有密码 直接回车  
If you wish to use a blank password, simply press <enter> at the prompt below.Provide a password for the "http.p12" file:  [<ENTER> for none]  
# 生成认证证书的压缩包文件  
[/usr/local/elasticsearch-8.1.0/elasticsearch-ssl-http.zip]  
# Where should we save the generated files?

A number of files will be generated including your private key(s),
public certificate(s), and sample configuration options for Elastic Stack products.

These files will be included in a single zip archive.

What filename should be used for the output zip file? [/usr/local/elasticsearch-8.1.0/elasticsearch-ssl-http.zip]

Zip file written to /usr/local/elasticsearch-8.1.0/elasticsearch-ssl-http.zip

# 解压缩证书文件 并移动文件 
unzip elasticsearch-ssl-http.zip
cp elasticsearch/http.p12 kibana/elasticsearch-ca.pem config/certs/
修改配置文件
# 修改配置文件
vim config/elasticsearch.yml
# 设置es集群名称
cluster.name: es-cluster
# 设置集群中当前的节点名称
node.name: con02
# 设置数据和日志路径
path.data: /usr/local/elasticsearch-8.1.0/data
path.logs: /usr/local/elasticsearch-8.1.0/logs
# 设置网络访问节点
network.host: 192.168.92.102
# 设置访问端口
http.port: 9200
# 初始节点
discovery.seed_hosts: ["con02"]
# 安全认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: /usr/local/elasticsearch-8.1.0/config/certs/http.p12
  truststore.path: /usr/local/elasticsearch-8.1.0/config/certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: /usr/local/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
  truststore.path: /usr/local/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
# 此处需要注意,node01为上面配置的节点名称
cluster.initial_master_nodes: ["con02"]
http.host: [_local_,_site_]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none

# 最后的输入内容:
# 设置es集群名称
cluster.name: es-cluster
## 设置集群中当前的节点名称
node.name: con02
## 设置数据和日志路径
path.data: /usr/local/elasticsearch-8.1.0/data
path.logs: /usr/local/elasticsearch-8.1.0/logs
## 设置网络访问节点
network.host: 192.168.92.102
# 设置访问端口
http.port: 9200
# 安全认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: /usr/local/elasticsearch-8.1.0/config/certs/http.p12
  truststore.path: /usr/local/elasticsearch-8.1.0/config/certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: /usr/local/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
  truststore.path: /usr/local/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
# 此处需要注意,node01为上面配置的节点名称
cluster.initial_master_nodes: ["con02"]
http.host: [_local_,_site_]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none
  • 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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
修改系统文件
# 退出到root修改系统文件内容
exit
vim /etc/security/limits.conf
添加----------------------------------------------------------------
*               soft    nofile          65536
*               hard    nofile          65536
*               soft    nproc           4096
*               hard    nproc           4096


vi /etc/sysctl.conf
添加----------------------------------------------------------------
vm.max_map_count = 262144

# 使配置生效
重启系统或者  
sudo sysctl -p /etc/sysctl.conf
reboot

# 验证结果
su es
ulimit -Hn
65536
ulimit -Sn
65536
exit
  • 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
增加快速启动文件
##### 注意:第一次启动一定要手动启动
cd /usr/local/elasticsearch-8.1.0/
su es 
./bin/elasticsearch


# system管理
vim /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=simple
User=es
Group=es
LimitNOFILE=100000
LimitNPROC=100000
Restart=no
ExecStart=/usr/local/elasticsearch-8.1.0/bin/elasticsearch
PrivateTmp=true
[Install]
WantedBy=multi-user.target


# 启动服务
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch

# 重新生成密码:
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-reset-password -u elastic

默认账号
https://192.168.92.102:9200
账号 : elastic  密码 : pwYcuJ8aT-h7TvuA0gVu
  • 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
  • 32
  • 33
  • 34
  • 35

注意:在修改密码时如果报如下错误,可以查看是配置文件不正确。或者删除证书重新生成
在这里插入图片描述在这里插入图片描述

登录前台进行验证

登录地址:https://ip:port
在这里插入图片描述

2.3 Elasticsearch简单使用

# 查看
curl https://192.168.92.102:9200 -ku 'elastic:pwYcuJ8aT-h7TvuA0gVu'
# 查看索引
curl  -ku 'elastic:pwYcuJ8aT-h7TvuA0gVu' https://172.16.1.56:9200/_cat/indicesk
  • 1
  • 2
  • 3
  • 4

总结

以上是Elastic stack和Elasticsearch的简介,和elasticsearch的安装。后面会写一些常用的Elasticsearch API调用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/264115
推荐阅读
相关标签
  

闽ICP备14008679号