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
英文地址,請注明出處:http://en.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;問題分…