ElasticStack技术栈概述及Elasticsearch8.2.2集群部署并更换JDK版本为openjdk-17

ElasticStack

一、引言

在当今数据驱动的时代,如何高效地收集、处理和分析日志及其他类型的数据,已成为企业构建可观测性和运维能力的重要课题。Elastic Stack(早期称为 ELK Stack)是一套由 Elastic 公司推出的开源技术栈,专为解决此类问题而设计。

二、ElasticStack 技术栈概述

1. 什么是 ElasticStack?

ElasticStack 是由 Elastic 公司开发的一系列开源工具组合,最初以 “ELK” 这个名称广为人知,代表了三个核心组件:

  • Elasticsearch:一个分布式的 RESTful 搜索引擎,提供快速的数据检索与聚合能力。
  • Logstash:用于采集、转换和传输各种来源的日志或事件数据。
  • Kibana:基于 Web 的可视化平台,用于探索 Elasticsearch 中的数据并创建交互式仪表板。

随着 Elastic 生态的发展,越来越多的组件被集成进来,如 Beats、APM、X-Pack、Cloud 等,使得 ElasticStack 成为了一个涵盖日志分析、指标监控、应用性能管理、安全信息与事件管理(SIEM)等多领域的综合性数据平台。


2. EFK 架构解析

EFK 是 ElasticStack 中一种常见的架构模式,特别适用于 容器化环境(如 Kubernetes)下的日志采集与分析。

核心组件:
  • Filebeat:轻量级日志采集器,负责从主机或容器中采集日志文件。
  • Elasticsearch:分布式搜索引擎,用于存储、索引和查询数据。
  • Kibana:可视化平台,用于浏览、搜索和展示 Elasticsearch 中的数据。
工作流程:
  1. Filebeat 收集本地或容器中的日志;
  2. 将日志发送至 Elasticsearch 进行索引与存储;
  3. 用户通过 Kibana 查询日志并创建可视化面板。

✅ 优点:部署简单、资源占用低,适合中小型日志采集与展示需求。


3. ELFK 架构

当需要对日志进行清洗、过滤、格式转换等预处理操作时,可以在 EFK 的基础上引入 Logstash,形成 ELFK 架构

核心组件:
组件作用
Elasticsearch数据存储与检索
Logstash日志预处理引擎,支持输入、过滤、输出插件
Filebeat轻量级日志采集器
Kibana数据可视化界面
工作流程:
  1. Filebeat 收集原始日志并发送到 Logstash;
  2. Logstash 对日志进行结构化处理(如字段提取、时间戳解析、字段重命名等);
  3. 处理后的日志写入 Elasticsearch;
  4. 最终通过 Kibana 实现数据可视化与交互式分析。

✅ 优势:增强日志的结构化程度,提升后续查询与分析效率。


4. ELFK 架构升级 —— 引入 Kafka

📌 升级目标:
  • 实现日志采集与处理之间的 异步解耦
  • 提升系统 吞吐能力与容错性
  • 支持 高并发日志写入
  • 避免因 Logstash 或 Elasticsearch 故障导致的 日志丢失

✅ ELFKK 架构详解
核心组件:
组件角色描述
Filebeat负责采集日志文件,作为数据源
Kafka分布式消息队列,用于缓冲和传递日志数据
Logstash消费 Kafka 中的消息,执行日志解析与转换
Elasticsearch存储结构化后的日志数据
Kibana可视化平台,用于展示与分析日志
工作流程:
  1. Filebeat 采集主机或容器日志;
  2. 日志被发送至 Kafka 的指定 Topic;
  3. Logstash 订阅该 Topic 并消费日志;
  4. Logstash 对日志进行清洗、结构化处理后写入 Elasticsearch;
  5. Kibana 用于数据展示与可视化分析。

🔧 架构优势
特性描述
异步解耦Kafka 作为中间层,实现采集与处理的松耦合
削峰填谷在流量高峰时缓存数据,避免下游服务崩溃
可扩展性强Kafka 和 Logstash 均支持横向扩展,适应大规模日志处理
容错能力强Kafka 支持持久化存储,即使处理节点宕机也不会丢失数据
数据复用灵活同一份日志可以被多个消费者同时使用,满足多种业务需求

🚀 适用场景
  • 日志量庞大的企业级系统(如电商平台、金融风控系统)
  • 对日志丢失容忍度极低的业务场景
  • 需要多系统共享日志流的场景(如日志分析 + 审计 + 告警)
  • Kubernetes 等云原生环境中需要弹性扩容的场景

