Logstash之二:原理

1、Logstash 介紹

Logstash 是一款強大的數據處理工具,它能夠實現數據傳輸,格式處理,格式化輸出,還有強大的插件功能,經常使用於日誌處理。redis

 

2、工做流程

Logstash 工做的三個階段:mongodb

 

input 數據輸入端,能夠接收來自任何地方的源數據。緩存

  • file:從文件中讀取服務器

  • syslog:監聽在514端口的系統日誌信息,並解析成RFC3164格式。架構

  • redis:從redis-server list 中獲取elasticsearch

  • beat:接收來自Filebeat的事件工具

 

Filter 數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,經常使用的過濾器以下。性能

  • grok: 經過正則解析和結構化任何文本。Grok 目前是logstash最好的方式對非結構化日誌數據解析成結構化和可查詢化。logstash內置了120個匹配模式,知足大部分需求。大數據

  • mutate: 在事件字段執行通常的轉換。能夠重命名、刪除、替換和修改事件字段。搜索引擎

  • drop: 徹底丟棄事件,如debug事件。

  • clone: 複製事件,可能添加或者刪除字段。

  • geoip: 添加有關IP地址地理位置信息。

 

output 是logstash工做的最後一個階段,負責將數據輸出到指定位置,兼容大多數應用,經常使用的有:

  • elasticsearch: 發送事件數據到 Elasticsearch,便於查詢,分析,繪圖。

  • file: 將事件數據寫入到磁盤文件上。

  • mongodb:將事件數據發送至高性能NoSQL mongodb,便於永久存儲,查詢,分析,大數據分片。

  • redis:將數據發送至redis-server,經常使用於中間層暫時緩存。

  • graphite: 發送事件數據到graphite。http://graphite.wikidot.com/

  • statsd: 發送事件數據到 statsd。

3、 Logstash部署架構

Logstash的理念很簡單,它只作3件事情:

  1. Collect:數據輸入
  2. Enrich:數據加工,如過濾,改寫等
  3. Transport:數據輸出

別看它只作3件事,但經過組合輸入和輸出,能夠變幻出多種架構實現多種需求。這裏只拋出用以解決日誌彙總需求的部署架構圖:

 

解釋術語:

  • Shipper:日誌收集者。負責監控本地日誌文件的變化,及時把日誌文件的最新內容收集起來,輸出到Redis暫存。
  • Indexer:日誌存儲者。負責從Redis接收日誌,寫入到本地文件。
  • Broker:日誌Hub,用來鏈接多個Shipper和多個Indexer。

不管是Shipper仍是Indexer,Logstash始終只作前面提到的3件事:

  • Shipper從日誌文件讀取最新的行文本,通過處理(這裏咱們會改寫部分元數據),輸出到Redis,
  • Indexer從Redis讀取文本,通過處理(這裏咱們會format文本),輸出到文件。

一個Logstash進程能夠有多個輸入源,因此一個Logstash進程能夠同時讀取一臺服務器上的多個日誌文件。Redis是Logstash官方推薦的Broker角色「人選」,支持訂閱發佈和隊列兩種數據傳輸模式,推薦使用。輸入輸出支持過濾,改寫。Logstash支持多種輸出源,能夠配置多個輸出實現數據的多份複製,也能夠輸出到Email,File,Tcp,或者做爲其它程序的輸入,又或者安裝插件實現和其餘系統的對接,好比搜索引擎Elasticsearch。

總結:Logstash概念簡單,經過組合能夠知足多種需求。

相關文章
相關標籤/搜索