ELK日志分析系統(filebeat+logstash+elasticsearch+kibana)

一、ELK 平臺介紹

1、ELK 概述

????????日志主要包括系統日志、應用程序日志和安全日志。系統運維和開發人員可以通過日志了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日志可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。
????????通常,日志被分散的儲存不同的設備上。如果你管理數十上百臺服務器,你還在使用依次登錄每臺機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日志管理,例如:開源的 syslog,將所有服務器上的日志收集匯總。
????????集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用 grep、awk 和 wc 等 Linux 命令能實現檢索和統計,但是對于要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
????????開源實時日志分析 ELK 平臺能夠完美的解決我們上述的問題,ELK 由 ElasticSearch、Logstash 和 Kiabana 三個開源工具組成。

工具名稱簡介
Elasticsearch開源分布式搜索引擎,特點有分布式、零配置、自動發現、索引自動分片、索引副本機制、restful 風格接口、多數據源、自動搜索負載等
Logstash完全開源工具,可對日志進行收集、過濾,存儲供后續使用(如搜索 )
Kibana開源免費工具,為 Logstash 和 Elasticsearch 提供日志分析友好的 Web 界面,助力匯總、分析和搜索重要數據日志

進行日志處理分析,一般需要經過一下幾步:
(1)將日志進行集中化管理
(2)將日志格式化(Logstash)并輸出到 Elasticsearch
(3)對格式化后的數據進行索引和存儲(Elasticsearch)
(4)前端數據的展示(Kibana)

2、Elasticsearch

2.1、ElasticSearch 概述

????????Elasticsearch 是一個基于 Lucene 的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 開發的,并作為 Apache 許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。

2.2 Elasticsearch 核心概念

(1)接近實時(NRT)

????????Elasticsearch 是一個接近實時的搜索平臺。這意味著,從索引一個文檔直到這個文檔能夠被搜索到有一個輕微的延遲(通常是 1 秒)。

(2)集群(cluster)

一個集群就是由一個或多個節點組織在一起,它們共同持有你整個的數據,并一起提供索引和搜索功能。一個集群由一個唯一的名字標識,這個名字默認就是 “elasticsearch”。這個名字是重要的,因為一個節點只能通過指定某個集群的名字,來加入這個集群。

(3)節點(node)

????????一個節點是你集群中的一個服務器,作為集群的一部分,它存儲你的數據,參與集群的索引和搜索功能。和集群類似,一個節點也是由一個名字來標識的,默認情況下,這個名字是一個隨機的漫威漫畫角色的名字,這個名字會在啟動的時候賦予節點。這個名字對于管理工作來說挺重要的,因為在這個管理過程中,你會去確定網絡中的哪些服務器對應于 Elasticsearch 集群中的哪些節點。
一個節點可以通過配置集群名稱的方式來加入一個指定的集群。默認情況下,每個節點都會被安排加入到一個叫做 “elasticsearch” 的集群中,這意味著,如果你在你的網絡中啟動了若干個節點,并假定它們能夠相互發現彼此,它們將會自動地形成并加入到一個叫做 “elasticsearch” 的集群中。
在一個集群里,只要你想,可以擁有任意多個節點。而且,如果當前你的網絡中沒有運行任何 Elasticsearch 節點,這時啟動一個節點,會默認創建并加入一個叫做 “elasticsearch” 的集群。

(4)索引(index)

????????一個索引是一個擁有幾分相似特征的文檔的集合。比如說,你可以有一個客戶數據的索引,另一個產品目錄的索引,還有一個訂單數據的索引。一個索引由一個名字來標識(必須全部是小寫字母的),并且當我們要對對應于這個索引中的文檔進行索引、搜索、更新和刪除的時候,都要使用到這個名字。在一個集群中,可以定義任意多的索引。

(5)類型(type)

????????在一個索引中,你可以定義一種或多種類型。一個類型是你的索引的一個邏輯上的分類 / 分區,其語義完全由你來定。通常,會為具有一組共同字段的文檔定義一個類型。比如說,我們假設你運營一個博客平臺并且將你所有的數據存儲到一個索引中。在這個索引中,你可以為用戶數據定義一個類型,為博客數據定義另一個類型,當然,也可以為評論數據定義另一個類型。

(6)文檔(document)

????????一個文檔是一個可被索引的基礎信息單元。比如,你可以擁有某一個客戶的文檔,某一個產品的一個文檔,當然,也可以擁有某個訂單的一個文檔。文檔以 JSON(Javascript Object Notation)格式來表示,而 JSON 是一個到處存在的互聯網數據交互格式。
在一個 index/type 里面,你可以存儲任意多的文檔。注意,盡管一個文檔,物理上存在于一個索引之中,文檔必須被索引 / 賦予一個索引的 type。