三、ElasticSearch集群部署

1.节点IP划分

IP主机名
192.168.130.61es-node-01
192.168.130.62es-node-02
192.168.130.65es-node-03

2.配置主机hosts文件及实现免密

  • 配置主机hosts
sudo sh -c 'cat <<EOF >> /etc/hostsEOF'cat >> /etc/hosts <<EOF
192.168.130.61 es-node-01
192.168.130.62 es-node-02
192.168.130.65 es-node-03
EOF
  • 集群实现免密
ssh-copy-id root@192.168.130.61
ssh-copy-id root@192.168.130.62
ssh-copy-id root@192.168.130.65

两个步骤三台机器全部执行

3.下载Elasticsearch二进制软件包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.2.2-linux-x86_64.tar.gz

4.创建运行elasticsearch服务的普通用户和目录

  • 所有主机执行
useradd -u 2025  elasticsearch
mkdir -p /data/elasticsearch/{data,logs,softwares}
chown -R elasticsearch:elasticsearch /data/elasticsearch/

5.解压软件包

tar xvf /root/elasticsearch-8.2.2-linux-x86_64.tar.gz -C /data/elasticsearch/softwares/

6.修改配置文件

[root@es-node-01 softwares]# egrep -v '^#|^$' elasticsearch/config/elasticsearch.yml
cluster.name: Elasticsearch
node.name: es-node-01
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
transport.host: 0.0.0.0
transport.port: 9300
discovery.seed_hosts: ["192.168.130.61", "192.168.130.62", "192.168.130.65"]
cluster.initial_master_nodes: ["192.168.130.61", "192.168.130.62", "192.168.130.65"]
node.roles: ["master", "data", "ingest"]
xpack.security.enabled: false

7. 所有节点更改JDK环境

7.1.下载jdk
https://download.java.net/openjdk/jdk17.0.0.1/ri/openjdk-17.0.0.1+2_linux-x64_bin.tar.gz
7.2.解压jdk
tar xf openjdk-17.0.0.1+2_linux-x64_bin.tar.gz -C /usr/lib/jvm/jdk-17.0.0.1/
7.3.配置jdk文件变量
cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.0.1
export PATH=$JAVA_HOME/bin:$PATH

8. 所有节点编写systemctl管理

[root@es-node-01 softwares]# systemctl cat es
# /usr/lib/systemd/system/es.service
[Unit]
Description=Elasticsearch 8.x Daemon
Documentation=https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
After=network.target
[Service]
Type=forking
User=elasticsearch
Group=elasticsearch# 指定使用哪个 JDK(根据你实际安装路径修改)
Environment="JAVA_HOME=/usr/lib/jvm/jdk-17.0.0.1"# Elasticsearch 安装目录
WorkingDirectory=/data/elasticsearch/softwares/elasticsearch# 启动命令
ExecStart=/data/elasticsearch/softwares/elasticsearch/bin/elasticsearch -d# 停止命令(可选)
ExecStop=/bin/kill -SIGTERM # 重启策略
Restart=always# 系统资源限制
LimitNOFILE=131072
LimitNPROC=8192
LimitMEMLOCK=infinity[Install]
WantedBy=multi-user.target

9.同步只其他节点并修改

9.1将二进制包同步到其他节点
 rsync -avz /data/elasticsearch root@192.168.130.62:/datarsync -avz /data/elasticsearch root@192.168.130.65:/data
9.2.修改配置
  • es-node-02
 sed 's/es-node-01/es-node-02/' /data/elasticsearch/softwares/elasticsearch/config/elasticsearch.yml
  • es-node-03
 sed 's/es-node-01/es-node-03/' /data/elasticsearch/softwares/elasticsearch/config/elasticsearch.yml

10.更换 Elasticsearch 集群中的 JDK 版本

10.1.修改elasticsearch-env文件
cd /data/elasticsearch/softwares/elasticsearch/bin/
vim elasticsearch-env
##在第二行插入  
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.0.1
##将ES_JAVA_HOM修改为JAVA_HOM,JAVA_TYPE="system JAVA_HOM"
:%s/ES_JAVA_HOM/JAVA_HOM/g

11.启动集群并检查

  • 所有节点执行
systemctl daemon-reload
systemctl enable --now es.service
systemctl status es.service
  • 查看集群状态
