全部產品
Search
文件中心

Elasticsearch:Logstash效能排查

更新時間:Jun 30, 2024

阿里雲Logstash在使用及調優方面和開源版Logstash無差異,Logstash管道處理分為三個階段:input、filter和output。Logstash管道每個階段都運行在自己的線程中,input階段將事件寫入到記憶體(預設)或磁碟的中央隊列,每個管道背景工作執行緒從此隊列提取一批事件,通過filter對事件做預先處理,最後通過output輸出預先處理後的事件。本文結合日常實踐,為您提供Logstash效能排查的方法,僅供參考。

開啟監控

使用阿里雲Logstash,建議您優先開啟以下Logstash監控:
  • 阿里雲LogstashCloudMonitor:可擷取Logstash系統指標監控資料。詳細資料請參見配置自訂警示策略
  • 阿里雲Logstash X-Pack監控:該監控依賴於同VPC下的Elasticsearch,可擷取Logstash叢集的CPU、記憶體、接收事件的速率以及輸出事件的速率等指標監控資料。詳細資料請參見配置X-Pack監控

調試建議

  • 調試過程中,建議您每次先調試一項參數值,逐步增大或降低,分別觀察源端和目的端服務的消費和寫入情況。
  • 在Logstash系統資源充足的情況下,調試Logstash管道背景工作執行緒數和管道批量處理事件數目時,建議您優先調整管道批大小(寫入到Elasticsearch情境,單bulk建議在5 MB左右),待目標端寫入無法增加時,再調整管道背景工作執行緒數。詳細資料請參見檢查管道參數配置
  • 整個調整過程中需要關注源端、Logstash叢集和目標端系統的壓力,並且確保有足夠的堆記憶體處理突增的例外狀況事件。詳細資料請參見檢查Logstash叢集效能
    說明 Logstash通過管道方式處理事件,其速度取決於輸入和輸出端服務所能達到的消費能力。
  • 藉助阿里雲Logstash的logstash-output-file_extend外掛程式,當管道正常啟動時,您可以通過調試日誌分析業務資料處理情況。詳細資料請參見使用Logstash管道配置調試功能

檢查Logstash叢集效能

說明 充分利用叢集資源,可提高輸送量。如果CPU或記憶體未達到瓶頸,即使增加規格,輸送量也不會增加。

CPU

通過監控查看CPU使用率。如果CPU使用率太高,需要關注堆記憶體使用量情況。

堆記憶體

  • 在大多數應用情境中,將堆記憶體設定為4 GB~8 GB即可。如果確實需要更大的堆記憶體,例如資源達到瓶頸,可擴容叢集規格,否則無需設定更大的堆記憶體。建議您在生產前進行測試,設定合適的堆記憶體。
  • 堆記憶體使用量率很高或堆記憶體很小,會觸發頻繁的GC,導致CPU使用率增加。建議您增加一倍記憶體,觀察效能是否有提升。
  • 阿里雲Logstash結合Logstash官方建議,堆內堆外各佔一半記憶體。

檢查管道參數配置

  • 管道背景工作執行緒:該參數值設定使用多少線程來處理filter和output任務,預設為CPU核心數。如果CPU使用率不高,可適當調大該參數,提高處理效能。
  • 管道批大小:該參數設定每個獨立的背景工作執行緒,對接收到的多少個事件做filter和output處理。適當提高該參數,有利於提高事件處理效率,該參數值對應於Elasticsearch的bulk設定。

常見情境

Kafka

Kafka堆積,如何提高消費能力?

以下提供三種提高Kafka消費能力的方式,更多方式請參見Logstash官方Kafka文檔。您可以選擇其中一種方式,也可以將這三種方式結合起來使用:
  • 巨量資料量情境,可根據Logstash節點數乘以消費者線程數評估Kafka的topic分區數。
    說明 分區數並不是越多越好,分區本身也有自己的開銷。
  • 使用相同的group_id運行多個Logstash執行個體,將負載分散到多個物理機上。topic下的訊息將分發到相同的group_id上,提高消費能力。
  • 提高管道批處理和管道背景工作執行緒數。

相關文檔

Logstash官方效能調試文檔