簡體   English   中英

使用 Filebeat 和 Logstash 將日志文件推送到 Elasticsearch 的區別

[英]Difference between using Filebeat and Logstash to push log file to Elasticsearch

我正在嘗試使用 ELK 來可視化我的日志文件。 我嘗試了不同的設置:

  1. Logstash 文件輸入插件https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
  2. Logstash Beats input plugin https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html with Filebeat Logstash output https://www.elastic.co/guide/en/beats/filebeat /current/logstash-output.html
  3. Filebeat Elasticsearch output https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html

有人可以列出他們的區別以及何時使用哪種設置嗎? 如果不是這里,請給我指出正確的地方,例如超級用戶、DevOp 或服務器故障。

1)要使用logstash file輸入,您需要在要收集日志的機器上運行一個logstash實例,如果日志與您已經在運行logstash的同一台機器上,這不是問題,但如果日志是在遠程機器上,不總是推薦使用 logstash 實例,因為它需要比 filebeat 更多的資源。

2和3)推薦使用filebeat在遠程機器上收集日志,因為它比logstash實例需要更少的資源,如果您想解析日志、添加或刪除字段或對數據進行一些豐富,您將使用logstash output,如果您不需要做任何類似的事情,您可以使用 elasticsearch output 並將數據直接發送到 elasticsearch。

這是主要的區別,如果你的日志在你運行logstash的同一台機器上,你可以使用file輸入,如果你需要從遠程機器收集日志,你可以使用filebeat並將它發送到logstash,如果你想對您的數據進行轉換,或者如果您不需要對數據進行轉換,則直接發送到 elasticsearch。

即使在 logstash 機器上,使用 filebeat 的另一個優點是,如果您的 logstash 實例關閉,您不會丟失任何日志,filebeat 將重新發送事件,使用file輸入在某些情況下您可能會丟失事件。

對(2)不太熟悉。 但是,Logstash(1) 通常是一個不錯的選擇,可以使用輸入/輸出過濾器處理內容,將其與您的分析器匹配,然后將其發送到 Elasticsearch。 前任。 您將 Logstash 指向您的 MySql,它需要一行修改數據(可能對其進行一些數學運算,然后連接一些並刪除一些單詞,然后將其作為處理后的數據發送到 ElasticSearch)。

至於 Logbeat(2),它是一個完美的選擇,可以提取已經處理的數據並將其傳遞給 elasticsearch。 Logstash(顧名思義)主要適用於日志文件和類似的東西。 通常你可以對這些做微小的改變。 前任。 我的服務器中有一些日志文件(包括錯誤、系統日志、進程日志..)Logstash 監聽這些文件,自動拾取添加到其中的新行並將其發送到 Elasticsearch。 然后你可以過濾elasticsearch中的一些東西,找到對你來說重要的東西。

ps:logstash 有一個非常好的方法可以將過多的數據負載均衡到 ES。

您現在可以使用filebeat將日志直接發送到 elasticsearch 或 logstash(無需 logstash 代理,但當然仍然需要 logstash 服務器)。

主要優點是logstash將允許您自定義解析日志的每一行......而單獨的filebeat將簡單地發送日志並且沒有太多的字段分離。

Elasticsearch 仍將索引和存儲數據。

大規模應用的另一點是,如果您有很多Beat (FileBeat、HeartBeat、MetricBeat...)實例,您不希望它們完全打開連接並同時將數據直接發送到 Elasticsearch 實例。
並發索引連接過多可能會導致大容量隊列、響應速度差和超時。 出於這個原因,在大多數情況下,常見的設置是將Logstash放置在Beat實例和Elasticsearch之間以控制索引。

對於更大規模的系統,常見的設置是在 Beats 和 Logstash 之間建立一個緩沖消息隊列(Apache Kafka、Rabbit MQ 或 Redis),以實現彈性以避免在事件高峰期間 Logstash 出現擁塞。 帶有消息隊列的 ELK 圖來自Logz.io 他們也有一篇關於這個主題的好文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM