2016-01-07 17 views
0

我有一個logstash管道,其中日誌傳輸到我的日誌服務器並存儲在磁盤上(最高優先級)。然後日誌在elasticsearch的索引中分配到一個單獨的服務器上(最低優先級)。我今天意識到,如果elasticsearch變得無法訪問,整個管道就會受到影響,我不能冒險阻止日誌被存儲在磁盤上。有什麼辦法可以配置logstash忽略特定輸出插件的失敗嗎?

如何讓logstash忽略特定輸出插件的錯誤,例如彈性搜索的連接錯誤?

UPDATE

我的當前設置開始以伐木輸入來自所有其他情況下接受轉發日誌。然後,文件不受影響地輸出到文件輸出(最高優先級)。然後,一切都通過他們特定的過濾器(syslog,nginx等)。最後,過濾後的日誌進入一個elasticsearch輸出(最低優先級),其中每個日誌類型在其自己的索引中進行索引。

讀了一點logstash文檔後,我知道流水線中任何地方的流水線出錯都會危及其他插件。

+0

您介意分享一下您當前的配置和拓撲嗎? – Val

+0

@Val添加了更新 – BDuelz

回答

0

這聽起來像你這樣做: (客戶端) - > Logstash->文件< -Logstash-> Elasticsearch

這似乎是你試圖使用這些文件作爲經紀人在出現問題時的方式。

下面是2.5的替代品:

  1. 逃亡二logstash過程 - 一個從客戶端接收日誌,並將其寫入文件,和第二讀取這些文件,並將其寫入elasticsearch。您仍然有其他危及此流程的風險(如磁盤空間不足等)。
  2. 使用像redis或rabbitmq這樣的真正經紀人。對於我的瞬態數據,如果不處理(snmptrap,syslog),將會丟失,我運行一個小型logstash,它接受該輸入並將其寫入redis。第二個logstash從redis中讀取並應用所有的logstash魔法。
  3. 儘可能使用更好的託運人。例如,Filebeat(logstash-forwarder,又名lumberjack的替代品)將在檢測到logstash的背壓時停止發送日誌。這給你一個免費的分佈式緩存。當然,這對一些輸入是不可能的(參見#2)。
+0

嗯,日誌文件存儲是必要的,因爲有很多中間腳本處理這些文件(相信我,我試着解決這個問題),然後他們最終上傳到S3。我喜歡#1的想法,因爲日誌服務器除了處理日誌之外沒有太多事情發生(多一個進程不會受到影響)。你能解釋一下你的意思嗎?我不知道在伐木工上使用filebeat的優點/缺點。 – BDuelz

+0

對於#2,我也會提及[Kafka](http://kafka.apache.org)。一個非常嚴重的分佈式日誌解決 – Val

+0

filebeat是logstash-forwarder(又名伐木工)的替代品。 –

相關問題