[root@es-node-01 bin]# curl 192.168.130.61:9200/_cluster/health 2>/dev/null |jq
{"cluster_name": "Elasticsearch","status": "green","timed_out": false,"number_of_nodes": 3,"number_of_data_nodes": 3,"active_primary_shards": 2,"active_shards": 4,"relocating_shards": 0,"initializing_shards": 0,"unassigned_shards": 0,"delayed_unassigned_shards": 0,"number_of_pending_tasks": 0,"number_of_in_flight_fetch": 0,"task_max_waiting_in_queue_millis": 0,"active_shards_percent_as_number": 100
}
[root@es-node-01 bin]# curl 192.168.130.61:9200/_cat/nodes
192.168.130.65 18 31 0 0.00 0.00 0.00 dim - es-node-03
192.168.130.62 57 36 1 0.11 0.11 0.08 dim - es-node-02
192.168.130.61 56 89 0 0.00 0.01 0.05 dim * es-node-01
[root@es-node-01 bin]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91166.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris中文检索效果调优

一、问题描述 原来的日志系统使用的是ES作为底层存储&#xff0c;后来因为数据量大了之后&#xff0c;出现了写入存在阻塞和查询效率变低的问题。后来决定切换到Doris数据库。 Doris的优势根据公开资料来看&#xff0c;它在写入性能、查询效率和存储成本上&#xff0c;都优于…

CDN怎么加速跟防御网站攻击呢?

**CDN&#xff08;内容分发网络&#xff09;**通过分布式架构和智能路由技术&#xff0c;不仅可以加速网站内容访问&#xff0c;还能有效防御多种网络攻击&#xff08;如DDoS、SQL注入等&#xff09;。以下是 CDN 如何实现加速和防御的详细解析&#xff1a;1. CDN 如何加速网站…

【Linux】批量处理多个用户的 sudo 权限问题

要批量处理多个用户的 sudo 权限问题&#xff0c;有以下几种高效方法&#xff1a; 方法一&#xff1a;通过用户组批量授权&#xff08;推荐&#xff09; 这是最安全便捷的方式&#xff0c;只需将用户加入已有 sudo 权限组&#xff08;如 wheel 或 sudo&#xff09;&#xff1a;…

云原生MySQL Operator开发实战(五):扩展与生态系统集成

引言 在前四篇文章中,我们构建了一个功能完备的MySQL Operator,涵盖了从基础架构到生产部署的全过程。本文将作为本系列的收官之作,重点探讨Operator的扩展能力和与云原生生态系统的深度集成,包括自定义插件系统、与CI/CD流水线的集成、服务网格支持以及与云服务的无缝对接…

【MySQL】数据库的简单介绍

1.数据库是什么简单来说&#xff0c;数据库是用于存储数据和管理数据的软件。数据库可以提供远程服务&#xff0c;通过远程连接来使用数据库&#xff0c;因此数据库也被称为数据库服务器&#xff01;2.为什么要使用数据库存储数据用文件就可以了&#xff0c;为什么还要弄一个数…

uniapp,uview icon加载太慢了,老是显示叉叉,将远程加载改到本地加载。

处理方式&#xff1a;将远程字体文件下载到本地进行加载。app.vue。font-face {font-family: uicon-iconfont;src: url(./static/fonts/font_2225171_8kdcwk4po24.ttf) format(truetype);font-weight: normal;font-style: normal;}下载文件&#xff1a;从node_modules找文件u-i…

Python爬虫01_Requests第一血获取响应数据

引入requests包&#xff0c;发起请求并获取响应数据。 import requestsif __name__ "__main__":#step 1&#xff1a;指定urlurl http://www.7k7k.com/#step 2&#xff1a;发起请求&#xff0c;get方法会返回一个响应对象response requests.get(url)#step 3&#x…

Linux定时器和时间管理源码相关总结

基础可参考&#xff1a; Linux内核定时器相关内容总结-CSDN博客 定时器来源 定时器也是来源于芯片的硬件定时器&#xff0c;属于内部外设&#xff0c;有些可能也会用外部定时器&#xff0c;不管咋样&#xff0c;都属于芯片外设&#xff0c;既然是外设&#xff0c;那么我们也要编…

JDK17 新特性跟学梳理

JDK17 新特性跟学梳理JDK17 背景介绍一、JDK 17对Switch语句的增强二、字符串拼接三、强制转换四、密封类Sealed Classes五、Record类六、优化空指针异常信息七、ZGC垃圾收集器八、JVM常量API九、重写Socket底层API十、JDK飞行记录事件流十一、EdDSA签名算法十二、隐藏类十三、…

