1. 程式人生 > >一組Logstash與elasticsearch的壓測資料[轉]

一組Logstash與elasticsearch的壓測資料[轉]

概述

組內的日誌系統基於ELK搭建,本文中的資料在生產環境中進行測試得到,僅供參考。

系統構成

系統可以簡要的分為:

  • 日誌接收機
  • 日誌資料佇列
  • 日誌資料處理機
  • ES叢集

日誌接收機上通過一個 Logstash 程序 parse 日誌資料,將 parse 後的結構寫入由 Redis List 實現的日誌資料佇列中,之後在ES叢集前,再使用一個日誌處理機 Logstash 程序從 Redis 中 pop 出資料寫入ES叢集中。

使用 Redis List 的原因是在於當 parse 能力大於ES叢集的處理能力時,快取資料。

執行環境

日誌接收機為CPU為4 * Xeon E5強IO型機器,Redis List

 與向ES叢集寫入的 Logstash 位於同一機器上,即日誌資料處理機,CPU為12 * Xeon E5。

處理日誌為Nginx access日誌,記錄瞭如時間、域名、訪問IP、URL、HTTP Method、響應時間、返回體長度等,約10+欄位。

引數配置

日誌接收機上的 Logstash 配置成了10個執行緒,output 中的 redis 的引數配置為:

12345678910output {redis {host => "192.168.1.101"port => '6379'data_type => "list"key => "Logstash_benchmark"
type => "nginx_access"threads => 5}}

日誌資料處理機上的 input 對已配置為:

1 2 3 4 5 6 7 8 9 10 input { redis { host => "192.168.1.101" port => '6379' data_type => "list" key => "Logstash_benchmark" type => "nginx_access" threads => 5 } }

而 output 配置為:

1 2 3 4 5 6 7 8 9 10 11 output { if ([type] == "nginx_access") { elasticsearch_http { host => "192.168.2.101" port => "9527" flush_size => 10000 workers => 10 index => "Logstash_benchmark" } } }

測試方法

測試分為測試 Logstash 分析日誌能力,以及ES叢集寫入能力。

Logstash 的分析能力通過每秒取樣 Redis List 中的新增佇列長度獲得(日誌接收機上的 Logstash 生產)。

ES叢集的寫入能力通過每秒取樣 Redis List 中減少的佇列長度獲得(日誌資料處理機 上的 Logstash 消費)。

在測試一個階段時,會關閉另一端的 Logstash

資料

平均資料後,可供參考的資料為:

Logstash 分析速度為:2352.94 lines/s

ES叢集寫入速度為:9345.79 records/s