更优性能与性价比,从自建 ELK 迁移到 SLS 开始

作者:荆磊

背景

ELK (Elasticsearch、Logstash、Kibana) 是当下开源领域主流的日志解决方案,在可观测场景下有比较广泛的应用。

随着数字化进程加速,机器数据日志增加,自建 ELK 在面临大规模数据、查询性能等方面有较多问题和挑战。如何解决可观测数据的低成本、高可用是一个新的话题。

SLS 是由阿里云推出的云上可观测 Serverless 产品,在功能层面对标 ELK,并且提供了高可用、高性能、低成本的方案。现在 SLS 推出了开源兼容(Elasticsearch、Kafka 等)能力,可帮助自建 ELK 场景平滑切换到 SLS 上来,在保留开源使用习惯的同时,享受到云上日志的便捷和低成本。

SLS 与 Elasticsearch 的前世今生

图片

Elasticsearch 是从 2010 年开始写下第一行代码,整体使用 Java 语言,在 2012 年开始正式成立公司运作。它的底层是 Lucene 全文索引引擎,早期 ES 的主要场景是做企业搜索(比如文档搜素、商品搜索等)。近几年可观测场景数据日益增加,Elasticsearch 正式进入可观测领域。

SLS 自 2012 年开始就面向可观测场景,从阿里云内部开始孵化,依托于阿里云飞天的底座构建,使用的是 C++ 语言,以其高性能、高可靠等特性赢得了大量内部客户认可。于 2017 年开始在阿里云上正式对外提供服务。

可以看到,Elasticsearch 和 SLS 的产品历程都超过 10 年。其中,SLS 一直在可观测领域深耕,通过底层优化持续在可观测领域提供高质量服务。

阿里云 SLS 核心功能架构

图片

SLS 底层使用阿里云飞天盘古分布文件系统存储,支持各类可观测数据(Log/Metric/Trace)的存储格式,默认使用多副本备份确保高可用,同时也支持多种存储规格(热存、冷存、归档)。在存储层之上提供各类查询和计算的能力,包括:

  • SQL 分析标准 SQL92 支持
  • 索引查询和 SPL,索引查询提供和 Lucene 类似的查询能力
  • 数据加工 方便对上报后的日志进行二次加工
  • 数据管道 提供类似 Kafka 的消费、写入能力

在基础的存储、计算能力之前也提供了各类语言 SDK,方便业务集成。同时 SLS 也提供了垂直场景开箱即用的功能,包括 AIOps(异常检测、根因分析)、Copilot(支持用自然语言的方式查询数据)、告警、移动端监控、Flink、Spark 的消费 lib 等。另外,SLS 提供开源兼容的能力,可以很方便地和现有的开源生态进行集成,包括 Elasticsearch、Kafka 等,通过使用 SLS 兼容能力,可以很方便地将自建系统迁移到 SLS 上来。

SLS 与 Elasticsearch 功能对比

对比项SLS开源自建 ELK
采集能力iLogtail(C++ 实现、高性能、开源)Beats 系列、Logstash(性能较低)
存储能力单 Logstore 支持 PB 级单 Index 百 GB 级 数据量大需要拆分 Index
查询能力支持支持
无索引查询支持 SPL 方式做无索引查询不支持
SQL 分析支持标准 SQL 92 语法不完整的 SQL 支持
流式消费支持(支持 Kafka 协议、SLS 原生协议) Flink/Spark 消费不支持
告警原生支持告警需要 XPack 启用 Kibana Watch 或者第三方(Grafana 告警、ElasticAlert 等)
可视化SLS 原生控制台/Grafana/KibanaKibana、Grafana
DevOps 平台集成SLS 控制台页面可直接嵌入到 DevOps 平台Kibana 有限的嵌入能力,主要依赖 SDK API 做二次开发
AIOpsSLS 原生支持 AIOps需 XPack 启用

SLS 原生提供了丰富的功能,基于 Serverless 的特性,这些在云上可以做到一键启用。

SLS 与 Elasticsearch 的可运维性对比

对比项SLS开源自建 ELK
容量规划Serverless 无需关注需关注容量•如果磁盘满将直接影响可用性•ES 写入性能差,需要为高峰预留足够多的资源
机器运维Serverless 无需关注需要关注机器可用性,如果批量宕机将影响可用性
性能调优只需扩 Logstore Shard 即可需要专业的 Elasticsearch 领域支持,可能需要社区支持
版本升级Serverless 无需关注(SLS 后台持续迭代,提升性能)开源 ELK 不保证版本兼容性,可能因为升级导致不可用
数据可靠性底层使用业界领先的飞天盘古存储,默认 3 副本存储按需设置副本数;如果是单副本,遇意外数据损坏,可恢复概率低
服务 SLASLS 保证专人或专门团队保证,可能因为大的 Query 导致集群不可用