(7)分片和復制(shards & replicas)

????????一個索引可以存儲超出單個節點硬件限制的大量數據。比如,一個具有 10 億文檔的索引占據 1TB 的磁盤空間,而任一節點都沒有這樣大的磁盤空間;或者單個節點處理搜索請求,響應太慢。為了解決這個問題,Elasticsearch 提供了將索引劃分成多份的能力,這些份就叫做分片。當你創建一個索引的時候,你可以指定你想要的分片的數量。每個分片本身也是一個功能完善并且獨立的 “索引”,這個 “索引” 可以被放置到集群中的任何節點上。分片很重要,主要有兩方面的原因:

1)允許你水平分割 / 擴展你的內容容量。

2)允許你在分片(潛在地,位于多個節點上)之上進行分布式的、并行的操作,進而提高性能 / 吞吐量。

????????至于一個分片怎樣分布,它的文檔怎樣聚合回搜索請求,是完全由 Elasticsearch 管理的,對于作為用戶的你來說,這些都是透明的。

????????在一個網絡 / 云的環境里,失敗隨時都可能發生,在某個分片 / 節點不知怎么的就處于離線狀態,或者由于任何原因消失了,這種情況下,有一個故障轉移機制是非常有用并且是強烈推薦的。為此目的,Elasticsearch 允許你創建分片的一份或多份拷貝,這些拷貝叫做復制分片,或者直接叫復制。

????????復制之所以重要,有兩個主要原因:在分片 / 節點失敗的情況下,提供了高可用性。因為這個原因,注意到復制分片從不與原 / 主要(original/primary)分片置于同一節點上是非常重要的。擴展你的搜索量 / 吞吐量,因為搜索可以在所有的復制上并行運行。總之,每個索引可以被分成多個分片。一個索引也可以被復制 0 次(意思是沒有復制)或多次。一旦復制了,每個索引就有了主分片(作為復制源的原來的分片)和復制分片(主分片的拷貝)之別。分片和復制的數量可以在索引創建的時候指定。在索引創建之后,你可以在任何時候動態地改變復制的數量,但是你事后不能改變分片的數量。
????????默認情況下,Elasticsearch 中的每個索引被分片 5 個主分片和 1 個復制,在兩個節點的場景中,每個索引將會有 5 個主分片和另外 5 個副本分片,每個索引總共就有 10 個分片。但是在 Elasticsearch 7.0 以后的版本中默認分片數做了調整中,默認索引的主分片(Primary Shards)數量為 1,副本分片(Replica Shards)數量為 1

3、Logstash

3.1 Logstash 介紹

Logstash 有 JRuby 語言編寫,運行在 Java 虛擬機(JVM)上,是一款強大的數據處理工具,可以實現數據傳輸、格式處理、格式化輸出。Ligstash 具有強大的插件功能,常用于日志處理。
Logstash 的設計理念:Logstash 只做三件事,數據輸入、數據加工、數據輸出

3.2、Logstash 工作的三個階段

(1)input 數據輸入端,可以接收來自任何地方的源數據
插件功能描述
file從文件中讀取
syslog監聽在 514 端口的系統日志信息,并解析成 RFC3164 格式
redis從 redis - server list 中獲取,并解析成 RFC3164 格式
beat接收來自 Filebeat 的事件
(2)Filter 數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,常用的過濾器如下。
插件功能描述
grok通過正則解析和結構化任何文本
mutate在事件字段執行一般的轉換,可重命名、刪除、替換和修改事件字段
drop完全丟棄事件,如 debug 事件
clone復制事件,可能添加或者刪除字段
geoip添加有關 IP 地址地理位置信息
(3)output 是 logstash 工作的最后一個階段,負責將數據輸出到指定位置,兼容大多數應用,常用的有:elasticsearch:發送事件數據到 Elasticsearch,便于查詢,分析,繪圖。
插件功能描述
elasticsearch發送事件數據到 Elasticsearch,便于查詢、分析、繪圖
file將事件數據寫入到磁盤文件上
mongodb將事件數據發送至高性能 NoSQL mongodb,便于永久存儲、查詢、分析,大數據分片
redis將數據發送至 redis - server,常用于中間層暫時緩存
graphite發送事件數據到 graphite

4、Kibana

4.1 Kibana 介紹

