Logstash 參考指南(Logstash工做原理)

Logstash工做原理

Logstash事件處理管道有三個階段:輸入→過濾器→輸出,輸入生成事件,過濾器修改它們,而後輸出將它們發送到其餘地方。輸入和輸出支持編解碼器,使你可以在數據進入或離開管道時對其進行編碼或解碼,而無需使用單獨的過濾器。html

輸入

你使用輸入將數據獲取到Logstash中,一些比較經常使用的輸入是:java

  • file:從文件系統上的文件進行讀取,很是相似於UNIX命令tail -0F
  • syslog:在衆所周知的端口514上監聽syslog消息並根據RFC3164格式進行解析。
  • redis:從redis服務器讀取數據,同時使用Redis通道和Redis列表,Redis一般被用做集中式Logstash安裝中的「broker」,它將從遠程Logstash 「shipper」中的Logstash事件排隊。
  • beats:處理Beats發送的事件。

有關可用輸入的更多信息,請參見輸入插件redis

過濾器

過濾器是Logstash管道中的中間處理設備,若是事件符合必定的條件,你能夠將過濾器與條件語句組合在一塊兒,對其執行操做,一些有用的過濾器包括:json

  • grok:解析和構造任意文本,Grok是目前Logstash中解析非結構化日誌數據到結構化和可查詢數據的最佳方式,使用內置的120種模式,你極可能會找到一個知足你的須要!
  • mutate:對事件字段執行通常的轉換,你能夠重命名、刪除、替換和修改事件中的字段。
  • drop:徹底刪除事件,例如debug事件。
  • clone:複製事件,可能添加或刪除字段。
  • geoip:添加關於IP地址地理位置的信息(在Kibana中還顯示了使人驚歎的圖表!)

有關可用過濾器的更多信息,請參見過濾器插件後端

輸出

輸出是Logstash管道的最後階段,事件能夠經過多個輸出,可是一旦全部的輸出處理完成,事件就完成了它的執行,一些經常使用的輸出包括:安全

  • elasticsearch:發送事件數據到Elasticsearch,若是你打算以一種高效、方便、易於查詢的格式保存數據,那麼使用Elasticsearch是可行的。
  • file:將事件數據寫入磁盤上的文件。
  • graphite:將事件數據發送到graphite,這是一種流行的用於存儲和繪製指標的開源工具。http://graphite.readthedocs.io/en/latest/
  • statsd:發送事件到statsd,「監聽統計信息(如計數器和計時器)、經過UDP發送聚合並將聚合發送到一個或多個可插拔後端服務」的服務,若是你已經在使用statsd,這可能對你頗有用!

有關可用輸出的更多信息,請參見輸出插件服務器

編解碼器

Codecs是基本的流過濾器,能夠做爲輸入或輸出的一部分進行操做,Codecs使你可以輕鬆地將消息的傳輸與序列化過程分開,流行的codecs包括jsonmsgpackplain(text)。elasticsearch

  • json:以JSON格式對數據進行編碼或解碼。
  • multiline:將多行文本事件(如java異常和stacktrace消息)合併到單個事件中。

有關可用編解碼器的更多信息,請參見編解碼器插件ide

執行模型

Logstash事件處理管道協調輸入、過濾器和輸出的執行。工具

Logstash管道中的每一個輸入階段都在本身的線程中運行,輸入將事件寫入位於內存(默認)或磁盤上的中央隊列,每一個管道工做線程從這個隊列中取出一批事件,經過配置的過濾器運行事件批處理,而後經過任何輸出運行過濾的事件,能夠配置批處理的大小和管道工做線程的數量(參見調優和分析Logstash性能)。

默認狀況下,Logstash使用內存有限隊列在管道階段之間(輸入→過濾器和過濾器→輸出)來緩衝事件,若是Logstash不安全的終止,則存儲在內存中的任何事件都將丟失。爲了防止數據丟失,你能夠啓用Logstash將運行中的事件持久化到磁盤上,有關更多信息,請參見持久隊列

相關文章
相關標籤/搜索