日志分析:从 ELK 到 SLS

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 日志分析,在 SLS 体验搜索百亿数据,秒级返回。超高性价比,无人能敌,并可轻松从 ELK 迁入

日志分析

日志,想必大家不陌生,程序遇到一个意想不到的问题(俗称BUG),研发同学会本能的想到看下运行日志;网站受到攻击,安全同学第一反应会是查下访问日志找出凶手;需要统计业务的PV/UV,运营同学也是会想到日志,做个统计。这些都是在做日志分析。

image

上图可以看到,日志分析面对业务场景、时效性要求以及相关业务角色都很多,另外,产生日志的服务器、程序多的都数不过来。密码对这么复杂的场景,如果我们还是用原始的 Linux 命令来做分析,那头发绝对是保不住了。

有没有一个一体化的平台来帮我们解决这个问题呢,既能方便的把数据接入,又能快速的进行各种业务分析,还能把分析结果展示到酷炫的报表,甚至,都不用我整天盯着,系统发现问题自动告警。SLS 就是为此而生的。

SLS

SLS 是阿里巴巴自主研发的、云上一站式日志分析平台。请看下图 SLS 的生态图,SLS 已经做到了数据想来就来(各种数据协议和工具、SDK)、不服就干(查询百亿数据秒级返回、各种报表供选择)、说走就走(对接各种数据平台)。

image

你以为就这么多?当然不止!!!除了数据分析的一站式服务,SLS 还提供了不同数据业务场景的增值服务,比如新冠病毒疫情APP(全免费)阿里云成本管家K8S事件中心,以及日志审计服务

SLS vs ELK

除了 SLS,业界也有一些很优秀的日志分析产品和解决方案,这里就选广受欢迎的自建 ELK 方案做一个对比。对比方案如下:

image

数据写入性能和存储压缩效率

从下图测试结果可以看出,相同数据量写入,SLS 的时间开销只有 ELK 的 35%,这里自建 ELK 可以通过加入 Kafka 来提高写入性能,接近 SLS,所以 SLS 并不算是绝对优势。从落盘数据量大小来看,SLS 的压缩效率更优

image

数据读取性能

这里数据读取对比测试有两个常用的场景:简单日志查询和涉及统计分析的聚合计算。下图为测试结果,在日志查询场景中,在面对亿级数据量,二者都达到了秒级返回。当查询并发度较低时,二者性能接近,随着并发度增加,SLS 优势凸显出来。在聚合计算场景下,二者的性能旗鼓相当。

image

成本费用

下图是成本对比计算细节,SLS 有绝对优势。有一点,SLS 的费用随着数据量增长而线性增长,也就是说跟数据量比较敏感;但是 ELK 的投入是阶段性的,直觉上是增长较慢,这其实是一种错觉。

image

综合对比

从以上对比测试结果来看,SLS 在并发较高的查询场景,以及成本费用上有明显优势。

从综合的场景来看,自建 ELK 是一套日志分析解决方案,需要自行搭建和运维。而 SLS 则是一站式的日志分析平台,用户无需关心平台实现和运维,而是将精力放在业务分析上。

所以整体来说,SLS 的性价比远要比自建 ELK 高。

image

从 ELK 迁移到 SLS

我的自建 ELK 里面存储大量的数据,通过全方位对比,决定转向使用 SLS,我的这些历史数据怎么迁移到 SLS?

其实 SLS 早有方案,3个命令即可解决:

> pip install aliyun-log-python-sdk aliyun-log-cli -U --no-cache
> aliyunlog configure <access_id> <access_key> <endpoint>
> aliyunlog log es_migration \
    --cache_path='/root/es_migrate/nginx.access' \
    --hosts='elastic:OAD5RvzCOVBKD8KVKnEd@127.0.0.1:9200' \
    --indexes='nginx.access.2020-*' \
    --logstore_index_mappings='{"nginx-access-log": "nginx.access*"}' \
    --project_name='my-project' \
    --time_reference='@timestamp' \
    --pool_size=3

要是你说“迁移过程中意外中断了怎么办”,优秀!且看下文。

Q:迁移程序跑到一半意外中断了,怎么办?重新开始是不是会从头开始迁一遍?数据会重复吗?
A:调用参数中 cache_path 指定迁移状态的存放位置,当迁移程序中断后,重新打开时指定相同的 cache_path 便可以继续迁移任务,不会有数据重复。也可以主动中断,更改迁移参数后,比如 pool_sizebatch_size,再重启。

Q:ES 中存储大量冷数据,index 都是 closed 状态,全部打开会给服务器很大压力,怎么做迁移?
A:基于断点续传功能,分批进行迁移。在确定好迁移任务后,开启一部分 index,执行迁移指令开始迁移,完成后关闭这些 index,开启另一批 index,执行完全相同的迁移命令,会自动继续执行新的迁移任务。分批依次执行,直到全部完成。

Q:迁移程序正常退出,但是数据迁移不全,怎么解决?
A:如果 ES 的吞吐量较小,大规模的数据读取可能会导致 ES 中的 index 暂时不可用,迁移会跳过这些 index,建议改小 pool_size。出现数据迁移不全时,可以确认 cache_path 中的内容没有被更改后,重新运行相同的迁移指令,会继续迁移被跳过的数据。这个继续迁移过程可以执行多次。

还有问题?没关系,这里有深入灵魂的数据迁移官方最佳实践,还有技术风的使用文档

什么,看文档不是你的风格?没关系,拿起手机,钉钉扫文末二维码,直接找客服做技术支持。

结语

如上文所说,ELK 是一个很优秀的日志分析解决方案,但是如果你只想专注在业务,不想浪费宝贵时间在平台搭建、运维、性能优化这些技术细节,那就交给 SLS。

又或者说,你在追求极致的数据分析性能,而且又对性价比特别挑剔,那 SLS 特别适合你。

有任何问题请拿起手机,打开钉钉,扫描下面二维码加入 SLS 服务群,技术支持会第一时间回复。
另外,还可以关注公众号,不定期发送干货技术文章,就等你来。

_2020_04_03_1_29_34

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
64 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
29天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
176 3
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
5天前
|
存储 监控 安全
|
29天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1607 14
|
24天前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
25 0
|
26天前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
145 0
|
29天前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
35 0
|
30天前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
49 0
|
2月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。

相关产品

  • 日志服务