logstash 原理(含部署)

1、ES原理

原理 使?filebeat來上傳?志數據,logstash進??志收集與處理,elasticsearch作為?志存儲與搜索引擎,最后使?kibana展現?志的可視化輸出。所以不難發現,?志解析主要還 是logstash做的事情

從上圖中可以看到,logstash主要包含三?模塊:

1、INPUTS: 收集所有數據源的?志數據([源有file、redis、beats等,filebeat就是使?了beats源*);

2、FILTERS: 負責數據處理與轉換、解析、整理?志數據(常?:grok、mutate、drop、clone、geoip)

3、OUTPUTS: 將解析的?志數據輸出?存儲器([elasticseach、file、syslog等);

通過配置Logstash的管道(pipeline),你可以定義數據的收集、處理和輸出過程。每個管道由輸入插件、過濾器插件和輸出插件組成,它們一起協作來實現特定的數據流轉

filters常用的過濾器插件如下:

  1. grok 過濾器: 場景:解析包含時間戳、日志級別和消息的日志行。

    ?rubyCopy codegrok {match => {"message" => "\[%{TIMESTAMP_ISO8601:time}\] \[%{WORD:level}\] %{GREEDYDATA:msg}"}}
  2. mutate 過濾器: 場景:清理字段,將 IP 地址字段重命名為 "client_ip"。

    ?rubyCopy codemutate {rename => { "ip" => "client_ip" }}
  3. date 過濾器: 場景:將時間戳字段轉換為可操作的日期類型。

    ?rubyCopy codedate {match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]target => "log_date"}
  4. json 過濾器: 場景:解析包含嵌套 JSON 數據的日志消息。

    ?rubyCopy codejson {source => "message"target => "parsed_json"}
  5. kv 過濾器: 場景:解析 HTTP 查詢字符串中的參數。

    ?rubyCopy codekv {field_split => "&"value_split => "="source => "query_string"}
  6. xml 過濾器: 場景:解析包含 XML 數據的日志消息。

    ?rubyCopy codexml {source => "message"store_xml => falsexpath => ["//user/name/text()", "username","//user/age/text()", "user_age"]}
  7. translate 過濾器: 場景:將日志中的狀態碼映射為更可讀的狀態描述。

    ?rubyCopy codetranslate {field => "status_code"dictionary => ["200", "OK","404", "Not Found","500", "Internal Server Error"]}
  8. useragent 過濾器: 場景:解析用戶代理字符串,提取瀏覽器和操作系統信息。

    ?rubyCopy codeuseragent {source => "user_agent"target => "user_agent_info"}
  9. geoip 過濾器: 場景:將 IP 地址解析為地理位置信息。

    ?rubyCopy codegeoip {source => "client_ip"target => "geoip"}
  10. multiline 過濾器: 場景:合并多行堆棧跟蹤日志成單個事件。

    ?rubyCopy codemultiline {pattern => "^\s"negate => truewhat => "previous"}

2.Logstash性能優化主要體現在以下幾個方面:

1.多pipeline配置

多pipeline配置。可以將不同的輸入分割到不同的pipeline,每個pipeline有獨立的過濾器和輸出,這可以提高處理效率。pipeline之間的數據交互可以通過隊列實現。

?ruby# 管道1:接收日志輸入input { stdin { } } ??filter { grok { } }output { stdout { } }?# 管道2:從Kafka讀取數據input { kafka { } }?filter { json { } } output { elasticsearch { } }

2.Grok過濾器配置

?rubyfilter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }add_field => { "timestamp" => "%{DATE:timestamp}" }}}

3.Elasticsearch輸出配置

?ruby ?output {elasticsearch { hosts => ["http://localhost:9200"]index => "logstash-%{+YYYY.MM.dd}"}}

4.Redis隊列配置

?rubyoutput {redis { host => "127.0.0.1"port => 6379db ? => 0key  => "logstash" }}

5.batching編輯模式配置

