基于ELK的分布式日志實時分析與可視化系統設計

目錄

一、ELK平臺介紹

1.ELK概述

2.Elasticsearch

3.Logstash

4.Kibana

二、部署ES群集

1.資源清單

2.基本配置

3.安裝Elasticsearch(elk1上、elk2上、elk3上)

4.安裝logstash(elk1上)

5.Filebeat

6.安裝Kibana(elk1上)


一、ELK平臺介紹

1.ELK概述

a.日志主要包括系統日志、應用程序日志和安全日志

b.日志被分散的存儲在不同的設備上

c.集中管理日志后,日志的統計和檢索利用grep、awk、wc實現

d.ELK的組成

Elasticsearch

Logstash

Kibana

2.Elasticsearch

a.概述

是一個基于Lucene的搜索服務器

它提供了一個分分布式多用戶能力的全文搜索引擎,基于RESTful web接口

- 能夠達到實時搜索、穩定、可靠、快速、安裝使用方便

b.核心概念

接近實時(NRT):意味著數據從被索引到可被搜索之間存在極短的延遲(通常1秒內)。這是由于 Lucene 的倒排索引機制和 Elasticsearch 的刷新(refresh)機制決定的,默認每1秒刷新一次,使新數據可見

集群(Cluster):是由一個或多個節點(Node)組成的集合,共同存儲數據并提供聯合索引和搜索能力。

節點(node):是集群中的一個獨立服務器,存儲數據并參與索引和搜索

索引(index):是類似數據庫中的“表”,用于存儲具有相似結構的文檔(Documents)

類型(type):用于邏輯劃分索引中的不同數據結構(類似數據庫的“表”)。

文檔(document):是 Elasticsearch 中的基本數據單元,以 JSON 格式存儲。

分片和復制(shards & replicas):

分片(Shards):索引可以被拆分為多個分片,提高并行處理能力。分片是獨立索引單元,可分布在不同節點上。

副本(Replicas):

每個分片可以有多個副本,提供高可用性(節點故障時數據不丟失)和負載均衡(查詢可并行執行)。默認情況下,ES 為每個索引創建1個主分片 + 1個副本(可在索引模板中調整)

3.Logstash

a.介紹

由JRsuby語言編寫,運行在Java虛擬機上,是一款強大的數據處理工具

可以實現數據傳輸、格式處理、格式化輸出

設計理念:數據輸入、數據加工、數據輸出

b.工作的三個階段

input數據輸入端,可以接收來自任何地方的源數據

Filter數據中轉層,主要進行格式處理,數據類型轉換,數據過濾,字段添加、修改等

Output是logstash工作的最后一個階段,負責將書籍輸出到指定位置,兼容大多數應用

4.Kibana

a.介紹

是一個設計使用和Elasticsearch配置工作的開源分析和可視化平臺

可以用它進行搜索、查看、集成Elasticserach中的數據索引

可以利用各種圖標、報表、地圖組件輕松的對數據進行可視化分析

b.主要功能

Elasticsearch無縫集成:支持直接查詢、過濾和聚合 ES 索引中的數據

整合數據:支持從多個 Elasticsearch 索引、Logstash 管道或 Beats 采集的數據進行統一分析。

復雜數據分析:支持 聚合(Aggregations) 操作,如 terms(分組統計)、date_histogram(時間序列分析)、avg(平均值計算)等

