閱讀883 返回首頁    go 汽車大全


自建ELK vs 日誌服務(SLS)全方位對比

簡介

提到日誌實時分析,很多人都會想到很火的ELK Stack(Elastic/Logstash/Kibana)來搭建。ELK方案開源,在社區中有大量的內容和使用案例。

阿裏雲日誌服務產品在新版中增強查詢分析功能(LogSearch/Analytics),支持對日誌數據實時索引與查詢分析,並且對查詢性能和計算數據量做了大量優化。在這裏我們做一個全方位的比較,對於用戶關心的點,我們依次展開分析:

  • 易用:上手及使用過程中的代價
  • 功能(重點):主要針對查詢與分析兩塊
  • 性能(重點):對於單位大小數據量查詢與分析需求,延時如何
  • 規模(重點):能夠承擔的數據量,擴展性等
  • 成本(重點):同樣功能和性能,使用分別花多少錢

易用

對日誌分析係統而言,有如下使用過程:

  1. 采集:將數據穩定寫入
  2. 配置:如何配置數據源
  3. 擴容:接入更多數據源,更多機器,對存儲空間,機器進行擴容
  4. 使用:這部分在功能這一節介紹
  5. 導出:數據能否方便導出到其他係統,例如做流計算、放到對象存儲中進行備份
  6. 多租戶:如何將數據能否分享給他人使用,使用是否安全等

以下是比較結果:

項目 小項 自建ELK Log Analytics
采集 協議 Restful API Restful API
Agent Logstash/Beats/FluentD,生態十分豐富 Logtail(為主)+其他(例如Logstash)
配置 單元 提供Index概念用以區分不同日誌 Project + Logstore。提供兩層概念,Project相當於命名空間,可以在Project下建立多個Logstore
屬性 API + Kibana API + SDK + 控製台
擴容 存儲 增加機器,購買雲盤 無需操作
機器 新增機器 無需操作
配置 配置Logstash並通過配管係統應用機器 控製台/API 操作,無需配管係統
采集點 通過配管係統控製,將配置和Logstash安裝到機器組 控製台/API 操作,無需配管係統
導出 方式 API/SDK API/SDK + 各流計算引擎(Spark,Storm,Flink,StreamCompute,CloudMonitor,ARMS) + 存儲(OSS + MaxCompute)
多租戶 安全 無(非商業版) https + 傳輸簽名 + 多租戶隔離 + 訪問控製
使用 同一賬號 子賬號,角色,產品,臨時授權等

總體而言:

ELK 有非常多的生態和寫入工具,使用中的安裝、配置等都有較多工具可以參考。LogSearch/Anlaytics是一個托管服務,從接入、配置、使用上集成度非常高,普通用戶5分鍾就可以接入。並且過程中不需要擔心容量、並發等問題,按量計費,彈性伸縮。

功能(查詢+分析)

查詢主要將符合條件的日誌快速命中,分析功能是對數據進行統計與計算。

例如我們有如下需求:所有大於200讀請求,根據Ip統計次數和流量,這樣的分析請求就可以轉化為兩個操作:查詢到指定結果,對結果進行統計分析。在一些情況下我們也可以不進行查詢,直接對所有日誌進行分析。

1: Status in (200,500] and Method:Get* 
2: select count(1) as c, sum(inflow) as sum_inflow, ip group by Ip

查詢能力對比

類型 小項 自建ELK Log-Search/Analytics
文本 索引查詢 支持 支持
分詞 支持 支持
中文分詞 支持 (計劃支持)
前綴 支持 支持
後綴 支持
模煳 支持 支持
Wildcast 支持 (計劃支持)
數值 long 支持 支持
double 支持 支持
Nested Json查詢 支持
Geo Geo查詢 支持 不直接支持,但可以通過區間查詢代替
Ip Ip查詢 支持 不直接支持,通過字符串支持
上下文 上下文查詢 支持
上下文過濾 支持

ElasticSearch 支持的數據類型,以及查詢方式上要更強。Log-Search/Analytics 支持大部分常用查詢,也有一些特色(例如程序日誌上下文查詢與展開)。

分析能力對比