由于 SLS 是云上 Serverless 服务,无需购买实例即可使用,免除了运维层面的烦恼。而自建 ELK 需要关注诸多运维层面的问题。 对于使用量较大的场景,比如数据量到 10TB 以上,往往需要专业的人来做 Elasticsearch 的维护和调优。

SLS 与 Elasticsearch 的性能对比

图片

这里在实验室环境中做了一下简单的查询分析能力的测试。在 10 亿级别的数据量中做查询和分析,SLS 响应时间在秒级,而 Elasticsearch 随着并发增大,响应时间有明显上升,并且在整体延时上比 SLS 高。这里还需要提到 Elasticsearch 的写入性能问题,测下来单核能力在 2MB/s 左右,而 SLS 单 Shard 写入能可以支持到 10MB/s ,通过扩大 Logstore 的 Shard 数可以轻松地提升写入性能。

SLS 与 Elasticsearch 的成本对比

图片

上面是一张成本对比图,Elasticsearch 的机器数基本上是由峰值的写入量决定的。对于 Elasticsearch 而言,写入是最大的瓶颈;Elasticsearch 存储空间需要考虑索引膨胀率和一定的空间预留。不然可能因为磁盘满导致服务不可用。

对于 SLS 而言,作为 Serverless 服务,它提供按写入量计费的方式,按照目前 0.4 元/GB 的写入费用估算,在 10TB 每天的场景下,30、90、180 天下的成本相对 Elasticsearch 有明显优势。其中,SLS 费用预估时按照下面的方式测算:

  • SLS 按流量计费 0.4 元/GB(送 30 天存储)
  • 90 天存储按照 30 天热 + 60 天低频
  • 180 天存储按照 30 天热 + 60 天低频 + 90 天归档

那么是不是只有数据量大的情况下 SLS 才换算呢?答案是否定的,考虑一个场景,如果每天数据量是 10GB,需要保留 30 天,那么每天的费用是 4 元,即每个月 120 元。需要一台 ECS 至少 2core 4g 磁盘空间 400GB(300/0.75 空间预留), 每月持有费用是大于 200 的。

SLS 开源兼容能力

图片

SLS 的 Elasticsearch 兼容、Kafka 兼容能力是基于 SLS 底层存储计算能力构建的。本质上是将 Elasticsearch、Kafka 的请求转换为 SLS 的协议进行请求,因此一份数据不管用什么方式写入 SLS,都可以用 Elasticsearch 兼容的方式来查询,也可以用 Kafka 兼容的方式来消费。

以前,对于 Kafka+ELK 的架构,往往需要较多机器做数据同步(LogStash、HangOut 等);现在使用一个 SLS 完全不需要数据同步,就可以用不同的协议来访问。简单来说就是一份数据提供了多种协议方式。 通过 Kafka 协议写入的数据可以用 ES 协议来立马查询;同样通过 Elasticsearch 协议写入的数据,可以用 Kafka 立马消费。使用 SLS 的开源兼容能力,相当于同时拥有一个 Serverless 的 Kafka 和 Elasticsearch,并且是按量付费,无需购买实例。

使用 Kibana 访问 SLS

图片

用 Kibana 访问 SLS 需要 3 个组件:

  • Kibana
  • Proxy 用于区分 Kibana 的元数据请求和日志数据请求
  • Elasticsearch 只用于存 Kibana 的 meta 数据,资源占用比较小,用一台小规格 ECS 即可满足

Kibana 将元数据存在 Elasticsearch 中,会有 meta 更新的操作。 当前 SLS 提供的是不可修改的存储,因此 meta 类的数据还需要一个小的 Elasticsearch 来承载。这个 Elasticsearch 只处理 meta 请求,因此负载和数据存储量非常低,用小规格 ECS 可以满足。

使用 Kibana 访问 SLS 具体可以参考对接 Kibana [ 1]

使用 Grafana Elasticsearch 插件访问 SLS

图片

除了 Kibana 的方式来做日志可视化,也可以用 Grafana 的 Elasticsearch 插件来访问 SLS。使用 Grafana Elasticsearch 插件访问 SLS Elasticsearch 兼容接口,有2个好处:

  • 不需要写 SQL 语句,通过界面操作即可完成图表可视化
  • 不需要在 Grafana 额外安装插件

