日志分析:从 ELK 到 SLS

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 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

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
6月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1138 64
搭建ELK日志收集,保姆级教程
|
11月前
|
监控 安全 BI
防火墙事件日志及日志分析
在网络安全防护体系中,防火墙作为抵御外部威胁的第一道防线,其重要性不言而喻。而对防火墙日志进行分析,更是深入了解网络流量、发现潜在安全风险的关键手段。
802 1
|
10月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1015 54
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
873 90
|
10月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
591 23
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
1012 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
738 5
图解MySQL【日志】——Redo Log
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1370 13
|
缓存 Java 编译器

相关产品

  • 日志服务