????????Kibana 是一個設計使用和 Elasticsearch 配置工作的開源分析和可視化平臺。可以用它進行搜索、查看、集成 Elasticsearch 中的數據索引。可以利用各種圖表、報表、地圖組件輕松的對數據僅進行可視化分析

4.2、Kibana 主要功能

Elasticsearch 無縫集成
整合數據
復雜數據分析
讓更多的團隊成員收益
接口靈活
配置簡單
可視化多數據源
簡單數據導出

二、實驗案例

拓撲

資源列表

主機名ip 地址操作系統軟件包
-192.168.10.101Openeuler24filebeat、httpd
-192.168.10.102Openeuler24logstash
elk1192.168.10.103Openeuler24Elasticsearch、kibana
elk2192.168.10.104Openeuler24Elasticsearch

1、基礎配置

1.1、關閉防火墻及內核保護

hostnamectl set-hostname elk1
hostnamectl set-hostname elk2vim /etc/hosts
###添加內容###
192.168.10.103 elk1
192.168.10.104 elk2systemctl stop firewalld
systemctl disable firewalld
setenforce 0vim /etc/selinux/config
###編輯內容###
SELINUX=disabled

1.2、添加程序用戶

useradd elk
passwd elk              ###密碼“elk”######加入到wheel組中
gpasswd -a elk wheel###關閉命令使用認證
visudo###編輯內容###
%wheel ALL=(ALL)       NOPASSWD: ALL        ###110行###切換到程序用戶并加載完整的環境###
su - elk

1.3、部署環境

sudo dnf -y install java

1.4、修改用戶可用的硬件資源

sudo vim /etc/security/limits.conf
###添加內容###
elk soft nofile 65535
elk hard nofile 65535
elk soft nproc  65535
elk hard nproc  65535
elk soft memlock unlimited
elk hard memlock unlimited

1.5、從內核方面為進程分配更大的可用內存區

sudo vim /etc/sysctl.conf
###添加內容###
vm.max_map_count=655360

1.6、重啟加載配置文件

sudo reboot

2.安裝elasticsearch

2.1、切換到指定目錄拉取安裝包

cd /opt
su - elk

2.2、解壓elasticsearch并移動到合適位置

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

2.3、編輯JAVA文件

sudo vim /usr/local/elasticsearch/config/jvm.options
###編輯內容###
-Xms2g
-Xmx2g

2.4、修改elasticsearch配置文件

sudo vim /usr/local/elasticsearch/config/elasticsearch.yml###編輯內容###
cluster.name: aaa
node.name: elk1
path.data: /path/to/data
path.logs: /path/to/logs
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["elk1", "elk2"]
cluster.initial_master_nodes: ["elk1"]

2.5、創建數據存放路徑

sudo mkdir -p /path/to/data
sudo mkdir -p /path/to/logs
sudo chown -R elk:elk /path
sudo chown -R elk:elk /usr/local/elasticsearch/

2.6、啟動并查看監聽

/usr/local/elasticsearch/bin/elasticsearch &
netstat -anpt | grep 9200

3、安裝logstash

3.1、關閉防火墻及內核保護

systemctl stop firewalld
setenforce 0
dnf -y install java
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/

3.2、編輯配置文件

chmod o+r /var/log/messages
touch /usr/local/logstash/system.conf
vim /usr/local/logstash/system.conf###編輯內容###
input {file {path => "/var/log/messages"type => "system"start_position => "beginning"}}output {elasticsearch {hosts=> ["192.168.10.103:9200","192.168.10.104:9200"]index=> "system-%{+YYYY.MM.dd}"}}

3.3、啟動并查看監聽

/usr/local/logstash/bin/logstash -f /usr/local/logstash/system.conf &
netstat -anpt | grep java

4、部署filebeat

4.1、安裝apache

systemctl stop firewalld
setenforce 0
dnf -y install httpd
systemctl start httpd
echo "filebeataaaaaa" > /var/www/html/index.html

4.2、安裝filebeat

tar zxf filebeat-7.10.0-linux-x86_64.tar.gz
mv filebeat-7.10.0-linux-x86_64 /usr/local/filebeat
cd /usr/local/filebeat/
mv filebeat.yml filebeat.yml.bak
vim filebeat.yml
###編輯內容###
filebeat.inputs:
- type: logpaths:- /var/log/httpd/access_logoutput.logstash:hosts: ["192.168.10.102:5044"]###檢查配置文件###
./filebeat test config -c filebeat.yml

4.3、修改用戶可用的硬件資源

