logstash5.x改變


5.x版本 logstash中 elasticsearch插件的workers,無法配置大於1,會提示 This plugin uses the shared and doesn't need this option

這個的意思是進到logstash本身的配置文件pipeline.output.workers。

不要一開始就修改workers個數。這也許是一個誤區。雖然確實可以起到一些作用。

檢查cpu

請注意CPU是否被大量使用。 在Linux / Unix上,運行top -H以查看線程分解的進程統計信息,以及總CPU統計信息。
如果CPU使用率很高,請跳到有關檢查JVM堆的部分,然后閱讀有關調整Logstash工作線程設置的部分。

檢查內存

請注意Logstash在Java VM上運行的事實。 這意味着Logstash將始終使用您分配給它的最大內存量。
查找使用大量內存的其他應用程序,並可能導致Logstash切換到磁盤。 如果應用程序使用的總內存超過物理內存,則會發生這種情況。

檢查IO

監視磁盤I / O以檢查磁盤飽和。

如果使用Logstash插件(例如文件輸出),可能會使存儲飽和,則可能會出現磁盤飽和。
磁盤飽和也可能發生,如果你遇到很多錯誤,強制Logstash生成大的錯誤日志。
在Linux上,可以使用iostat,dstat或類似於監視磁盤I / O的東西。

監視網絡I / O以實現網絡飽和。

如果使用執行大量網絡操作的輸入/輸出,則可能發生網絡飽和。
在Linux上,可以使用諸如dstat或iftop之類的工具來監視網絡。

通常情況下,如果堆大小太低,CPU利用率經常過限制(百分之百),導致JVM不斷進行垃圾回收。
檢查此問題的快速方法是將堆大小加倍,並查看性能是否提高。 不要增加超過物理內存量的堆大小。 為操作系統和其他進程保留至少1GB的空閑空間。
可以使用隨Java分發的jmap命令行實用程序或使用VisualVM對JVM堆進行更准確的度量。

調整Logstash工作線程設置:

首先使用-w標志擴大管道工作線程的數量。 這將增加可用於過濾器和輸出的線程數。 如果需要,可以安全地將其擴展到多個CPU內核,因為線程可以在I / O上變為空閑。
默認情況下,每個輸出只能在單個管道工作線程中處於活動狀態。 可以通過更改每個輸出的配置塊中的workers設置來增加此值。 不要使此值大於管道工人的數量。
還可以調整輸出批處理大小。 對於許多輸出,例如Elasticsearch輸出,此設置將對應於I / O操作的大小。 在Elasticsearch輸出的情況下,此設置對應於批處理大小。

pipeline.batch.size設置定義單個工作線程在嘗試執行過濾器和輸出之前收集的最大事件數。 較大的批量大小通常更高效,但增加了內存開銷。 某些硬件配置要求您通過設置LS_HEAP_SIZE變量來增加JVM堆大小,以避免使用此選項導致性能下降。 此參數的值超過最佳范圍會導致由於頻繁的垃圾回收或與內存不足異常相關的JVM崩潰而導致性能下降。 輸出插件可以將每個批處理作為邏輯單元處理。 例如,Elasticsearch輸出針對接收的每個批生產批量請求。 調整pipeline.batch.size設置可調整發送到Elasticsearch的批量請求的大小。

pipeline.batch.delay設置很少需要調整。 此設置調整Logstash管道的延遲。 流水線批處理延遲是Logstash在當前管道工作線程中接收到事件后等待新消息的最大時間(毫秒)。 在此時間過后,Logstash開始執行過濾器和輸出.Logstash在接收事件和在過濾器中處理該事件之間等待的最大時間是pipeline.batch.delay和pipeline.batch.size設置的乘積。

如果計划修改默認管道設置,請考慮以下建議:

事件的總數由pipeline.workers和pipeline.batch.size設置的乘積確定。稱為流動計數。 在調整pipeline.workers和pipeline.batch.size設置時,請記住流動計數的值。 以不規則間隔間歇接收大型事件的管道需要足夠的內存來處理這些尖峰。 相應地配置LS_HEAP_SIZE變量。
測量每個更改以確保其性能提高,而不是降低。
確保留下足夠的內存可用來應付突然增加的事件大小。 例如,生成表示為大文本塊的異常的應用程序。

工作程序的數量可以設置為高於CPU核心的數量,因為輸出經常在I / O等待條件中花費空閑時間。
Java中的線程具有名稱,可以使用jstack,top和VisualVM圖形工具來確定給定線程使用的資源。
在Linux平台上,Logstash標記了所有可以描述的線程。 例如,輸入顯示為[base] <inputname,過濾器/輸出工作者顯示為[base]> workerN,其中N是整數。 在可能的情況下,還會標記其他線程以確定其目的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM