概述
Elasticsearch 的第一个版本在2010年发布,在 2015 年 ELK Stack(Elastic Logstash Kibana)推出解决集中式日志采集、存储和查询问题。ElasticSearch 基于 Lucene 全文索引实现,查询分析实现成本较高。Lucene 设计场景是 Information Retrial,面对是 Document 类型,因此对于可观测分析(Log/Trace/Metric)数据有一定限制,例如规模、查询能力、以及一些定制化功能(例如智能聚类 LogReduce)。
阿里云日志服务 SLS 基于阿里云自研灵活索引的一站式云原生可观测数据分析平台。为Log/Metric/Trace 等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能,全面提升研发、运维、运营和安全等场景数字化能力。
本文详细阐述了阿里云日志服务 SLS 和开源 ELK 在性能、成本、功能等维度的对比分析。
- 性能:开源 ELK 方案比 SLS 性能更差。SLS 查询和分析性能高达自建 ELK 的十倍,且随着并发增加,延迟保持稳定。
- 成本:开源 ELK 方案比 SLS 更贵。要维护良好状态的 ELK 集群,需要从容量规划、稳定性保障、性能调优、数据高可用,数据如何在不同系统间关联等多个方面下功夫。SLS 全托管免运维无需花费额外人力投入。百 TB 规模下,SLS 综合成本是 ELK 的 44%。
- 功能:开源 ELK 方案比 SLS 更复杂。开源 ELK 构建完整可观测分析平台需组合多款服务,这其中包括Logstash、Kibana、Kafka、Flink、TSDB、Prometheus等。SLS 支持一站式数据监控分析平台能力。
- 可观测数据平台:开源 ELK 方案相比 SLS 存在数据孤岛现象。SLS 可观测数据统一存储支持 log metric trace 数据存储,打通数据孤岛。
- 算法支持:开源 ELK 方案比 SLS 支持更有限的聚合算法。ELK 仅支持指标分析聚合、分桶聚合、管道分析、矩阵分析有限的聚合算法。SLS 针对数据分析场景支持 30+ 聚合计算函数,丰富的机器学习函数以及多渠道数据源。
- 告警能力:开源 ELK 比 SLS 的告警能力更低效。开源 ELK 仅支持同一结构多索引合并分析有限的告警能力。SLS 相比 ELK 提供全面监控、智能降噪和多为分析的能力。
自建 ELK 性能更差
SLS 可以支持百 PB 级的日志量,查询效率极高,百亿条数据数秒内出结果,多运算亿级数据 1 秒出结果。ELK 超过 10TB 就会遇到性能瓶颈。SLS 查询和分析性能高达自建 ELK 的十倍,且随着并发增加,延迟保持稳定。
查询场景性能测试:
- 1/10 亿条数据查询 5 条件,并发 1/5/10 查询
- 1 亿数据量规模下查询性能与 ES 持平
- 10 亿数据量规模下性能高达 ES 的十倍
- 随着并发增加,延时保持稳定
统计分析场景性能测试:
- 1/10 亿条数据,并发 1/5/10 分析
- SLS 分析性能高达 ES 的十倍
- 随着并发增加,延时保持稳定
测试环境:
- 测试机器 : 5台
- Replica :1
- 磁盘类型 : 本地盘, 所有磁盘都使用(* 4)
- Index : 每个 Index 20 个shard
- ES 版本: 7.10.1
- ECS 规格: ecs.d1ne.2xlarge 8 vCPU 32 GiB (I/O优化)
- ES jvm 配置: -Xms26g -Xmx26g
- 检索 Query:Status: 200 and Method:PostLogStoreLogs and ProjectName: hangzhou and InFlow>2048 and UserAgent:"aliyun-log-java-producer"
- 统计分析 SQL:select count(*), avg(Latency), sum(InFlow), ProjectName group by ProjectName
自建 ELK 成本更贵:包括服务器、运维难度、人力在内的综合成本
百 TB 规模下,SLS 综合成本是 ELK 的 44%,很多 ELK 客户转向 SLS 的重要考虑是包括服务器、运维难度、人力在内的综合成本。参考【资源成本对比:全索引场景】
要维护良好状态的 ELK 集群,需要从容量规划、稳定性保障、性能调优、数据高可用,数据如何在不同系统间关联等多个方面下功夫。SLS 全托管免运维无需花费额外人力投入!参考【资源工作项对比】
现实