> 技术文档 > ES集群部署-EFK架构实战

ES集群部署-EFK架构实战


文章目录

  • 🌟ElasticStack概述
    • 💡什么是ElasticStack
  • 🌟ElasticStack架构设计
  • 🌟ElasticSearch单点部署
    • 📌下载ES软件包(7.17.29)
    • 🛠️安装ElasticSearch
    • 📝修改ElasticSearch的配置文件
    • 🚀启动ES服务
    • 🍀访问ES的WebUI
    • 🌏浏览器访问
  • 🌟ES集群的颜色分别代表什么含义?
    • red: 红色
    • yellow: 黄色
    • green: 绿色
  • 🌟ElasticSearch集群常用术语
    • 🎯索引:index
    • 🧩分片:shard
    • 💾副本:replica
    • 📝文档
  • 🌟ElasticSearch集群部署
    • 📝修改配置文件
    • 🔄重置单点配置
    • 📝同步配置文件
    • 🔄重启ES集群
    • 🔍验证集群状态
  • 🌟ElasticSearch的DSL语句初体验
    • 📝写入数据
    • 🔍查询指定文档id的数据
    • 🔍查看所有数据
    • ✂️删除数据
  • 🌟Kibana环境部署
    • 🧩下载Kibana(7.17.29)
    • 🎯安装Kibana
    • 📝修改Kibana的配置文件
    • 🚀启动Kibana服务
  • 🌟Kibana的基础使用
  • 🌟Filebeat环境部署
    • 📌下载filebeat
    • 🎯安装Filebeat
    • 📝修改Filebeat的配置文件
  • 🌟EFK架构实战案例
    • 📝编写配置文件
    • 🚀启动Filebeat实例
    • 🔍发送测试数据
    • 🛠️Kibana创建索引模式
    • 🔍查看索引(message)
  • 🌟总结

🌟ElasticStack概述

💡什么是ElasticStack

所谓的ElasticStack是elastic公司的推出的技术栈,早期业界有个很出名的ELK就来自于这家公司。

后来随着这家公司的工具链增多,后面更名elk stask为elasticStack。

🌟ElasticStack架构设计

ElasticSearch: 数据存储

Logstash: 数据采集,处理

Kibana: 数据展示,可视化

🌟ElasticSearch单点部署

📌下载ES软件包(7.17.29)

官方网站:https://www.elastic.co/cn/

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

复制下载链接到linux上

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-amd64.deb

🛠️安装ElasticSearch

dpkg -i elasticsearch-7.17.28-amd64.deb

ES集群部署-EFK架构实战

📝修改ElasticSearch的配置文件

vim /etc/elasticsearch/elasticsearchcluster.name: zhupath.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 0.0.0.0http.port: 9200discovery.type: single-node

相关参数说明:

cluster.name 集群的名称

path.data ES的数据存储路径。

path.logs ES的日志存储路径。

network.host ES服务监听的地址。

discovery.type 指的ES集群的部署类型,此处的\"single-node\",表示的是一个单点环境。

🚀启动ES服务

systemctl enable --now elasticsearch.service

ES集群部署-EFK架构实战

端口说明:

9200:ES集群对外提供服务的端口,使用是http|https协议。

9300:ES集群内部数据同步,master选举的端口,使用tcp协议。

9300优于9200端口启动

🍀访问ES的WebUI

curl http://10.0.0.91:9200/_cat/nodescurl http://10.0.0.91:9200

ES集群部署-EFK架构实战

🌏浏览器访问

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

🌟ES集群的颜色分别代表什么含义?

red: 红色

代表有部分主分片无法访问。一般情况下不会出现,如果数据量较大时启动时可能会短暂出现。

yellow: 黄色

代表有部分副本分片无法访问。处于亚健康状态。

green: 绿色

代表所有的主分片和副本分片均可以正常访问。

🌟ElasticSearch集群常用术语

🎯索引:index

