一組Logstash與elasticsearch的壓測資料[轉]
阿新 • • 發佈:2018-12-30
概述
組內的日誌系統基於ELK搭建,本文中的資料在生產環境中進行測試得到,僅供參考。
系統構成
系統可以簡要的分為:
- 日誌接收機
- 日誌資料佇列
- 日誌資料處理機
- ES叢集
在日誌接收機
上通過一個 Logstash 程序
parse 日誌資料,將 parse 後的結構寫入由 Redis List 實現的日誌資料佇列
中,之後在ES叢集
前,再使用一個日誌處理機
Logstash 程序從 Redis 中
pop 出資料寫入ES叢集
中。
使用 Redis List 的原因是在於當 parse
能力大於ES叢集
的處理能力時,快取資料。
執行環境
日誌接收機
為CPU為4
* Xeon E5強IO型機器,Redis List
日誌資料處理機
,CPU為12
* Xeon E5。
處理日誌為Nginx access日誌,記錄瞭如時間、域名、訪問IP、URL、HTTP Method、響應時間、返回體長度等,約10+欄位。
引數配置
日誌接收機上的 Logstash 配置成了10個執行緒,output 中的 redis 的引數配置為:
12345678910 | output {redis {host => "192.168.1.101"port => '6379'data_type => "list"key => "Logstash_benchmark" |
日誌資料處理機上的 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