用 Grafana 自带的 Elasticsearch 插件访问 SLS 具体可以参考使用 Grafana ES 插件访问 SLS [ 2]

使用 Kafka SDK 写入/消费 SLS

图片

使用 Kafka 官方的 SDK 可以对接 SLS 的 Kafka 兼容接口。支持 Kafka 写入和消费两种能力。

推荐使用 Kafka 官方 SDK 消费,具体可以参考 Kafka SDK 消费 SLS [ 3] 、各类 Agent 写 SLS Kafka 兼容接口 [ 4]

开源 ELK 的平滑迁移方案

使用双采方案进行迁移

图片

在原先的机器上部署 SLS 的 iLogtail 采集 Agent,将业务日志使用 iLogtail 采集到 SLS 上(一份日志可以被多个 Agent 采集,不会冲突),然后使用 Elasticsearch 兼容、Kafka 兼容的能力对接原有的使用程序。通过这个方案可以很方便地做性能、数据完整性验证。在充分验证后,移除掉机器上 filebeat 的 Agent,即可完成链路切换。

使用开源 Agent 直写迁移

图片

如果是新的业务或者 APP 想要尝试 SLS,没有历史包袱。但是又不想在机器上安装 iLogtail。那么可以复用原来的采集 Agent,将采集 Agent 的日志以 Kafka 协议的方式写入到 SLS。参考使用 Kafka 协议上传日志 [ 5] 。在日志写入 SLS 后,想保留开源使用习惯,可以使用 SLS 兼容接口对接 Kibana、Grafana 等可视化工具。

使用 Kafka 导入迁移

图片

如果我们不希望动原来的采集链路,同时又要保留原 Kafka(通常是依赖 Kafka 的历史遗留程序较多,不好动),那么可以使用这个方案。使用 SLS 的 Kafka 导入功能,无需部署实例,在页面上配置即可完成 Kafka 数据导入到 SLS (支持持续导入),参考 SLS Kafka 导入 [ 6] 。将 Kafka 数据导入到 SLS 后,可以使用 SLS 开源兼容的能力保留开源使用的习惯。

使用 Elasticsearch 导入功能迁移存量数据

图片

对于 Elasticsearch 中历史数据希望可以导入到 SLS 中做保留的场景,可以使用 SLS 的 Elasticsearch 导入功能,功能参考 ES 导入 [ 7]

总结

本文介绍了 SLS 基本能力,并和开源自建 ELK 做了对比,可以看到 SLS 相比开源 ELK 有较大优势。借助 SLS  Serverless 服务能力帮助运维团队有效降低日志系统的运维压力与成本,提升日志使用的体验。现在 SLS 提供了丰富的开源兼容能力,在体验 SLS 诸多 Feature 同时,又可以保留开源使用习惯;在 ELK 日志系统切换方便又可以做到平滑迁移。综上,欢迎大家使用 SLS ,有任何问题可以通过客户群、工单来联系我们。

参考链接:

[1] 对接 Kibana

https://help.aliyun.com/zh/sls/developer-reference/connect-log-service-to-kibana?spm=a2c4g.11186623.0.i10

[2] 使用 Grafana ES 插件访问 SLS

https://help.aliyun.com/zh/sls/user-guide/use-grafana-to-access-the-elasticsearch-compatible-api-of-log-service?spm=a2c4g.11186623.0.i13

[3] Kafka SDK 消费 SLS

https://help.aliyun.com/zh/sls/user-guide/overview-of-kafka-consumption?spm=a2c4g.11186623.0.i6

[4] 各类 Agent 写 SLS Kafka 兼容接口

https://help.aliyun.com/zh/sls/user-guide/use-the-kafka-protocol-to-upload-logs?spm=a2c4g.11186623.0.i15

[5] 使用 Kafka 协议上传日志

https://help.aliyun.com/zh/sls/user-guide/use-the-kafka-protocol-to-upload-logs?spm=a2c4g.11186623.0.i4

[6] SLS Kafka 导入

https://help.aliyun.com/zh/sls/user-guide/import-data-from-kafka-to-log-service?spm=a2c4g.11186623.0.i5

[7] ES 导入

https://help.aliyun.com/zh/sls/user-guide/import-data-from-elasticsearch-to-log-service?spm=a2c4g.11186623.0.i7