ES集群数据存储的逻辑单元。对于客户端而言可以进行数据的读写。

🧩分片:shard

一个索引对应一个或多个分片。当该索引的分片数量大于1时,意味着数据可以实现分布式存储。

💾副本:replica

一个分片可以有0个或多个副本。当分片的数量大于等于1时,就可以对分片进行数据备份。

注意,副本分片和主分片的数据不能在同一个节点上,主分片负责数据的读写,而副本分片负责备份主分片,且可以负责读的负载均衡。

📝文档

分片和副本存储的都是文档,文档是用户存储的数据实际载体。

文档分为元数据和源数据。

源数据指的是用户的实际数据。

元数据是用来描述源数据的数据,比如该文档术语哪个索引,文档的唯一编号等信息。

🌟ElasticSearch集群部署

📝修改配置文件

1.修改配置文件vim /etc/elasticsearch/elasticsearch.ymlcluster.name: zhu-clusterpath.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 0.0.0.0http.port: 9200discovery.seed_hosts: [\"10.0.0.91\", \"10.0.0.92\",\"10.0.0.93\"]cluster.initial_master_nodes: [\"10.0.0.91\", \"10.0.0.92\",\"10.0.0.93\"]2.检查egrep -v \'^#|^$\' /etc/elasticsearch/elasticsearch.yml

ES集群部署-EFK架构实战

discovery.seed_hosts 指的ES集群主机地址列表。

cluster.initial_master_nodes 指定ES集群能够参与master选举的主机列表。

🔄重置单点配置

1.停止ES服务systemctl stop elasticsearch2.查看监听端口ss -lntup | egrep \"9200|9300\"3.清除日志文件rm -rf /var/log/elasticsearch/*rm -rf /var/lib/elasticsearch/*

ES集群部署-EFK架构实战

📝同步配置文件

scp /etc/elasticsearch/elasticsearch.yml 10.0.0.92:/etc/elasticsearch/scp /etc/elasticsearch/elasticsearch.yml 10.0.0.93:/etc/elasticsearch/

ES集群部署-EFK架构实战

🔄重启ES集群

[root@elk91 ~]# systemctl enable --now elasticsearch.service[root@elk92 ~]# systemctl enable --now elasticsearch.service[root@elk93 ~]# systemctl enable --now elasticsearch.service

ES集群部署-EFK架构实战

🔍验证集群状态

http://10.0.0.91:9200/_cat/nodes

ES集群部署-EFK架构实战

🌟ElasticSearch的DSL语句初体验

📝写入数据

curl --location --request POST \'http://10.0.0.91:9200/_bulk\' \\--header \'Content-Type: application/json\' \\--data-raw \'{ \"create\" : { \"_index\" : \"zhu\", \"_id\" : \"1001\" } }{ \"name\" : \"猪八戒\",\"hobby\": [\"猴哥\",\"高老庄\"] }{ \"create\" : { \"_index\" : \"zhu\", \"_id\" : \"1002\" } }{ \"name\" : \"沙和尚\",\"hobby\": [\"流沙河\",\"挑行李\"] }{ \"create\" : { \"_index\" : \"zhu\", \"_id\" : \"1003\" } }{ \"name\" : \"白龙马\",\"hobby\": [\"大师兄,师傅被妖怪抓走啦\"] }\'

ES集群部署-EFK架构实战

🔍查询指定文档id的数据

curl -s --location --request GET \'10.0.0.93:9200/zhu/_doc/1003\' | jq

ES集群部署-EFK架构实战

curl -s --location --request GET \'10.0.0.93:9200/zhu/_search\' \\--header \'Content-Type: application/json\' \\--data-raw \'{ \"query\": { \"match\": { \"hobby\": \"猴哥\" } }}\' | jq

ES集群部署-EFK架构实战

🔍查看所有数据

curl -s --location --request GET \'10.0.0.93:9200/zhu/_search\' | jq

ES集群部署-EFK架构实战

✂️删除数据

curl -s --location --request DELETE \'10.0.0.93:9200/zhu/_doc/1003\' | jq

ES集群部署-EFK架构实战

🌟Kibana环境部署

🧩下载Kibana(7.17.29)

官网下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.17.29-amd64.deb

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

🎯安装Kibana

dpkg -i kibana-7.17.29-amd64.deb

ES集群部署-EFK架构实战

📝修改Kibana的配置文件

vim /etc/kibana/kibana.ymlserver.port: 5601server.host: \"0.0.0.0\"elasticsearch.hosts: [\"http://10.0.0.91:9200\",\"http://10.0.0.92:9200\",\"http://10.0.0.93:9200\"]i18n.locale: \"zh-CN\"

ES集群部署-EFK架构实战

相关参数说明:

server.port: 服务监听的端口。

server.host: 服务监听的地址。

elasticsearch.hosts: kibana管理ES集群的地址。

i18n.locale: kibana的语言。

🚀启动Kibana服务

systemctl enable --now kibana.service

ES集群部署-EFK架构实战

🌟Kibana的基础使用

ES集群部署-EFK架构实战

选择自己浏览

ES集群部署-EFK架构实战

选择索引管理

ES集群部署-EFK架构实战

选择索引模式

ES集群部署-EFK架构实战

创建索引模式

ES集群部署-EFK架构实战

选择Discover

ES集群部署-EFK架构实战

选定需要查看的字段

ES集群部署-EFK架构实战

🌟Filebeat环境部署

📌下载filebeat

官网下载:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.29-amd64.deb

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.29-amd64.deb

🎯安装Filebeat

dpkg -i filebeat-7.17.29-amd64.deb

ES集群部署-EFK架构实战

📝修改Filebeat的配置文件

mkdir /etc/filebeat/configcd /etc/filebeat/config/vim 01-stdin-to-console.yamlfilebeat.inputs:- type: stdinoutput.console: pretty: true

查询官方文档:https://www.elastic.co/guide

ES集群部署-EFK架构实战

选择对应的版本

ES集群部署-EFK架构实战

选择inputs

ES集群部署-EFK架构实战

选择stdin标准输入

ES集群部署-EFK架构实战

ES集群部署-EFK架构实战

🌟EFK架构实战案例

📝编写配置文件

1.备份配置文件cp 01-stdin-to-console.yaml 02-tcp-to-es.yaml2.修改配置文件vim 02-tcp-to-es.yamlfilebeat.inputs:- type: tcp host: \"0.0.0.0:9000\"#output.console:# pretty: true# 将数据写入到ES集群output.elasticsearch: # 指定ES集群地址 hosts: [\"http://10.0.0.91:9200\",\"http://10.0.0.92:9200\",\"http://10.0.0.93:9200\"] # 指定ES的索引名称 index: filebeat-tcp-xixi# 禁用索引的生命周期,否则自定义索引名称无效setup.ilm.enabled: false# 定义索引模板setup.template.name: \"filebeat-tcp\"# 定义索引模板的匹配模式setup.template.pattern: \"filebeat-tcp*\"# 如果索引模板已经存在是否覆盖setup.template.overwrite: false# 配置索引模板setup.template.settings: # 指定分片数量 index.number_of_shards: 3 # 指定副本数量 index.number_of_replicas: 0

🚀启动Filebeat实例

filebeat -e -c /etc/filebeat/config/02-tcp-to-es.yaml

🔍发送测试数据

echo zhu | nc 10.0.0.92 9000

🛠️Kibana创建索引模式

ES集群部署-EFK架构实战

🔍查看索引(message)

ES集群部署-EFK架构实战

🌟总结

  • ElasticStack架构组成部分
    • ElasticSearch
    • Kibana
    • Filebeat
    • Logstash
  • elasticsearch单点部署
  • elasticsearch集群部署
  • Kibana环境部署
  • Filebeat环境部署
  • EFK架构数据流走向

ES集群部署-EFK架构实战