ESP8266 AT 固件

ESP-12E 是一种常见的 ESP8266 模块&#xff0c;通常带有 4MB&#xff08;32Mbit&#xff09;闪存&#xff0c;非常适合刷写 最新版 AT 固件。 ✅ 适用于 ESP‑12E 的 AT 固件推荐 固件来源固件版本特点Espressif 官方v2.2.1.0 (ESP8266 IDF AT)官方最新版&#xff0c;基于 RT…

Node.js(三)之Express

Express 目录 Express 九、初识Express 9.1 Express简介 1. 什么是 Express 2. 进一步理解Express 3. Express能做什么 9.2 Express的基本使用 1. 安装 2. 创建基本的Web服务器 3. 监听GET请求 4. 监听POST请求 5. 把内容响应给客户端 6. 获取URL中携带的查询参数…

IKAnalyzer分词插件使用方法

前言 随着越来越多的大数据网站崛起&#xff0c;特别是一些私人网站都提供了站内搜索&#xff0c;有些人会用elastsearch来实现站内搜索的目的&#xff0c;但是一些小站并没有那么大的数据提供搜索&#xff0c;在安装一个 elastsearch 服务未免有点浪费&#xff1f; 因此&#…

ESB 在零售,物流,制造,保险,医疗行业的应用方式

企业服务总线&#xff08;Enterprise Service Bus, ESB&#xff09;是一种基于中间件的集成模式&#xff0c;用于实现不同系统之间的集成与通信。ESB通过标准化接口、消息路由、协议转换和数据转换等功能&#xff0c;帮助企业实现系统间的无缝对接&#xff0c;提高业务敏捷性。…

vcsa6.7-重置root密码

客户反馈vc无法登录了&#xff0c;登录环境一看&#xff0c;报错如下首先想到是证书到期了&#xff0c;浏览器确认&#xff0c;确实是证书到期了准备ssh登录才发现root密码忘记了&#xff0c;那就先重置root密码&#xff0c;1、登录esxi主机找到vcsa6.7机器关机做快照2、开机到…

C++ 赋值与交换法则

在C中&#xff0c;赋值与交换法则&#xff08;Assignment and Swap Idiom&#xff09;通常指的是在实现类的赋值操作符&#xff08;operator&#xff09;时&#xff0c;结合拷贝构造和交换操作来确保强异常安全保证&#xff08;Strong Exception Safety Guarantee&#xff09;的…

Ambari中文汉化

Ambari-ZH 当前Ambari的汉化版本为2.7.4,汉化采用对该版本的ambari源码直接修改的方式进行,如有翻译不当之处,请批评指正 一、使用方法如下&#xff1a; 方式一&#xff1a;直接下载 下载地址&#xff1a;https://github.com/ukayunnuo/Ambari-2.7.x-zh/releases/download/…

表格之固定列和表头

说明 利用粘性定位实现 列固定 td.fixed {position: sticky;left: 0;z-index: 5;/* 最好指定背景&#xff0c;否则滑动时会显示下面的列 */background-color: #f8f9fa; }表头固定 <head><style>.table-container {position: relative;display: flex;overflow: hidd…

React 图标库发布到 npm 仓库

将搭建的 React 图标库发布到 npm 仓库需要经过一系列步骤&#xff0c;包括配置 package.json、构建代码、注册 npm 账号、测试和发布。以下是详细流程&#xff1a; 1. 准备工作 (1) 确保项目结构完整 图标库的典型结构&#xff08;以 Rollup 构建为例&#xff09;&#xff1…

Java学习第八十四部分——HttpClient

目录 一、前言介绍 二、主要特点 三、功能用法 四、应用场景 五、最佳实践 六、总结归纳 一、前言介绍 HttpClient 是一个用于发送 HTTP 请求和接收 HTTP 响应的客户端库&#xff0c;广泛应用于 Web 开发、API 调用、微服务通信等场景。 二、主要特点 支持多种HTTP方…

学习笔记-中华心法问答系统的性能提升

1.简介本周主要任务是自行查找文献&#xff0c;针对源代码进行性能提升&#xff0c;主要包括三个方面&#xff1a;预处理&#xff1a;分词、关键词提取、词向量生成&#xff1b;文本分析&#xff1a;从多个关键词的词向量&#xff0c;如何到一句话的语义理解&#xff1b;问题分…