Logstash事件處理管道有三個階段:輸入→過濾器→輸出,輸入生成事件,過濾器修改它們,而後輸出將它們發送到其餘地方。輸入和輸出支持編解碼器,使你可以在數據進入或離開管道時對其進行編碼或解碼,而無需使用單獨的過濾器。html
你使用輸入將數據獲取到Logstash中,一些比較經常使用的輸入是:java
tail -0F
。有關可用輸入的更多信息,請參見輸入插件。redis
過濾器是Logstash管道中的中間處理設備,若是事件符合必定的條件,你能夠將過濾器與條件語句組合在一塊兒,對其執行操做,一些有用的過濾器包括:json
有關可用過濾器的更多信息,請參見過濾器插件。後端
輸出是Logstash管道的最後階段,事件能夠經過多個輸出,可是一旦全部的輸出處理完成,事件就完成了它的執行,一些經常使用的輸出包括:安全
有關可用輸出的更多信息,請參見輸出插件。服務器
Codecs是基本的流過濾器,能夠做爲輸入或輸出的一部分進行操做,Codecs使你可以輕鬆地將消息的傳輸與序列化過程分開,流行的codecs包括json
、msgpack
和plain
(text)。elasticsearch
有關可用編解碼器的更多信息,請參見編解碼器插件。ide
Logstash事件處理管道協調輸入、過濾器和輸出的執行。工具
Logstash管道中的每一個輸入階段都在本身的線程中運行,輸入將事件寫入位於內存(默認)或磁盤上的中央隊列,每一個管道工做線程從這個隊列中取出一批事件,經過配置的過濾器運行事件批處理,而後經過任何輸出運行過濾的事件,能夠配置批處理的大小和管道工做線程的數量(參見調優和分析Logstash性能)。
默認狀況下,Logstash使用內存有限隊列在管道階段之間(輸入→過濾器和過濾器→輸出)來緩衝事件,若是Logstash不安全的終止,則存儲在內存中的任何事件都將丟失。爲了防止數據丟失,你能夠啓用Logstash將運行中的事件持久化到磁盤上,有關更多信息,請參見持久隊列。