vim /etc/security/limits.conf
###編輯內容###
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft memlock unlimited
* hard memlock unlimitedvim /etc/sysctl.conf
###編輯內容###
vm.max_map_count=655360

4.4、啟動filebeat服務

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

4.5、查看監聽

netstat -anpt | grep filebeat

4.6、修改 logstash 的配置文件,使日志輸出到 elasticsearch

vim /usr/local/logstash/config/beats.conf
###編輯內容###
input {beats {port => "5044"codec => "json"}
}output {elasticsearch {hosts => ["192.168.10.103:9200"]index => "weblog-beat-%{+YYYY.MM.dd}"}
}

4.7、運行服務

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

5、安裝 Kibana

5.1、在 elk1 上安裝 Kibana

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

5.2、修改配置文件

vim /usr/local/kibana/config/kibana.yml
###編輯內容###
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.10.103:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"

5.3、修改歸屬并啟動服務

chown -R elk:elk /usr/local/kibana/
su - elk
/usr/local/kibana/bin/kibana &

5.4、訪問:

http://192.168.10.103:5601

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

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

相關文章

JS基礎4—jQuery

jQuery常用內容 jQuery 介紹jQuery 獲取方式基本選擇器 (最常用)層級選擇器 (基于元素間關系)過濾選擇器 (基于特定條件) jQuery事件綁定jQuery 方法調用jQuery遍歷jQuery 獲取與設置jQuery 添加與刪除jQuery CSS 類jQuery - AJAX 總結 jQuery 介紹 jQuery 是一個輕量級、快速…

時鐘周期是什么?

時鐘周期(Clock Cycle)是什么? 時鐘周期(Clock Cycle)是計算機系統中一個最基礎的時間單位,也稱為時鐘節拍或時鐘周期時間(Clock Period)。它由系統時鐘發生器產生的一個周期性脈沖…

如何用SEO優化長尾關鍵詞?

內容概要 在SEO優化領域,長尾關鍵詞扮演著至關重要的角色,它們能有效提升網站在搜索引擎中的可見度和流量轉化率。本文將全面解析如何通過系統方法優化長尾關鍵詞,涵蓋從基礎理論到實戰應用的完整流程。核心內容包括利用專業工具進行關鍵詞挖…

電子面單系統開發全解析

一、如果要做電子面單系統,怎么做? 開發電子面單系統是一項復雜且涉及多方面考量的工程,涵蓋需求分析、系統架構設計、技術選型、接口對接、安全性保障、第三方服務選擇以及部署與維護等關鍵環節。 電子面單系統開發步驟 需求分析&#xf…

UE5 - 制作《塞爾達傳說》中林克的技能 - 18 - 磁力抓取器

讓我們繼續《塞爾達傳說》中林克技能的制作!!! UE版本:5.6.0 VS版本:2022 本章節的核心目標:磁力抓取器 先讓我們看一下完成后的效果: 18_磁力抓取器 大綱如下: 引言功能架構與核心邏輯物理材質與場景配置代碼實現:從識別到操控操作說明1.引言 在《塞爾達傳說》中,林…

基于ApachePOI實現百度POI分類快速導入PostgreSQL數據庫實戰

目錄 前言 一、百度POI分類簡介 1、數據表格 2、分類結構 二、從Excel導入到PG數據庫 1、Excel解析流程 2、數據入庫 3、入庫成果及檢索 三、總結 前言 在上一篇博文中,我們對高德POI分類進行了深入剖析 并對Excel 中 POI 分類數據的存儲結構特點進行了詳細介…

學習經驗分享【41】YOLOv13:基于超圖增強自適應視覺感知的實時目標檢測

YOLO算法更新速度很快,已經出到V13版本,后續大家有想發論文或者搞項目可更新自己的baseline了。 摘要:YOLO 系列模型憑借其卓越的精度和計算效率,在實時目標檢測領域占據主導地位。然而,YOLOv11 及早期版本的卷積架構&…

Handling outliers in non-blind image deconvolution論文閱讀

Handling outliers in non-blind image deconvolution 1. 研究目標與實際意義2. 創新方法:基于EM的異常值建模2.1 新模糊模型2.1.1 目標函數2.2 EM框架:迭代優化二元掩碼2.2.1 E步:計算后驗權重 E [ m x ] E[m_x] E[mx?]2.2.2 M步:加權正則化反卷積2.3 優化加速技術2.3.1…

Redis 功能擴展:Lua 腳本對 Redis 的擴展