?rubyinput {file {path => "/var/log/messages"start_position => "beginning" sincedb_path => "/dev/null"codec => "json"mode => "batch" ?  # 配置batching模式batch_size => 1000 # 每1000條記錄批量讀取}}

6.調整JVM內存配置在 jvm.options文件中配置,例如:

?-Xms2g-Xmx2g

7.并行處理配置 在 logstash.yml中配置:

?yml
pipeline.workers: 2 ?#配置工作線程數為2
pipeline.output.workers: 2 #輸出線程也配置為2

logstash 配置文件

logstash 配置文件配置

vim ?logstash.conf?

input {
? kafka {
? ? bootstrap_servers => ["192.168.190.159:9092"]
? ? topics_pattern ?=> ["hwb\.test|ywyth-sc|zj_test"]
? ? consumer_threads => 5
? ? codec => json
? ? auto_offset_reset => latest
? ? group_id => "hwb"
? }
}

filter {
? ? ? ? ruby {
? ? ? ? code => "event.timestamp.time.localtime"
? ? ? ? }
? ? ? ? mutate {
? ? ? ? remove_field => ["beat"]
? ? ? ? }
? ? ? ? mutate {
? ? ? ? ? ? ? ? split => ["message"," "]
? ? ? ? ? ? ? ? add_field => { "level" => "%{[message][3]}" }
? ? ? ? }
? ? ? ? mutate {
?? ??? ?add_field => {
?? ??? ? ? ?"index_name" => "hwb.test,%{[ywyth-sc]}"
? ? ? ? ? ? ? ? }
? ? ? ? }
? ? ? ? grok {
? ? ? ? ? ? ?match => {"message" => "\[(?<time>\d+-\d+-\d+\s\d+:\d+:\d+)\] \[(?<level>\w+)\] (?<thread>[\w|-]+) (?<class>[\w|\.]+) (?<lineNum>\d+):(?<msg>.+)"
? ? ? ? ? ? ?}
? ? ? ? }
}

output {
? ?elasticsearch {
? ? ? ? ?hosts => ["192.168.190.161:9200"]
? ? ? ? ?index => "%{[fields][log_topic]}"
? ? ? ? ?codec => "json"
? ?}
}
?

啟動logstash

nohup ./logstash -f ?../config/logstash.conf &?

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

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

相關文章

RDMA概述

1. DMA和RDMA概念 1.1 DMA DMA(直接內存訪問)是一種能力&#xff0c;允許在計算機主板上的設備直接把數據發送到內存中去&#xff0c;數據搬運不需要CPU的參與。 傳統內存訪問需要通過CPU進行數據copy來移動數據&#xff0c;通過CPU將內存中的Buffer1移動到Buffer2中。DMA模…

【圖像分類】理論篇 (4)圖像增強opencv實現

隨機旋轉 隨機旋轉是一種圖像增強技術&#xff0c;它通過將圖像以隨機角度進行旋轉來增加數據的多樣性&#xff0c;從而幫助改善模型的魯棒性和泛化能力。這在訓練深度學習模型時尤其有用&#xff0c;可以使模型更好地適應各種角度的輸入。 原圖像&#xff1a; 旋轉后的圖像&…

1.MySQL數據庫的基本操作

數據庫操作過程&#xff1a; 1.用戶在客戶端輸入 SQL 2.客戶端會把 SQL 通過網絡發送給服務器 3.服務器執行這個 SQL,把結果返回給客戶端 4.客戶端收到結果,顯示到界面上 數據庫的操作 這里的數據庫不是代表一個軟件&#xff0c;而是代表一個數據集合。 顯示當前的數據庫 …

Python中的MetaPathFinder

MetaPathFinder 是 Python 導入系統中的一個關鍵組件&#xff0c;它與 sys.meta_path 列表緊密相關。sys.meta_path 是一個包含 MetaPathFinder 實例的列表&#xff0c;這些實例用于自定義模塊的查找和加載邏輯。當使用 import 語句嘗試導入一個模塊時&#xff0c;Python 會遍歷…

Golang通過alibabaCanal訂閱MySQLbinlog

最近在做redis和MySQL的緩存一致性&#xff0c;一個方式是訂閱MySQL的BinLog文件&#xff0c;我們使用阿里巴巴的Canal的中間件來做。 Canal是服務端和客戶端兩部分構成&#xff0c;我們需要先啟動Canal的服務端&#xff0c;然后在Go程序里面連接Canal服務端&#xff0c;即可監…

Maven - 統一構建規范:Maven 插件管理最佳實踐

文章目錄 Available Plugins開源項目中的使用插件介紹maven-jar-pluginmaven-assembly-pluginmaven-shade-pluginShade 插件 - 標簽artifactSetrelocationsfilters 完整配置 Available Plugins https://maven.apache.org/plugins/index.html Maven 是一個開源的軟件構建工具&…

零食量販店熱潮:小縣城的新零售革命

零食量販店熱潮&#xff1a;小縣城的新零售革命 目錄 引言零食量販店的快速崛起零食量販店的運營模式量販零食店在小縣城的影響技術在零食量販店的應用未來展望結論 1. 引言 近年來&#xff0c;零食量販店在我國小縣城迅速發展&#xff0c;成為一種新型的零售模式。在一條街…

flutter 二進制轉字符串

通常接口返回的數據都是二進制數據 二進制轉字符串&#xff1a;utf8二進制轉字符串 onRoomMsg.body是二進制編碼 utf8.decode(onRoomMsg.body)然后字符串轉對象 json.decode(utf8.decode(onRoomMsg.body))然后再用fromJson解析 PrankActivityModel prankActivityModel Prank…

新疆大學841軟件工程考研

1&#xff0e;軟件生產的發展經歷了三個階段&#xff0c;分別是____、程序系統時代和軟件工程時代時代。 2&#xff0e;可行性研究從以下三個方面研究每種解決方法的可行性&#xff1a;經濟可行性、社會可行性和_____。 3&#xff0e;HIPO圖的H圖用于描述軟件的層次關系&…

Android 12.0 系統systemui下拉通知欄的通知布局相關源碼分析

1.前言 在android12.0的系統rom開發中,在進行systemui中的下拉通知欄的布局自定義的時候,對于原生systemui的 系統的下拉通知欄的通知布局的了解也是非常重要的,接下來就來分析下相關的下拉通知欄的通知布局的相關 源碼流程,了解這些才方便對通知欄的布局做修改 2.系統sy…

創建maven的Springboot項目出現錯誤:Cannot access alimaven

創建maven的Springboot項目出現錯誤&#xff1a;Cannot access alimaven 1&#xff09;問題2) 分析問題3&#xff09;解決問題 1&#xff09;問題 創建maven的Springboot項目出現錯誤&#xff1a; Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…

“深入探索JVM內部機制:解密Java虛擬機的工作原理“

標題&#xff1a;深入探索JVM內部機制&#xff1a;解密Java虛擬機的工作原理 摘要&#xff1a;本文將深入探索Java虛擬機&#xff08;JVM&#xff09;的內部機制&#xff0c;解密其工作原理。我們將介紹JVM的基本組成部分、類加載過程、內存管理和垃圾回收、即時編譯器等關鍵概…

Linux C++ 網絡編程基礎(2) : TCP多線程一個server對應多個client

目錄 一、linux posix線程相關函數介紹二、tcp server基礎版本三、tpc服務端多線程版本四、tpc客戶端代碼tcp編程時, 一個server可以對應多個client, server端用多線程可以實現. linux下多線程可以使用POSIX的線程函數, 下面給出服務端和客戶端的代碼. 一、linux posix線程相關…

RocketMQ 單機源碼部署 自定義配置文件和端口以及acl權限配置解析

思路 1、我們首先配置完 namesrv和broker和acl認證的配置文件&#xff0c;然后直接使用-c指定配置文件來啟動程序&#xff0c;就會非常明了&#xff0c;用戶名密碼要大于6&#xff0c;第一個用戶我測試著不知道為什么始終有最高權限&#xff0c;大家盡量不要吧第一個用戶給別人…

Redis輔助功能

一、Redis隊列 1.1、訂閱 subscribe ch1 ch2 1.2 publish:發布消息 publish channel message 1.3 unsubscribe: 退訂 channel 1.4 模式匹配 psubscribe ch* 模糊發布&#xff0c;訂閱&#xff0c;退訂&#xff0c; p* <channelName> 1.5 發布訂閱原理 訂閱某個頻道或…

05-基礎入門-系統及數據庫等

基礎入門-系統及數據庫等 一、操作系統層面1、識別操作系統常見方法2、簡要兩者區別及識別意義3、操作系統層面漏洞類型對應意義4、簡要操作系統層面漏洞影響范圍 二、數據庫層面1、識別數據庫類型常見方法2、數據庫類型區別及識別意義3、數據庫常見漏洞類型及攻擊4、簡要數據庫…

word在頁眉頁腳添加第幾頁

如果直接在頁腳添加數字&#xff0c;整個文檔的頁腳會是統一的。 這里我們需要的是每一頁按照頁碼排布的文檔&#xff0c;所以首先打開頁腳設置&#xff1a; 在插入內選擇頁腳 在彈出的下拉窗口中選擇空白即可 在菜單欄會多出“頁眉和頁腳”的選項卡&#xff0c;選擇其中的頁…

【CTFshow】——PWN簽到題

文章目錄 一【題目環境】二【題目類別】三【題目編號】四【題目描述】五【解題思路】六【解題過程】七【提交結果】 一【題目環境】 名稱版本Ubuntu系統22.04.1 LTSLinux內核5.15.0-43-generic 二【題目類別】 此題無特殊類別&#xff0c;為入門題 三【題目編號】 PWN簽到…

數字孿生:Three.js(WebGL)和虛擬引擎

一、先說總結 總的來說&#xff0c;選擇Three.js和WebGL還是虛擬引擎&#xff0c;主要取決于你的項目需求和優先級。 如果你的數字孿生項目主要是為了Web展示&#xff0c;需要快速加載&#xff0c;且對3D效果和物理模擬的需求不高&#xff0c;那么Three.js是一個非常好的選擇。…

gstreamer rtsp server 在ubuntu系統上的安裝

gstreamer rtsp server 在ubuntu系統上的安裝 本篇博客介紹gstreamer rtsp server在ubuntu系統上的安裝 python python直接使用pip安裝 sudo apt install gir1.2-gst-rtsp-server-1.0C 安裝 下載源碼 git clone https://github.com/GStreamer/gst-rtsp-server.git進入倉…