日志分析:从 ELK 到 SLS

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 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日志并进行多维度分析。
目录
相关文章
|
24天前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
|
6天前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
16天前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
49 9
|
21天前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
24天前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
17天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
53 0
|
17天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
38 0
|
19天前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
24天前
|
存储
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
【Azure Log A workspace】Azure上很多应用日志收集到Log A workspace后如何来分别各自的占比呢?
|
24天前
|
API
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?
【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?

相关产品

  • 日志服务