Redis 是一個高性能的內存數據庫,支持多種數據結構,如字符串、哈希、列表、集合和有序集合。為了增強其功能,Redis 引入了 Lua 腳本支持,使開發者可以編寫自定義的腳本,確保操作的原子性并提高復雜操作的性能。本文將詳…

七天學完十大機器學習經典算法-06.支持向量機(SVM):分類邊界的藝術——深入淺出指南

接上一篇《七天學完十大機器學習經典算法-05.從投票到分類:K近鄰(KNN)算法完全指南》 想象你要在操場上為兩個班級劃活動區域,如何畫出一條最公平的分界線?這條線不僅要分開兩班學生,還要讓兩個班都離分界線盡可能遠——這就是支持…

python如何安裝PyQt6-stubs依賴包

PyQt6-stubs 是為 PyQt6 提供類型提示(Type Hints)和 IDE 智能補全支持的第三方補丁包,特別適用于 PyCharm、VS Code 等現代 IDE。它對開發者在編碼時幫助極大。 一、安裝方法 需要提前安裝好git,然后克隆PyQt6-stubs源碼&#xf…

創宇智腦 MCP 賦能 AiPy,IP 風險調查效率實現 10 倍飛躍,威脅分析一鍵生成

還記得上個月那個焦頭爛額的凌晨三點嗎?監控大屏突然瘋狂閃爍,500 多個 IP 地址同時出現異常訪問,密密麻麻的數據流在屏幕上跳動,像極了一張讓人窒息的大網。我和團隊成員瞪著布滿血絲的眼睛,手動排查每一個 IP&#x…

使用SRS+ffmpeg實現https推流flv

1修改SRS的live.conf配置如下: # Live streaming config for SRS. # see full.conf for detail config.listen 1935; max_connections 1000; srs_log_tank console; daemon off;http_api {enabled on;listen …

力扣網編程題:合并兩個有序數組(雙指針解法)

一. 簡介 上一篇文章對"合并兩個有序數組"題目,使用了暴力解法,算法時間復雜度比較高。文章如下: 力扣網編程題:合并兩個有序數組(直接解法)-CSDN博客 本文滿足進階要求,算法時間復…

數據結構之 【樹的簡介】(樹的(相關)概念、二叉樹的概念、部分性質、滿二叉樹、完全二叉樹)

目錄 1.樹的概念及結構 1.1樹的概念 1.2樹的相關概念 1.3樹的表示 1.4樹在實際中的應用 2.二叉樹概念及結構 2.1二叉樹的概念 2.2特殊的二叉樹 2.3二叉樹的性質 2.4應用題 1.樹的概念及結構 1.1樹的概念 樹是一種非線性的數據結構,由 n(n…

Redis-7.4.3-Windows-x64下載安裝使用

Redis軟件包下載地址鏈接:https://github.com/redis-windows/redis-windows/releases 檢查或者修改配置文件redis.conf: #如果允許外部其他主機訪問本機redis,設置成:bind 0.0.0.0 bind 127.0.0.1 protected-mode yes #設置端口…

Educational Codeforces Round 180 (Rated for Div. 2)

AB 略 C 對于axayaz>max(2*az,an),枚舉y z 二分x D 首先,長度為1的邊的已經有n-1條,那么構造的圖中只能存在一條長度為2的好邊。我們先構造出一個圖只存在n-1條好邊,我們發現對于一個點所有連接它的邊要不均指向它要不均背…

CAD文件處理控件Aspose.CAD教程:在 Python 中將 DGN 文件轉換為 PDF

概述 將DGN文件轉換為PDF對許多行業至關重要,包括工程和建筑行業。能夠輕松地以 PDF 格式共享設計,增強協作和可訪問性。通過使用Aspose.CAD for Python via .NET的強大功能,開發人員可以高效地自動化此過程。這款 CAD 轉換器 SDK 簡化了轉換…

寧德時代攜手問界,以“廠中廠”模式加速擴產

6月30日,寧德時代在賽力斯超級工廠的兩條CTP2.0高端電池包產線正式投產。這是寧德時代在重慶布局的首個基地,并首次采用“廠中廠”合作模式,為問界系列車型本地化生產供應動力電池系統。重慶市、四川省廣安市有關負責人,賽力斯集團…

工作中常用的Git操作命令(一)

說明 時間過得真快,一轉眼嗎嘍也是好歹工作幾年了,把這些年平時用的git命令整理記錄一下,分幾個文章,囊括了常用的命令,工作日常很多時候都是使用svn,回到宿舍自己的項目才是git,就問你離不離譜…