類型 小項 自建ELK Log-Search/Analytics
接口 方式 API/SDK API/SDK + SQL92
其他協議 JDBC
Agg Bucketing 支持 支持
Metric 支持 支持
Matrix 支持 支持
Pipline 有限支持 完整支持
運算 數值 支持
字符串 支持
估算 支持
數理統計 支持
日期轉換 支持
GroupBy Agg 支持 支持
Having條件 支持
排序 排序 支持
Join 多表Join 支持

從結果看Log-Search/Analytics 提供的功能是ES 超集,完整支持SQL 92 語義,隻要會寫SQL 都能直接使用。

性能

接下來我們測試針對相同數據集,分別對比寫入數據及查詢,和聚合計算能力。

實驗環境

1、 測試配置

| | 自建ELK | LogSearch/LogAnalytics |
| ----- | -------------------------- | ---------------------- |
| 環境 | ECS 4核16GB * 4台 + 高效雲盤 SSD | |
| Shard | 10 | 10 |
| 拷貝數 | 2 | 3 (默認配置,對用戶不可見) |
2、測試數據
* 5列double
* 5列long
* 5列text,字典大小分別是256,512,768,1024,1280

  • 以上字段完全隨機,如下為一條測試日誌樣例:

    timestamp:August 27th 2017, 21:50:19.000 
    long_1:756,444 double_1:0 text_1:value_136 
    long_2:-3,839,872,295 double_2:-11.13 text_2:value_475 
    long_3:-73,775,372,011,896 double_3:-70,220.163 text_3:value_3 
    long_4:173,468,492,344,196 double_4:35,123.978 text_4:value_124 
    long_5:389,467,512,234,496 double_5:-20,10.312 text_5:value_1125
    

3、 數據集大小
* 原始數據大小:50 GB
* 原始數據除去Key後內容大小:27 GB(LogSearch/Analytics 以該大小作為存儲計費單元)
* 日誌行數:162,640,232 (約為1.6億條)

寫入測試結果

ES采用bulk api批量寫入,LogSearch/Analytics 用PostLogstoreLogs API批量寫入,結果如下:

類型 項目 自建ELK LogSearch/Analytics
延時 平均寫入延時 40 ms 14 ms
存儲 單拷貝數據量 86G 58G
膨脹率:數據量/原始數據大小 172% 121%

image.png

image.png

備注:LogSearch/Analytics 產生計費的存儲量包括壓縮的原始數據寫入量(23G)+索引流量(27G),共50G存儲費用。

從測試結果來看

  • LogSearch/Analytics寫入延時好於ES,40ms vs 14 ms

  • 空間:原始數據50G,因測試數據比較隨機所以存儲空間會有膨脹(大部分真實場景下,存儲會因壓縮後會比原始數據小)。ES脹到86G,膨脹率為172%,在存儲空間超出LogSearch/Analytics 58%

讀取(查詢+分析)測試

測試場景

我們在此選取兩種比較常見的場景:日誌查詢和聚合計算。分別統計並發度為1,5,10時,兩種case的平均延時。

  1. 針對全量數據,對任意text列計算group by,計算5列數值的avg/min/max/sum/count,並按照count排序,取前1000個結果,例如:

     select count(long_1) as pv,sum(long_2),min(long_3),max(long_4),sum(long_5) 
     group by text_1 order by pv desc limit 1000
    
  2. 針對全量數據,隨機查詢日誌中的關鍵詞,例如查詢 "value_126",獲取命中的日誌數目與前100行,例如:

    value_126
    

測試結果

類型 並發數 ES延時(單位s) LogSearch/Analytics延時(單位s)
case1:分析類 1 3.76 3.4
5 3.9 4.7
10 6.6 7.2
case2:查詢類 1 0.097 0.086
5 0.171 0.083
10 0.2 0.082

結果分析

  • 從結果看,對於1.5億數據量這個規模,兩者都達到了秒級查詢與分析能力
  • 針對統計類場景(case 1), ES和日誌服務延時處同一量級。ES采用SSD硬盤,在讀取大量數據時IO優勢比較高
  • 針對查詢類場景(case 2), LogAnalytics在延時明顯優於ES。隨著並發的增加,ELK延時對應增加,而LogAnalytics延時保持穩定甚至略有下降

image.png
image.png

