logstash的工作原理
logstash的工作原理
logstash時間處理管道有三個階段:輸入 -> 過濾器 -> 輸出。輸入生成事件,過濾器修改它們,輸出將它們發送到其它地方。輸入和輸出支持編碼解碼器,使我們能夠在數據進入或退出管道時對數據進行編碼和解碼,而無需使用單獨的過濾器。
輸入input
你使用輸入將數據導入logstash,一些常用的輸入是:
①file:從文件系統上讀取,與Linux命令非常相似 tailf
②syslog:在已知端口514上偵聽syslog消息并根據RFC3164格式進行解析
③redis:使用redis通道和redis列表從redis服務器讀取
④beats:處理beats發送的事件
過濾器filter
過濾器是logstash管道中的中間處理設備。你可以將過濾器與條件組合,以便在滿足特定條件時對其執行操作。一些有用的過濾包括:
①grok:解析并構造任意文本。grok是目前logstash中將非結構化日志數據解析為結構化和可查詢內容的最佳方式。有了內置與logstash的120中模式,你能找到你最滿足的模式
②mutate:對事件字段執行常規轉換。可以重命名、刪除、替換和修改事件中的字段
③drop:完全刪除事件,例如debug事件
④clone:制作事件的副本,可能添加或刪除字段
輸出output
輸出是logstash管道的最后階段。事件可以有多個輸出,但是一旦所有輸出處理完成,事件就完成了它的執行。一些常用的輸出包括:
①elasticsearch:將事件數據發送到elasticsearch。如果你計劃以高效、方便且易于查詢的格式保存數據,elasticsearch是你的最佳選擇
②file:將事件數據寫入磁盤文件
③graphite:將事件數據發送到graphite,這是一種用戶存儲和繪制指標的流行開源工具
④statsd:將事件數據發送到statsd,這是一種“偵聽統計信息,如計數器和定時器,通過UDP發送并將聚合發送到一個或多個可插入后端”的服務。
編解碼器codecs
編解碼器基本上是作為輸入和輸出的一部分。使用編解碼器開源輕松地將消息傳輸與序列化過程分開,流行的編解碼器包括json、msgpack和plain(文本)。
·json:以json格式編碼或解碼數據
·multiline:將多行文本時間合并到一個事件中
執行模型Execution Model
logstash時間處理管道協調input、filter、output的執行。
logstash管道中的每個輸入階段都在其自己的線程中運行。將事件寫入內存或磁盤上的中央隊列。每個管道工作線程從該隊列中獲取一批事件,通過配置的filter運行一批事件,然后通過任何輸出運行過濾的事件。批處理的大小和管道工作線程的數量是可配置的。
默認情況下,logstash在管道階段(輸入 -> 過濾器 -> 輸出)之間使用內存中有界隊列來緩沖事件。如果logstash正常地終止,則存儲在內存中的所有事件都會丟失。為了防止數據丟失,你可以啟用將正在進行的事件保存到磁盤。
浙公網安備 33010602011771號