在现代计算环境中,信息系统和应用程序变得越来越复杂和多样化,从单一服务器到分布式系统、云计算、微服务架构,系统规模和复杂度的增加使得监控和管理这些系统变得更加具有挑战性。
日志是系统运行的详细记录,例如操作系统主机日志(Linux、VVindows、MacOS等)、网络设备日志(防火墙、交换机、路由器等)、安全设备日志(IPS、IDS等)、中间件日志(Nginx、Tomcat、WebLogic等)、数据库日志(Oracle、MySQL等)、业务系统日志(Web流量、交易系统等)。
日志分析的三大关键场景:在运维和可观测性领域,用于监控和故障排查,提升服务稳定性和用户体验:日志是三大基石(Log,Trace,Metrics)之一,是最详细的事实数据,常用于监控告警、故障排查、Trace 关联等,是保证系统稳定运行、提升运维效率的基础对于提升用户体验非常重要。
在网络安全领域,用于安全审计、溯源和分析,确保安全合规:安全日志记录了网络和主机上发生的事件和行为,用于安全分析、调查取证、安全检测等,是提升系统安全性、降低被攻击风险的重要手段。《中华人民共和国网络安全法》第二十一条第三款明确规定"采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月"。
在业务分析领域,用于支持业务发展和增长:业务日志记录了业务系统中的各种行为和事件,是业务指标统计分析、用户画像与行为分析、运营优化的基础,帮助企业精准掌握业务核心指标、提升用户粘性、促进用户和业务持续增长。
常见的日志分析解决方案:由于单一系统很难应对上述挑战,很多企业采用 Elasticseardch +数据湖结合的混合架构来构建日志存储和分析平台,详见下图。
在该方案中,Elasticsearch 支持倒排索引和全文检索,同时具备一定的灵活 Schema 能力,能够应对实时文本检索、Flexible Schema 的挑战。但是,有着以下明显的缺点:
写入吞吐低
原因:Elasticsearch 在写入时要构建倒排索引,这涉及到分词、倒排表排序等计算密集型操作,导致CPU资源占用较大。单个节点的写入性能有限,当遇到大量日志数据写入时,容易成为瓶颈。
影响:在高写入流量的情况下,Elasticsearch 集群可能因资源不足而触发写入拒绝,导致数据延迟变长、查询速度变慢。
存储成本高
原因:为了加速检索和分析速度,Elasticsearch 存储了原始数据正排、倒排索引、Docvalue 列存等多份数据,导致存储空间需求显著增加。此外,Elasticsearch 的存储压缩率相对较低,远低于日志数据常见的压缩比。
影响:高昂的存储成本成为企业部署和扩展 Elasticsearch 集群的一大障碍。随着数据和集群规模的增长,存储成本将进一步上升。
不支持复杂查询
原因:Elasticsearch 的查询能力相对较弱,主要支持简单的单表分析和文本搜索,不支持多表 JOIN、子查询、视图等复杂SQL查询操作。
影响:这限制了Elasticsearch在需要复杂数据分析场景下的应用。对于需要进行复杂业务分析的企业来说,可能需要依赖其他数据库或分析工具来补充 Elasticsearch 的不足。
学习和使用门槛高
原因:Elasticsearch的DSL(Domain Specific Language)与大多数工程师、数据分析师熟悉的技术栈差异较大,用户需要学习大量的新概念和语法才能正确使用。
影响:这增加了用户的学习成本和上手难度,可能导致企业在推广和使用 Elasticsearch 时遇到阻力。
生态封闭,与其他系统打通困难
原因:Elasticsearch 的生态相对封闭,与其他系统的集成和打通存在一定难度。
影响:这限制了 Elasticsearch 在企业IT架构中的灵活性和可扩展性。企业可能需要投入额外的资源和时间来解决与其他系统的集成问题。
性能和稳定性问题
写入不稳定:当遇到写入高峰时,Elasticsearch 集群可能因负载过高而影响写入的稳定性。
查询不稳定:大查询容易触发 JVM 内存溢出(OOM),进而影响整个集群的写入和查询稳定性。
故障恢复慢:Elasticsearch 集群在故障后恢复时需要进行 Index 加载等资源占用较大的操作,导致故障恢复时间较长。
基于 SelectDB 的日志存储与分析解决方案:SelectDB 是基于 Apache Doris 构建的现代化数据仓库,采用 MPP 分布式架构,结合向量化执行引擎、CBO 优化器、丰富的索引以及物化视图等先进技术,支持大规模实时数据上的极速查询分析,为用户提供极速的查询分析体验。经过持续的技术创新和迭代, SelectDB 已经在单表 ClickBench、多表TPC-H、TPC-DS 等多个权威分析型数据库性能评测中获得全球领先甚至第一的成绩。
高性能、低成本
经过 Benchmark 测试及生产验证,基于 SelectDB 的日志存储与分析平台,性价比相对于 Elasticsearch 具有5-10倍的提升。为直观对比其性能,我们基于不同的数据库对 SelectDB 和 Elasticsearch 分别进行了测试对比。
基于 Elasticsearch 提供的官方性能 Benchmark Rally 的 HTTP Logs 数据集进行测试,如下图左侧。Doris 写入速度是 Elasticsearch 的5倍,存储空间减少了80%,达到550MB/s,写入后的数据压缩比接近1:10、存储空间节省超80%,查询耗时下降57%、查询性能是 Elasticsearch 的2.3倍。加上冷热数据分离降低冷数据存储成本,整体相较 Elasticsearch 实现10倍以上的性价比提升;
基于 Azurelogsbench 测试集进行的测试:如下图右侧。该测试集中拥有1TB、40亿条的庞大日志,虽数据量大,但测试结果表明,查询性能相比 HTTP Logs 数据集来说,提升更为明显;
分析能力强
SelectDB 支持标准 SQL、兼容 MySQL 协议和语法,因此基于 SelectDB 的日志系统能够使用 SQL 进行日志分析。
下面是 Elasticsearch 和 SelectDB 在分析能力上的详细对比,SelectDB 支持倒排索引,用户不再需要因全文检索的需求额外引入一个 Elasticsearch 组件,在 SelectDB 中可以同时满足分析和检索的需求。
简单易用,提升开发效率:
ApacheDoris学习成本低、轻松上手。ApacheDoris兼容容MySQL协议,支持使用标准 SQL 语言进行数据查询和操作,使得开发人员可以方便地进行复杂的数据查询和聚合操作。相比之下, Elasticsearch 的 DSL 是一种基于JSON的查询语言,对于不不熟悉DSL开发人员来说,完全掌握该语法需要一定的学习曲线,具有较高的学习和使用门槛。
灵活扩展:
SelectDB支持云原生存算分离的架构,存储与计算可以独立扩缩容、按需扩缩容。此外,其提供的Multi-Cluster特性允许用户按需创建多个计算集群但共享同一份数据,从而更好地满足不同负载间的资源隔离需求。这些特性使得SelectDB在扩展性方面表现出色。
#日志分析#