286
魔獸
Logtail性能/資源占用__常見問題_日誌服務-阿裏雲
DT時代,數以億萬計的服務器、移動終端、網絡設備每天產生海量的日誌。中心化的日誌處理方案有效地解決了在完整生命周期內對日誌的消費需求,而日誌從設備采集上雲是始於足下的第一步。
三款日誌收集工具
logstash
- 開源界鼎鼎大名ELK stack中的”L”,社區活躍,生態圈提供大量插件支持
- logstash基於JRuby實現,可以跨平台運行在JVM上
- 模塊化設計,有很強的擴展性和互操作性。
fluentd
- 開源社區中流行的日誌收集工具,td-agent是其商業化版本,由Treasure Data公司維護,是本文選用的評測版本。
- fluentd基於CRuby實現,並對性能表現關鍵的一些組件用C語言重新實現,整體性能不錯。
- fluentd設計簡潔,pipeline內數據傳遞可靠性高
- 相較於logstash,其插件支持相對少一些。
- logtail
- 阿裏雲日誌服務的生產者,經過3年多阿裏集團大數據場景考驗
- 采用C++語言實現,對穩定性、資源控製、管理等下過很大的功夫,性能良好
- 相比於logstash、fluentd的社區支持,logtail功能較為單一,專注日誌收集功能。
功能對比
功能項 | logstash | fluentd | logtail |
---|---|---|---|
日誌讀取 | 輪詢 | 輪詢 | 事件觸發 |
文件輪轉 | 支持 | 支持 | 支持 |
Failover處理 (本地checkpoint) | 支持 | 支持 | 支持 |
通用日誌解析 | 支持grok(基於正則表達式)解析 | 支持正則表達式解析 | 支持正則表達式解析 |
特定日誌類型 | 支持delimiter、key-value、json等主流格式 | 支持delimiter、key-value、json等主流格式 | 支持delimiter、key-value、json等主流格式 |
數據發送壓縮 | 插件支持 | 插件支持 | LZ4 |
數據過濾 | 支持 | 支持 | 支持 |
數據buffer發送 | 插件支持 | 插件支持 | 支持 |
發送異常處理 | 插件支持 | 插件支持 | 支持 |
運行環境 | JRuby實現,依賴JVM環境 | CRuby、C實現,依賴Ruby環境 | C++實現,無特殊要求 |
線程支持 | 支持多線程 | 多線程受GIL限製 | 支持多線程 |
熱升級 | 不支持 | 不支持 | 支持 |
中心化配置管理 | 不支持 | 不支持 | 支持 |
運行狀態自檢 | 不支持 | 不支持 | 支持cpu/內存閾值保護 |
日誌文件收集場景 - 性能對比
日誌樣例:以Nginx的access log為樣例,如下一條日誌365字節,結構化成14個字段:
在接下來的測試中,將模擬不同的壓力將該日誌重複寫入文件,每條日誌的time字段取當前係統時間,其它13個字段相同。
相比於實際場景,模擬場景在日誌解析上並無差異,有一點區別是:較高的數據壓縮率會減少網絡寫出流量。
logstash
logstash-2.0.0版本,通過grok解析日誌並寫出到kafka(內置插件,開啟gzip壓縮)。
日誌解析配置:
grok {
patterns_dir=>"/home/admin/workspace/survey/logstash/patterns"
match=>{ "message"=>"%{IPORHOST:ip} %{USERNAME:rt} - [%{HTTPDATE:time}] "%{WORD:method} %{DATA:url}" %{NUMBER:status} %{NUMBER:size} "%{DATA:ref}" "%{DATA:agent}" "%{DATA:cookie_unb}" "%{DATA:cookie_cookie2}" "%{DATA:monitor_traceid}" %{WORD:cell} %{WORD:ups} %{BASE10NUM:remote_port}" }
remove_field=>["message"]
}
測試結果:
寫入TPS | 寫入流量 (KB/s) | CPU使用率 (%) | 內存使用 (MB) |
---|---|---|---|
500 | 178.22 | 22.4 | 427 |
1000 | 356.45 | 46.6 | 431 |
5000 | 1782.23 | 221.1 | 440 |
10000 | 3564.45 | 483.7 | 450 |
fluentd
td-agent-2.2.1版本,通過正則表達式解析日誌並寫入kafka(第三方插件fluent-plugin-kafka,開啟gzip壓縮)。
日誌解析配置:
<source>
type tail
format /^(?<ip>S+)s(?<rt>d+)s-s[(?<time>[^]]*)]s"(?<url>[^"]+)"s(?<status>d+)s(?<size>d+)s"(?<ref>[^"]+)"s"(?<agent>[^"]+)"s"(?<cookie_unb>d+)"s"(?<cookie_cookie2>w+)"s"(?
<monitor_traceid>w+)"s(?<cell>w+)s(?<ups>w+)s(?<remote_port>d+).*$/
time_format %d/%b/%Y:%H:%M:%S %z
path /home/admin/workspace/temp/mock_log/access.log
pos_file /home/admin/workspace/temp/mock_log/nginx_access.pos
tag nginx.access
</source>
測試結果:
寫入TPS | 寫入流量 (KB/s) | CPU使用率 (%) | 內存使用 (MB) |
---|---|---|---|
500 | 178.22 | 13.5 | 61 |
1000 | 356.45 | 23.4 | 61 |
5000 | 1782.23 | 94.3 | 103 |
注:受GIL限製,fluentd單進程最多使用1個cpu核心,可以使用插件multiprocess以多進程的形式支持更大的日誌吞吐。
logtail
logtail 0.9.4版本,設置正則表達式進行日誌結構化,數據LZ4壓縮後以HTTP協議寫到阿裏雲日誌服務,設置batch_size為4000條。
日誌解析配置:
logRegex : (S+)s(d+)s-s[([^]]+)]s"([^"]+)"s(d+)s(d+)s"([^"]+)"s"([^"]+)"s"(d+)"s"(w+)"s"(w+)"s(w+)s(w+)s(d+).*
keys : ip,rt,time,url,status,size,ref,agent,cookie_unb,cookie_cookie2,monitor_traceid,cell,ups,remote_port
timeformat : %d/%b/%Y:%H:%M:%S
測試結果:
寫入TPS | 寫入流量 (KB/s) | CPU使用率 (%) | 內存使用 (MB) |
---|---|---|---|
500 | 178.22 | 1.7 | 13 |
1000 | 356.45 | 3 | 15 |
5000 | 1782.23 | 15.3 | 23 |
10000 | 3564.45 | 31.6 | 25 |
單核處理能力對比
總結
可以看到三款日誌工具各有特點:
- logstash支持所有主流日誌類型,插件支持最豐富,可以靈活DIY,但性能較差,JVM容易導致內存使用量高。
- fluentd支持所有主流日誌類型,插件支持較多,性能表現較好。
- logtail占用機器CPU/內存資源最少,性能吞吐量較好,針對常用日誌場景支持全麵,但缺少插件等機製,靈活性和可擴展性不如以上兩個客戶端。
最後更新:2016-11-23 17:16:10
上一篇:
功能實時性__常見問題_日誌服務-阿裏雲
下一篇:
RAM子帳號訪問控製台__常見問題_日誌服務-阿裏雲
GetCursor__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
阿裏雲發布了第三代數據庫POLARDB,跑分超過了AWS
價格概攬__購買指導_視頻直播-阿裏雲
SDK本地目錄配置__配置步驟_快速開始_Eclipse 插件-阿裏雲
錄製工具__腳本編寫_使用手冊_性能測試-阿裏雲
iOS9的特殊配置__IOS SDK常見問題_移動推送-阿裏雲
查詢仿冒應用詳細信息接口__仿冒檢測API_API手冊_移動安全-阿裏雲
版本列表__Java_SDK_日誌服務-阿裏雲
測試__產品簡介_推薦引擎-阿裏雲
對象存儲OSS控製台—總體概覽頁__視頻專區_對象存儲 OSS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