讓更多的團隊成員收益:提供 Dashboard(儀表盤) 功能,可將多個可視化圖表組合,并支持共享鏈接或嵌入到其他系統(如 Confluence、Web 應用

接口靈活:提供 REST API,允許開發者以編程方式管理 Kibana 對象

配置簡單:通過 Management 模塊可輕松管理索引模式、用戶權限、警報規則等

可視化多數據源:支持多種圖表類型(柱狀圖、折線圖、餅圖、熱力圖等),并可結合 Maps 插件展示地理數據。

簡單數據導出:支持將查詢結果或圖表導出為 CSV、PDF、PNG 格式,方便分享或進一步分析。

二、部署ES群集

1.資源清單

操作系統

IP地址

主機名

軟件包

OpenEuler 24.03

192.168.16.142

elk1

Elasticsearch、logstash、kibana

OpenEuler 24.03

192.168.16.143

elk2

Elasticsearch、filebeat、httpd

OpenEuler 24.03

192.168.16.144

elk3

Elasticsearch、

2.基本配置

a.設置主機名

hostnamectl set-hostname elk1
hostnamectl set-hostname elk2
hostnamectl set-hostname elk3

b.在ES主機上設置Host文件(elk1上、elk2上、elk3上)

vi /etc/hosts
192.168.16.142  elk1
192.168.16.143  elk2
192.168.16.144  elk3

c.創建es運行用戶(elk1上、elk2上、elk3上)

 useradd es

d.安裝java環境(elk1上、elk2上、elk3上)

dnf -y install java-11 tar
java -version

e.設置訪問限制(elk1上、elk2上、elk3上)

vi /etc/security/limits.confes soft nofile 65535
es hard nofile 65535
es soft nproc 65535
es hard nproc 65535
es soft memlock unlimited
es hard memlock unlimitedvi /etc/sysctl.conf
vm.max_map_count=655360sysctl -p

3.安裝Elasticsearch(elk1上、elk2上、elk3上)

a.安裝Elasticsearch

tar zxf elasticsearch-7.10.0-linux-x86_64.tar.gz 
mv elasticsearch-7.10.0 /usr/local/elasticsearch
vi /usr/local/elasticsearch/config/jvm.options-Xmx2g        #22
-Xmx2g

b.更改Elasticsearch主配置文件

#第一臺更改
vi /usr/local/elasticsearch/config/elasticsearch.ymlcluster.name: kgc-elk-cluster   #17行,群集名稱
node.name: elk1    #23行,本節點主機名
path.data: /elk/data    #33行,數據文件路徑
path.logs: /elk/logs    #37行,日志文件路徑
bootstrap.memory_lock: false    #43行,鎖定物理內存
network.host: 0.0.0.0    #55行,監聽地址
http.port: 9200    #59行,監聽端口
discovery.seed_hosts: ["elk1", "elk2","elk3"]    #68行,群集中的主機列表
cluster.initial_master_nodes: ["elk1"]    #72行,master主機名稱#推送配置文件到第二臺
scp /usr/local/elasticsearch/config/elasticsearch.yml elk2:/usr/local/elasticsearch/config/elasticsearch.yml#推送配置文件到第三臺
scp /usr/local/elasticsearch/config/elasticsearch.yml elk3:/usr/local/elasticsearch/config/elasticsearch.yml#第二臺更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk2    #23行,本節點主機名#第三臺更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk3    #23行,本節點主機名

c.創建數據存放路徑并授權

mkdir -p /elk/data
mkdir -p /elk/logs
chown -R es:es /elk/
chown -R es:es /usr/local/elasticsearch

d.啟動es

su - esnohup /usr/local/elasticsearch/bin/elasticsearch &
exit

e.查看節點信息

ss -nlpt | grep 9200
LISTEN 0      4096               *:9200            *:*    users:(("java",pid=3136,fd=253))

4.安裝logstash(elk1上)

a.在logstash服務器上安裝logstash

#安裝
tar zxf logstash-7.10.0-linux-x86_64.tar.gz 
mv logstash-7.10.0 /usr/local/logstash
chmod -R 777 /usr/local/logstash/data#添加服務
vi /usr/local/logstash/system.confinput { 
file{ 
path =>"/var/log/messages" 
type =>"system" 
start_position =>"beginning" 
} 
} 
output { 
elasticsearch { 
hosts => ["192.168.16.142:9200"] 
index =>"system-%{+YYYY.MM.dd}" 
} 
}#添加讀權限
chmod +r /var/log/messages

b.測試安裝結果

#采集日志(啟動)
/usr/local/logstash/bin/logstash -f /usr/local/logstash/system.conf
#訪問驗證(elk3上)
curl -XGET "http://localhost:9200/_cat/indices"
#green open system-2025.05.20 xnX0OgCxTmGZ6Msy5A1aXA 1 1 14184 0 5.8mb 2.8mb

5.Filebeat

a.在產生日志的客戶端上安裝Filebeat(elk2上)

dnf install -y httpd
systemctl start httpd

b.安裝filebeat(elk2上)

tar zxf filebeat-7.10.0-linux-x86_64.tar.gz
mv filebeat-7.10.0-linux-x86_64 /usr/local/filebeat

c.配置web01服務器filebeat的輸出(elk2上)

 vi /usr/local/filebeat/filebeat.ymlfilebeat.inputs:
- type: logpaths:- /var/log/httpd/access_logoutput.logstash:hosts: ["192.168.16.142:5044"]

d.修改logstash的配置文件(elk1上)

vi /usr/local/logstash/config/beats.confinput {beats {port => "5044"codec => "json"}
}
seccomp:enabled: false
output{elasticsearch {hosts => ["192.168.16.142:9200"]index => "weblog-beat-%{+YYYY.MM.dd}"}
}

e.運行logstash并驗證(elk1上)

/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/beats.conf --path.data=/usr/local/logstash/config.d/web01 &> /tmp/logstash.log &

f.啟動(elk2上)

/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml

6.安裝Kibana(elk1上)

a.在elk1上安裝Kibana

tar zxf kibana-7.10.0-linux-x86_64.tar.gz
mv kibana-7.10.0-linux-x86_64 /usr/local/kibana

b.修改Kibana主配置文件

vi /usr/local/kibana/config/kibana.ymlserver.port: 5601    #2行
server.host: "0.0.0.0"    #7行
elasticsearch.hosts: ["http://192.168.16.142:9200"]    #28行
kibana.index: ".kibana"    #32行chown -R es:es /usr/local/kibana

c.啟動Kibana服務

su - es
nohup /usr/local/kibana/bin/kibana &nohup /usr/local/kibana/bin/kibana &

d.驗證Kibana

http://192.168.16.142:5601/

?e.將elk1主機的系統日志添加到kinnba

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

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

相關文章

電機控制選 STM32 還是 DSP?技術選型背后的現實博弈

現在搞電機控制,圈里人都門兒清 —— 主流方案早就被 STM32 這些 Cortex-M 單片機給拿捏了。可要是撞上系統里的老甲方,技術認知還停留在諾基亞砸核桃的年代,非揪著 DSP 不放,咱也只能賠笑臉:“您老說的對,…

【案例分享】藍牙紅外線影音遙控鍵盤:瑞昱RTL8752CJF

藍牙紅外線影音遙控鍵盤 Remotec的無線控制鍵盤采用瑞昱藍牙RTL8752CJF解決方案,透過藍牙5.0與手機配對后,連線至 Remotec 紅外 code server 取得對應影音視覺設備的紅外 code后,即可控制多達2個以上的影音視覺設備,像是智能電視…

PostgreSQL如何更新和刪除表數據

這節說下怎樣更新和刪除表數據,當然認識命令了,可以問AI幫忙寫。 接上節先看下天氣表weather的數據,增加了杭州和西安的數據: 一.UPDATE更新命令 用UPDATE命令更新現有的行。 假設所有 杭州 5月12日的溫度低了兩度,用…

簡單三步FastAdmin 開源框架的安裝

簡單三步FastAdmin 開源框架的安裝 第一步:新建站點1,在寶塔面板中,創建一個新的站點,并填寫項目域名。 第二步:上傳框架1,框架下載2,上傳解壓縮 第三步:配置并安裝1,進入…

使用 pytesseract 構建一個簡單 OCR demo

簡介 pytesseract 庫是 Google Tesseract OCR (光學字符識別)引擎的一個 Python 封裝庫,使用廣泛且功能強大。 構建 使用 pytesseract 構建一個簡單 OCR demo。 步驟一:安裝必要的庫 您需要在您的 Python 環境中安裝 pytessera…

十三: 神經網絡的學習

這里所說的“學習”是指從訓練數據中自動獲取最優權重參數的過程。為了使神經網絡能進行學習,將導入損失函數這一指標。而學習的目的就是以該損失函數為基準,找出能使它的值達到最小的權重參數。為了找出盡可能小的損失函數的值,我們將介紹利…

AWS 創建VPC 并且添加權限控制

AWS 創建VPC 并且添加權限控制 以下是完整的從0到1在AWS中創建VPC并配置權限的步驟(包含網絡配置、安全組權限和實例訪問): 1. 創建VPC 步驟: 登錄AWS控制臺 訪問 AWS VPC控制臺,點擊 創建VPC。 配置基礎信息 名稱…

ICASSP2025丨融合語音停頓信息與語言模型的阿爾茲海默病檢測

阿爾茲海默病(Alzheimers Disease, AD)是一種以認知能力下降和記憶喪失為特征的漸進性神經退行性疾病,及早發現對于其干預和治療至關重要。近期,清華大學語音與音頻技術實驗室(SATLab)提出了一種將停頓信息…

C# 導出word 插入公式問題

最近遇到了一個問題,下載一個文檔時需要下載word可編輯的公式。找了很久終于找到了一種解決辦法。下面是以C#代碼來實現在Word中插入公式的功能。 目錄 一、引入dll程序集文件1、通過 NuGet 引入dll(2種方法)的方法:2、手動添加d…

智匯云舟攜最新無人機2D地圖快速重建技術亮相廣西國際礦業展覽會

5月22至25日,廣西國際礦業展覽會(以下簡稱 “礦業展”)在南寧國際會展中心成功舉辦。智匯云舟與合作伙伴廣西空馭數智信息技術有限公司攜無人機 2D地圖快速重建技術,以及視頻孿生智慧礦山解決方案參會,為礦山行業數字化…

OpenSSL 簽名驗證詳解:PKCS7* p7、cafile 與 RSA 驗簽實現

OpenSSL 簽名驗證詳解:PKCS7* p7、cafile 與 RSA 驗簽實現 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 數據結構和 cafile 的作用及相互關系,詳細講解基于 OpenSSL 的 RSA 驗簽字符串的 C 語言實現,涵蓋簽名解析、證書加載、驗證流程及關鍵要…

9:OpenCV—模板匹配

模版匹配 1、模板匹配概念 模板匹配是一項在一副圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術。模板匹配不是基于直方圖的,而是通過在輸入圖像上滑動圖像塊(模板)同時對比相似度,來對模板和輸入圖像…

Composer 常規操作說明與問題處理

目錄 一、 Composer 簡介,安裝二、全局配置三、項目配置(composer.json)3.1 composer.json 文件1. 基礎字段信息2. **require(生產環境依賴)**3. **require-dev(開發環境依賴)** 3.2 composer.l…

Spring Boot 3.0與Java 17:企業級應用開發的新范式

引言 隨著Spring Boot 3.0和Java 17的正式發布,企業級應用開發迎來了新的技術范式。這兩項技術的結合不僅帶來了性能提升,還引入了眾多現代化的編程特性,為開發者提供了更強大、更高效的開發體驗。本文將深入探討Spring Boot 3.0與Java 17的…

Vue 組件 - 指令

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue指令 目錄 指令寫法 自定義指令 簡單封裝指令 指令傳遞字符串 update事件 指令應用 指令實現輪播 指令函數簡寫 指令函數列表 bind inserted update componentUpdated unbind Vue3指令輪播 nextick 總結 指…

5.28 后端面經

為什么golang在并發環境下更有優勢 Go語言(Golang)在并發環境下的優勢主要源自其設計哲學和內置的并發機制,這些機制在語言層面提供了高效、簡潔且安全的并發編程工具。以下是其核心優勢的詳細分析: 1. Goroutine:輕量…

Linux線程入門

目錄 Linux線程概念 什么是線程 重新理解進程 線程的優點 線程的缺點 線程的異常 線程用途 Linux線程概念 什么是線程 在一個程序里的一個執行路線就叫做線程(thread)。更準確的定義是:線程是“一個進程內部的控制序列”。一切進程至…

通信應用高速模數轉換器ADC

在5G通信、醫療成像、航空航天及工業自動化等關鍵領域,高速ADC模數轉換器作為信號鏈的“心臟”,其性能直接決定了系統的精度與效率。然而,如何精確測試高速ADC的動態參數、優化設計驗證流程、應對復雜應用場景的挑戰,始終是工程師…

PostgreSQL 中 JSONB 數據類型的深度解析以及如何使用

一、JSONB 核心特性解析 1. 存儲結構與優勢 ??二進制存儲??:將 JSON 數據解析為二進制格式(分解鍵值對,去除空格和重復鍵)??高效查詢??:支持 GIN/GiST 索引,查詢速度比 JSON 類型快 10 倍??數據…

C++_核心編程_ 左移運算符重載 “<<” 左移運算符

作用&#xff1a;可以輸出自定義數據類型 */ //目標 調用p1,輸出Person 中的屬性 m_A ,m_B &#xff1a; /* #### 4.5.2 左移運算符重載 “<<” 左移運算符 作用&#xff1a;可以輸出自定義數據類型 *///目標 調用p1,輸出Person 中的屬性 m_A ,m_B &#xff1a; class…