規模

  1. LogSearch/Analytics 一天可以索引PB級數據,一次查詢可以在秒級過幾十TB規模數據,在數據規模上可以做到彈性伸縮與水平擴展

  2. ES比較適合服務場景為:寫入GB-TB/Day、存儲在TB級。主要受限於2個原因:

    • 單集群規模:比較理想為20台左右,業界比較大的為100節點一個集群
    • 寫入擴容:shard創建後便不可再修改,當吞吐率增加時,需要動態擴容節點,最多可使用的節點數便是shard的個數
    • 存儲擴容:主shard達到磁盤的上線時,要麼遷移到更大的一塊磁盤上,要麼隻能分配更多的shard。一般做法是創建一個新的索引,指定更多shard,並且rebuild舊的數據

    LogSearch/Analytics 則沒有擴展性方麵的問題,每個shard都是分布式存儲。並且當吞吐率增加時,可以動態分裂shard,達到處理能力水平擴展。

成本

以上述測試數據為例,一天寫入50GB數據(其中27GB 為實際的內容),保存90天,平均一個月的耗費。

1、 日誌服務(LogSearch/LogAnalytics)計費規則參考文檔,包括讀寫流量、索引流量、存儲空間等計費項,查詢功能免費。

| 計費項目 | 值 | 單價 | 費用(元) |
| ----------- | ----------------- | -------------- | ----- |
| 讀寫流量 | 23G * 30 | 0.2 元/GB | 138 |
| 存儲空間(保存90天) | 50G * 90 | 0.3 元/GB*Month | 1350 |
| 索引流量 | 27G * 30 | 0.35 元/GB | 283 |
| 總計 | | | 1771 |
2、 ES費用包括機器費用,及存儲數據SSD雲盤費用
* 雲盤一般可以提供高可靠性,因此我們這裏不計費副本存儲量
* 存儲盤一般需要預留15%剩餘空間,以防空間寫滿,因此乘以一個1.15係數

| 計費項目 | 值                            | 單價                 | 費用(元)       |
| ---- | ---------------------------- | ------------------ | ----------- |
| 服務器  | 4台4核16G(三個月)(ecs.mn4.xlarge) | 包年包月費用:675 元/Month | 2021        |
| 存儲   | 86 * 1.15 * 90 (這裏隻計算一個副本)   | SSD:1 元/GB*M       | 8901        |
|      |                              | SATA:0.35 元/GB*M   | 3115        |
| 總計   |                              |                    | 12943 (SSD) |
|      |                              |                    | 5135 (SATA) |

image.png

​ 同樣性能,使用LogSearch/Analytics與ELK(SSD)費用比為 13.6%。在測試過程中,我們也嚐試把SSD換成SATA以節省費用(LogAnalytics與SATA版費用比為 34%),但測試發現延時會從40ms上升至150ms,在長時間讀寫下,查詢和讀寫延時變得很高,無法正常工作了。

總結

​ LogSearch/Analytics在提供同樣查詢速度、更高吞吐量、更強分析能力背後,隻需要開源方案13%成本(集團用戶默認7折,計算後隻有10%成本),並且按量付費免運維,讓你把精力放在業務分析上。

日誌服務除了LogSearch/Analytics外,還提供LogHub、LogShipper功能,支持實時采集數據、與流計算係統(Spark、Storm、Flink、StreamCompute)、離線分析係統(MaxCompute、E-MapReduce、Presto、Hive等)打通,提供一站式實時數據解決方案。

線上數據演示

一天20億條數據量進行查詢與分析(2分鍾):

Dashboard功能演示視頻(4分鍾):

除此之外,我們提供了三組測試數據供嚐試:

以下5個子帳號供試用,請隨機選擇一個登錄,若登錄不成功請換一個子帳號嚐試:

登錄地址 用戶名 密碼
鏈接 sls_reader1@1654218965343050 pnX-32m-MHH-xbm
鏈接 sls_reader2@1654218965343050 pnX-32m-MHH-xbm
鏈接 sls_reader3@1654218965343050 pnX-32m-MHH-xbm
鏈接 sls_reader4@1654218965343050 pnX-32m-MHH-xbm
鏈接 sls_reader5@1654218965343050 pnX-32m-MHH-xbm

最後更新:2017-09-21 10:03:31

  上一篇:go  優秀職場人常用的那些辦公輔助工具分享
  下一篇:go  北大博士在阿裏:因為期待,你需要更出色!