[微服務]ELK Stack安裝與配置全指南

目錄

一、ELK相關介紹

1.1 什么是ELK Stack

1.2?ELK核心組件與功能

1.3 ELK優勢

1.4?ES數據庫結構對比SqlServer

二、安裝ELK

2.1?window安裝

2.2?Docker下環境搭建

2.2.1 安裝7.16.3版本ElasticSearch

2.2.2 安裝7.16.3版本Kibana :

2.2.3?安裝8.0.0版本ElasticSearch

2.2.4?配置支持跨域

2.2.5 安裝插件

2.3?集群構建

2.3.1?環境準備

2.3.2?集群構建思路

2.3.3?docker-Compose集群配置

三、文章總結


一、ELK相關介紹

1.1 什么是ELK Stack

?????????ELK Stack是由Elasticsearch、Logstash和Kibana三個核心組件構成的日志管理與分析解決方案,支持日志的收集、存儲、檢索及可視化。Java開發的高性能分布式日志系統,支持億級的查詢。

????????官網:ELK Stack:Elasticsearch、Kibana、Beats 和 Logstash | Elastic

1.2?ELK核心組件與功能

  1. ?Elasticsearch(ES)?高性能的數據庫引擎

    • 分布式搜索與分析引擎,負責海量數據的實時存儲、索引與檢索,基于Lucene構建,支持水平擴展與高可用架構。??
    • 特點:自動分片、副本機制、RESTful API接口,適用于全文搜索和結構化數據分析。??
  2. ?Logstash? 收集和保存數據的工具

    • 數據收集與處理管道,分為輸入(Input)、過濾(Filter)、輸出(Output)三個階段,支持200+插件,可解析非結構化數據(如日志文件)并進行格式轉換。??
    • 資源消耗較高,常與輕量級工具(如Filebeat)配合使用。??
  3. ?Kibana?。操作使用管理 ES數據庫的客戶端

    • 數據可視化平臺,提供交互式儀表盤、圖表及DevTools工具,便于用戶查詢和分析Elasticsearch中的數據。??

4.Beats: 高性能是數據工具.(可選組件)

????????Beats 不是一個單獨的軟件,而是一系列的數據采集器.每一個 Beat 都是一個獨立的組件,負責采集特定類型的數據,并將這些數據發送到 Elasticsearch 或者 Logstash 進行后續處理。例如,Filebeat 專門用于收集和轉發日志文件,Metricbeat 用于收集系統和服務的運行指標,Packetbeat 用于收集網絡流量數據等。

1.3 ELK優勢

  1. 支持分布式,支持集群部署,便于橫向擴展和高可用。
  2. 大數據量支持,PB級數據查詢---關系型數據庫沒法比
  3. 毫秒級響應
  4. 添加索引時性能穩定
  5. 支持頻繁更新(數據)(不推薦)
  6. 添加索引,支持近時搜索(1秒延遲)
  7. 支持結構化查詢:支持RESTful API,支持JSON數據結構通過?HTTP查詢數據,關系型數據庫中支持的各種操作,基本上都可以在這里完成;

1.4?ES數據庫結構對比SqlServer

SqlServer數據庫ES數據庫
數據庫Index索引庫:以索引為單位,內存保存,提高性能
數據庫表type類型: ES在8.0版本去掉類型,但是默認有類型:_doc
表-行document 文檔: 一個文檔就類似于一行數據
表-列field 字段 (非分詞字段和分詞字段)

二、安裝ELK

2.1?window安裝

? ? ? ? PS:ES是java開發,所以需要安裝jdk,建議安裝jdk --version 11 +

????????1.檢查本地是否安裝jdk

java -version ?

????????2.Jdk下載地址和安裝:

https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe ( sha256)

2.2?Docker下環境搭建

環境準備:

Linux-CentOS7
Docker version: Docker version 23.0.3,
elasticsearch官網:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

2.2.1 安裝7.16.3版本ElasticSearch

#拉取鏡像
docker pull elasticsearch:7.16.3
#如果沒有可用的鏡像源,可以用官網自帶的下載
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.16.3
#使用docker鏡像啟動容器 ? ElasticSearch單節點集群
docker run -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -
Xmx512m" elasticsearch:7.16.3
#下面是通過鏡像ID啟動容器
docker run -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -
Xmx512m" 鏡像id
#支持跨域的啟動
docker run -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -
Xmx512m" -e"http.cors.enabled=true" -e "http.cors.allow-origin="*"" elasticsearch:7.16.3

?????????ElasticSearch 啟動都是集群 無論是一個還是多個,一個就是單節點集群。瀏覽器訪問 ip:9200 ?如果出現以下界面就是安裝成功。