相关链接:

  • SLS 服务介绍

    https://help.aliyun.com/zh/sls/

  • SLS 的 ES 兼容使用文档

    https://help.aliyun.com/zh/sls/user-guide/compatibility-between-log-service-and-elasticsearch

  • SLS 的 Kafka 兼容使用文档

    https://help.aliyun.com/zh/sls/user-guide/overview-of-kafka-consumption

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3d动画如何连续渲染?云渲染批量渲染3d动画

在3D动画的生产过程中,从多个角度渲染同一场景既是时间消耗大户,也对设计人员的技术能力提出了高要求。好在云渲染技术的进步为这一挑战提供了高效的解决办法。通过利用云渲染服务进行批量渲染,设计师们可以大幅节约时间并提升工作效率。 3d动…

YooAsset快速入门

文章目录 YooAsset快速入门指南:YooAsset学习核心要掌握的要点主要包括以下几个方面:基于YooAsset进行游戏资源管理的应用实例 YooAsset快速入门指南: YooAsset是一款专为游戏开发设计的资产管理和分发系统,它能够帮助开发者高效…

探索顶级短视频素材库:多样化选择助力创作

在数字创作的浪潮中,寻找优质的短视频素材库是每位视频制作者的必经之路。多种短视频素材库有哪些?这里为您介绍一系列精选的素材库,它们不仅丰富多样,而且高质量,能极大地提升您的视频创作效率和质量。 1.蛙学网 蛙学…

数据结构从入门到实战——顺序表

目录 前言 一、顺序表的概念及结构 1.1 线性表 二、顺序表分类 三、动态顺序表的实现 3.1 顺序表结构的创建以及初始化 3.2 顺序表的销毁 3.3 顺序表的打印 3.4 尾插数据 ——最困难的 3.5 头插数据 3.6 尾删数据 3.7 头部删除数据 前言 在计算机科学和数据结…

TongRds docker 镜像做成与迁移(by liuhui)

TongRds docker 镜像做成与迁移 一,使用 docker commit 命令制作 TongRds docker 镜 像 1.1 拉取基础镜像 centos 并运行该镜像 拉取镜像:docker pull ubuntu 镜像列表:docker images 运行镜像:docker run -itd --name myubuntu…

Java并发--内存结构图及线程安全

内存结构图 内存-> (开辟的数组) -> (方法区,堆,栈,程序计数器,本地方法栈) 堆:几乎所有的对象实例都在这里分配内存。堆中每个对象的头信息都标属着他属于哪个类。 方法区它用于存储已被虚拟机加载的类型信息…

绿色地狱steam叫什么 绿色地狱steam怎么搜

绿色地狱steam叫什么 绿色地狱steam怎么搜 《绿色地狱》是一款以亚马逊雨林为背景的开放世界生存模拟游戏。玩家们扮演一名被困在丛林中的冒险者,玩家在游戏内需要学习采集资源、建造庇护所、狩猎和烹饪食物,同时要面对丛林中的危险和挑战,…

华为数通方向HCIP-DataCom H12-821题库(多选题:321-340)

第321题 关于OSPF的命令描述,不正确的是: A、stub区域和totally stub区域配置了no-summary参数 B、OSPFv2和OSPF v3配置接口命令的区别是OSPF V2可以使用network命令,而OSPFv3直接 C、在接口上使能stubrouter命令用来配置次路由器为stub路由器,stub路由器可以与非stub路由 …

用可视化大屏汇报,领导只说:很漂亮。要注意!可能是狗屁不通。

确保汇报的可视化大屏能够有效传达信息和数据,除了外观漂亮,还需要注意以下几点: 内容准确性:确保所展示的数据和信息准确无误,避免出现错误或误导。 重点突出:通过合适的图表、图形和动画效果&#xff0c…

Linux服务器磁盘扩容后,但是宝塔面板没有即使生效,以解决~!

前景描述:我是100G的磁盘,扩容到200G. 第一步查看服务器的当前磁盘 df -h 显示 99G,已经扩容了,但是服务器还没有更新信息。 第二步安装插件: yum install -y cloud-utils-growpart 第三步扩展分区: …

SD-WAN提升企业网络体验

在现代企业中,网络体验已成为提升工作效率与业务质量的关键因素。SD-WAN技术的出现,以其独特的优势,为企业提供了优化网络连接、加速数据传输、提升服务质量和应用访问体验,以及增强网络稳定性的解决方案。接下来,我们…

2024 MathorCup C 题 物流网络分拣中心货量预测及人员排班

一、问题重述 电商物流网络在订单履约中由多个环节组成,图1是一个简化的物流网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同流向进行分拣并发往下一个场地,最终使包裹到达消费者手中。分拣中心管理效率的提升&…