建设局网站查勘表是什么,什么叫做电商平台,平面设计是什么意思,建设部网站为什么打不开作者#xff1a;荆磊
背景
ELK (Elasticsearch、Logstash、Kibana) 是当下开源领域主流的日志解决方案#xff0c;在可观测场景下有比较广泛的应用。
随着数字化进程加速#xff0c;机器数据日志增加#xff0c;自建 ELK 在面临大规模数据、查询性能等方面有较多问题和挑…作者荆磊
背景
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采集能力iLogtailC 实现、高性能、开源Beats 系列、Logstash性能较低存储能力单 Logstore 支持 PB 级单 Index 百 GB 级 数据量大需要拆分 Index查询能力支持支持无索引查询支持 SPL 方式做无索引查询不支持SQL 分析支持标准 SQL 92 语法不完整的 SQL 支持流式消费支持支持 Kafka 协议、SLS 原生协议 Flink/Spark 消费不支持告警原生支持告警需要 XPack 启用 Kibana Watch 或者第三方Grafana 告警、ElasticAlert 等可视化SLS 原生控制台/Grafana/KibanaKibana、GrafanaDevOps 平台集成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 磁盘空间 400GB300/0.75 空间预留 每月持有费用是大于 200 的。
SLS 开源兼容能力 SLS 的 Elasticsearch 兼容、Kafka 兼容能力是基于 SLS 底层存储计算能力构建的。本质上是将 Elasticsearch、Kafka 的请求转换为 SLS 的协议进行请求因此一份数据不管用什么方式写入 SLS都可以用 Elasticsearch 兼容的方式来查询也可以用 Kafka 兼容的方式来消费。
以前对于 KafkaELK 的架构往往需要较多机器做数据同步LogStash、HangOut 等现在使用一个 SLS 完全不需要数据同步就可以用不同的协议来访问。简单来说就是一份数据提供了多种协议方式。 通过 Kafka 协议写入的数据可以用 ES 协议来立马查询同样通过 Elasticsearch 协议写入的数据可以用 Kafka 立马消费。使用 SLS 的开源兼容能力相当于同时拥有一个 Serverless 的 Kafka 和 Elasticsearch并且是按量付费无需购买实例。
使用 Kibana 访问 SLS 用 Kibana 访问 SLS 需要 3 个组件
KibanaProxy 用于区分 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?spma2c4g.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?spma2c4g.11186623.0.i13
[3] Kafka SDK 消费 SLS
https://help.aliyun.com/zh/sls/user-guide/overview-of-kafka-consumption?spma2c4g.11186623.0.i6
[4] 各类 Agent 写 SLS Kafka 兼容接口
https://help.aliyun.com/zh/sls/user-guide/use-the-kafka-protocol-to-upload-logs?spma2c4g.11186623.0.i15
[5] 使用 Kafka 协议上传日志
https://help.aliyun.com/zh/sls/user-guide/use-the-kafka-protocol-to-upload-logs?spma2c4g.11186623.0.i4
[6] SLS Kafka 导入
https://help.aliyun.com/zh/sls/user-guide/import-data-from-kafka-to-log-service?spma2c4g.11186623.0.i5
[7] ES 导入
https://help.aliyun.com/zh/sls/user-guide/import-data-from-elasticsearch-to-log-service?spma2c4g.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