ps:在使用docker命令啟動時,注意相關參數的正確寫入,否則會出現如下異常“Unrecognized option: - ”

2.2.2 安裝7.16.3版本Kibana :

#創建網絡(兩種都可以,一種是默認一種使用橋接網絡)
#保證kibana可以訪問es
docker network create elastic#拉取鏡像
docker pull docker.elastic.co/kibana/kibana:7.16.3
#運行kibana
docker run --name kib01-test --net elastic -p 5601:5601 -e
"ELASTICSEARCH_HOSTS=http://ip:9200" kibana:7.16.3

????????Kibana默認的端口監聽: 5601

2.2.3?安裝8.0.0版本ElasticSearch

? ? ? ? 8.0后的ES安裝和以前版本會有不同。

# 拉取鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.0
docker pull docker.elastic.co/kibana/kibana:8.0.0
# 創建網絡
docker network create elastic
# 啟動 Elastic Search 8.0.0
docker run -it --name elasticsearch --net elastic --restart=always -p 9200:9200 -p 9300:9300 -e
"discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.0.0
# 第一次的日志中會打印出默認用戶elastic的初始密碼,以及用于Kibana啟動的enrollment token(半小時有效)注意保存

????????密碼記錄:

Elasticsearch安全功能已自動配置!
身份驗證已啟用,群集連接已加密。
-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
aV3Fl5SeEk6TttXnMiSB
-> HTTP CA certificate SHA-256 fingerprint:
f8577d958c7845dd88edbfd1bc140e6618dc19c755607671e8330074de9ec36e
-> Configure Kibana to use this cluster:
* Run Kibana and click the configuration link in the terminal when Kibana starts.
* Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30
minutes):
eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjAuMC4yOjkyMDAiXSwiZmdyIjoiZjg1NzdkOTU4Yzc4NDVkZDg4ZWRiZmQxYmMxNDB
lNjYxOGRjMTljNzU1NjA3NjcxZTgzMzAwNzRkZTllYzM2ZSIsImtleSI6Im9VZVdSWDhCMUw2ZFBhOGJ6SE81OjYyNDF1SVZSUWd5dk
s5ZDdXU1hZZlEifQ==
-> Configure other nodes to join this cluster:
* Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --
enrollment-token <token>` (valid for the next 30 minutes):
eyJ2ZXIiOiI4LjAuMCIsImFkciI6WyIxNzIuMjAuMC4yOjkyMDAiXSwiZmdyIjoiZjg1NzdkOTU4Yzc4NDVkZDg4ZWRiZmQxYmMxNDB
lNjYxOGRjMTljNzU1NjA3NjcxZTgzMzAwNzRkZTllYzM2ZSIsImtleSI6Im8wZVdSWDhCMUw2ZFBhOGJ6SFByOnU2RkR6cG5TUjVTS3
NmZzJVMUhrdncifQ==
If you're running in Docker, copy the enrollment token and run:
`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.0.0`
------------------------------------------------------------------------------------------------------

? ? ? ? 運行8.0.0Kibana

# 啟動 Kibana 8.0.0
docker run --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.0.0
# 第一次的日志中會打印出啟動配置網址,在瀏覽器打開并輸入enrollment token,等待完成配置
# 使用用戶名elastic和之前保存的密碼登錄

2.2.4?配置支持跨域

? ? ? ? 1、修改docker中elasticsearch的elasticsearch.yml文件--支持跨域

? ? ? ? ps:修改了網絡配置,重啟網卡后,如果docker 容器鏈接不上,重啟docker引擎

#進入到容器
docker exec -it elasticsearch /bin/bash
修改
vi config/elasticsearch.ym
增加配置信息
http.cors.enabled: true
http.cors.allow-origin:"*"
#重啟容器

? ? ? ? 2、在啟動容器時寫入環境變量

docker run -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e"http.cors.enabled=true" -e "http.cors.allow-origin="*"" elasticsearch:7.16.3

2.2.5 安裝插件

? ? ? ? 1、安裝ik分詞器

# 安裝ik分詞器
# 下載 https://github.com/medcl/elasticsearch-analysis-ik/releases
4、配置支持跨域
修改docker中elasticsearch的elasticsearch.yml文件--支持跨域
docker cp elasticsearch-analysis-ik-8.0.0.zip elasticsearch:/usr/share/elasticsearch/plugins
# 進入elasticsearch命令行
cd plugins/
mkdir ik
mv elasticsearch-analysis-ik-8.0.0.zip ik/
cd ik/
unzip elasticsearch-analysis-ik-8.0.0.zip
rm elasticsearch-analysis-ik-8.0.0.zip
# 重啟es和kibana
docker restart elasticsearch
docker restart kibana

# 在kibana中測試ik分詞器
GET _analyze
{
"text" : "測試一下分詞器",
"analyzer": "ik_max_word"
}

????????2、支持Sql查詢:

1.獲取elasticsearch容器的ID
docker ps ?
2.進入elasticsearch的docker容器
docker exec -it 容器ID /bin/bash
3.安裝elasticsearch對應的elasticsearch-sql插件
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-
sql/releases/download/7.16.3.0/elasticsearch-sql-7.16.3.0.zip
4.Elasticsearch-sql默認支持查詢最大記錄數10000,更改最大查詢值100000000
curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' ? ? ? ?
http://192.168.1.131:9200/logs*/_settings -d '{"index":{ "max_result_window":1000000000}}'
備注:http://192.168.1.131:9200替換成對應的elasticsearch服務器地址
5.退出容器

? ? ? ? 3、瀏覽器插件

  • Multi Elasticsearch Head
  • Elasticsearch Tools
  • 國人開發的瀏覽器插件:es-client

2.3?集群構建

????????官方提供的ElasticSearch 只會有32個G,ElasticSearch 號稱百億數據庫,所以必須的支持擴容,支持集群.

????????一個ElasticSearch 服務器支持32個G,那么10個ElasticSearch 服務器就可以支持320個G。。。。。

????????ElasticSearch 生來就是集群的,前面Docker的啟動的其實也是集群,叫單節點集群。

2.3.1?環境準備

Linux系統:CentOS7

Docker version: 26.1.4

2.3.2?集群構建思路

????????啟動多個Docker,每一個Docker就是一個獨立的系統,每個Dokcer中獨立的有ElasticSearch的進

程;其實就是多個Docker 容器集群。每一個啟動的Docker配置好配置文件即可;如果使用Docker

Compose來做,可以做到一鍵啟動集群;

????????集群前環境準備:

1.掛載的目錄必須設置完全權限: chmod 777 /root/elk/data01

2.調高vm線程數限制 (解決Elasticsearch啟動時出現的vm.max_map_count不足問題,需要調整Linux系統的內核參數)

? ? ? ? 若集群時出現如下問題:

#進入配置文件
vim /etc/sysctl.conf
#調整vm線程數
vm.max_map_count=655360 
#執行生效
sysctl –p

? ? ?3、或者直接執行下面代碼 sysctl -w vm.max_map_count=655360

????????臨時修改,重啟后失效:

sudo sysctl -w vm.max_map_count=262144

2.3.3?docker-Compose集群配置

1、配置ES集群所在文件夾結構

? ?

2、yml文件內容

version: '3.4'services:es01:image: "docker.elastic.co/elasticsearch/elasticsearch:7.16.3"container_name: es01ports:- "9200:9200"- "9300:9300"environment:node.name: es01discovery.seed_hosts: es01,es02,es03cluster.initial_master_nodes: es01,es02,es03cluster.name: myclusterES_JAVA_OPTS: -Xms512m -Xmx512mvolumes:- "./data01:/usr/share/elasticsearch/data"- "./plugins/ik:/usr/share/elasticsearch/plugins/ik" - "./plugins/sql:/usr/share/elasticsearch/plugins/sql"ulimits:memlock:soft: -1hard: -1es02:image: "docker.elastic.co/elasticsearch/elasticsearch:7.16.3"container_name: es02ports:- "9201:9200"- "9301:9300"environment:node.name: es02discovery.seed_hosts: es01,es02,es03cluster.initial_master_nodes: es01,es02,es03cluster.name: myclusterES_JAVA_OPTS: -Xms512m -Xmx512mvolumes:- "./data02:/usr/share/elasticsearch/data"- "./plugins/ik:/usr/share/elasticsearch/plugins/ik" - "./plugins/sql:/usr/share/elasticsearch/plugins/sql"ulimits:memlock:soft: -1hard: -1es03:image: "docker.elastic.co/elasticsearch/elasticsearch:7.16.3"container_name: es03ports:- "9202:9200"- "9302:9300"environment:node.name: es03discovery.seed_hosts: es01,es02,es03cluster.initial_master_nodes: es01,es02,es03cluster.name: myclusterES_JAVA_OPTS: -Xms512m -Xmx512mvolumes:- "./data03:/usr/share/elasticsearch/data"- "./plugins/ik:/usr/share/elasticsearch/plugins/ik" - "./plugins/sql:/usr/share/elasticsearch/plugins/sql"ulimits:memlock:soft: -1hard: -1kibana:image: docker.elastic.co/kibana/kibana:7.16.3container_name: kibanadepends_on:- es01- es02- es03ports:- "5601:5601"- "9600:9600"environment:SERVERNAME: kibanaELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]'ES_JAVA_OPTS: -Xmx512m -Xms512m

三、文章總結

????????Elasticsearch (ES)是一個基于 Lucene 的開源搜索引擎,它不但穩定、可靠、快速,而且也具有良好的水平擴展能力,是專門為分布式環境設計的,Elasticsearch是面向文檔型數據庫。很多商城項目中會把商品訂單信息存儲到ES中。沒有最好的技術只有最適合項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93371.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93371.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java項目怎么實現用戶行為分析、漏斗轉化、數據可視化報表。

在 Java 項目中實現用戶行為分析、漏斗轉化和數據可視化報表是一個系統性的工作&#xff0c;需要從數據采集、存儲、分析到展示的完整鏈路設計。以下是一個可行的實現方案&#xff1a;1. 整體架構設計建議采用分層架構&#xff1a;數據采集層&#xff1a;收集用戶行為數據數據存…

緩存元數據損壞操作步驟(lvmcache修復)

現象為:機械盤丟失cvol-cmeta卷如圖所示,lvm邏輯卷中缺失緩存的lvm,這邊以只讀cache為例日志現象報錯信息為:lvmcache_cvol failed manual repair required!lvmcache_cvol failed: manual repair required! 這類報錯&#xff0c;本質上是 LVM cache 池&#xff08;cache-pool&…

使用CMAKE-GUI生成Visual Studio項目

使用CMAKE-GUI生成Visual Studio項目第一種&#xff0c;如果我們想把以Cmake構建的項目移植VS上&#xff0c;就可以使用Cmake來生成.sln文件 準備生成的目錄文件先準備好我們要打包的源代碼等文件&#xff08;放在resource下&#xff09;使用cmake-gui工具來構建&#xff08;命…

20道DOM相關前端面試題

DOM 相關面試題及答案 什么是 DOM&#xff1f;DOM 樹的結構是怎樣的&#xff1f; DOM&#xff08;文檔對象模型&#xff0c;Document Object Model&#xff09;是 HTML/XML 文檔的編程接口&#xff0c;將文檔結構化為樹形節點集合&#xff0c;允許程序動態訪問和修改文檔內容、…

CVE-2021-4300漏洞復現

Adminer是一個PHP編寫的開源數據庫管理工具&#xff0c;支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等數據庫。在其版本1.12.0到4.6.2之間存在一處因為MySQL LOAD DATA LOCAL導致的文件讀取漏洞。 一、偽造服務器 利用mysql-fake-serve…

【LeetCode題解】LeetCode 35. 搜索插入位置

【題目鏈接】 35. 搜索插入位置 【題目描述】 【題解】 通過題目可以知道這是一道經典的二分查找的題目&#xff0c;對于二分查找的題目&#xff0c;根據需要查找的兩個邊界點&#xff0c;分為兩個不同的模板&#xff0c;如下圖所示。 這道題要求在數組中查找目標值并返回其索…

RK3568 NPU RKNN(五):RKNN-ToolKit-lite2板端推理

文章目錄1、前言2、目標3、安裝RKNN-ToolKit-lite23.1、安裝環境3.2、安裝RKNN-ToolKit-lite23.3、驗證4、完整的測試程序5、運行測試程序6、程序拆解7、總結1、前言 本文僅記錄本人學習過程&#xff0c;不具備教學指導意義。 2、目標 之前提到過&#xff0c;RKNN-Toolkit2-…

二分查找。。

1 二分查找二分查找前提是數組有序。先令&#xff0c;left 0 , right 7mid (right left) / 2;如果mid的值大于要查找的值&#xff0c;則right mid - 1&#xff1b;如果小于&#xff0c;left mid 1&#xff1b;如果mid的值等于要查找的值&#xff0c;查找成功。重復步驟2…

Spring Ai 如何配置以及如何搭建

Spring Ai 如何配置以及如何搭建 解釋什么是Spring ai 首先&#xff0c;我們用Spring ai 其實不是去了解他的LLM,以及底層用的一些東西&#xff0c;Spring AI,提供給我們的其實是對各種大模型快速調用&#xff0c;提供了大模型API的作用&#xff0c;Spring AI 的核心定位是提…

FCC認證三星XR頭顯加速全球量產,微美全息AI+AR技術引領智能眼鏡硬件創新

據悉&#xff0c;三星(SSNGY.US)XR頭顯Project Moohan目前已獲得美國FCC認證&#xff0c;FCC認證表明該款頭顯即將上市&#xff0c;之前三星財報會議也表明確認將于今年年底推出XR頭顯。此前有報道稱&#xff0c;該設備將采用索尼旗艦級 OLEDoS 顯示屏&#xff0c;像素密度高達…

洛谷P1595講解(加強版)+錯排講解

前言接我原先的文章&#xff0c;因為一場考試&#xff0c;讓我對這道題記憶深刻注&#xff1a;&#xff08;因為那道題&#xff0c;所以80分&#xff09;正文1.分析題目題目&#xff1a;某人寫了 n 封信和 n 個信封&#xff0c;如果所有的信都裝錯了信封。求所有信都裝錯信封共…

提升化工制造質量的 7 種方法

盡管化工制造屬于制造業的一個子類別&#xff0c;但它是一個廣泛的范疇&#xff0c;涵蓋了基礎化學品、樹脂和合成纖維、農藥和化肥、涂料和粘合劑&#xff0c;甚至消費類化合物&#xff08;如肥皂和清潔化學品&#xff09;等所有領域。盡管這些細分領域差異巨大&#xff0c;但…

從“數據壟斷”到“全民共建”:Dataparts如何重構智能時代的數據流通規則?

從“數據壟斷”到“全民共建”&#xff1a;Dataparts如何重構智能時代的數據流通規則&#xff1f;在杭州某科技園區的會議室里&#xff0c;一場關于“AI大模型訓練數據”的討論正在激烈進行。某頭部AI企業的技術總監指著屏幕上的“對話場景零件庫”說&#xff1a;“過去我們花3…

31 HTB Union 機器 - 中等難度

第一階段 偵查nmap掃描oxdfparrot$ nmap -p- --min-rate 10000 -oA scans/nmap-alltcp 10.10.11.128 Starting Nmap 7.80 ( https://nmap.org ) at 2021-11-19 08:29 EST Nmap scan report for 10.10.11.128 Host is up (0.092s latency). Not shown: 65534 filtered ports POR…

【數據分享】上市公司創新韌性數據(2007-2023)

數據介紹核心看點&#xff1a; 在復雜多變的市場環境中&#xff0c;企業如何通過創新維持競爭力&#xff1f;創新韌性是衡量企業在外部沖擊下保持創新活力的關鍵指標。本文分享2007-2023年上市公司創新韌性數據&#xff0c;為研究企業抗風險能力提供核心支持。數據概覽數據名稱…

服務器配置開機自啟動服務

一、配置啟動文件sudo vim /etc/systemd/system/smartailab-backend.service sudo vim /etc/systemd/system/reall3d-frontend.servicesudo vim /etc/systemd/system/Culture_Liquor-backend.servicevim /etc/systemd/system/Culture_Liquor-backend.service內容&#xff1a;[U…

Ubuntu 25.04更新了哪些內容揭秘

2025年4月,Canonical正式推出Ubuntu 25.04 版本,代號"Plucky Puffin(勇敢的海鸚)"。此次發布圍繞AI算力強化、桌面交互革新與跨架構支持三大核心方向展開,為開發者、創作者及企業用戶帶來多項突破性升級。 一、核心系統更新 systemd v257.4帶來了重要的上游更新…

PHP反序列化的CTF題目環境和做題復現第2集_POP鏈構造

1 通過pop參數get方式提交反序列信息 2 題目 http://192.168.1.8/fxl2/fxl2_pop.php <?php highlight_file(__FILE__);class a {protected $var;public function hello(){echo $this->var;} }class b {public $cla;public function __destruct(){$this->cla->…

攻防世界—fakebook(兩種方法)

一.審題這邊先進行測試&#xff0c;login和join都失敗了&#xff0c;所以沒獲取到什么消息。二.dirsearch工具掃描所以拿dirsearch掃一下&#xff0c;看看有沒有什么文件可以訪問。python3 dirsearch.py -u url可以看到當前目錄下存在flag.php,robots.txt等&#xff0c;訪問fla…

AI+物聯網如何重塑倉儲供應鏈?3個落地場景與系統架構設計思路

一、引言 在科技飛速發展的當下&#xff0c;AI與物聯網技術的融合為倉儲供應鏈領域帶來了革新契機。這種融合不僅優化了傳統運作模式&#xff0c;還催生出更智能、高效的管理方案&#xff0c;業財一體管理軟件也在其中發揮著關鍵作用。 二、AI物聯網在倉儲供應鏈的落地場景 &am…