作者:腾讯云大数据ES团队
自治索引是腾讯云ES推出的一站式索引全托管解决方案,应用于日志分析、运维监控等时序数据场景,提供分片自动调优、查询裁剪、故障自动修复、索引生命周期管理等功能。可在降低运维与管理成本的同时,提高使用效率与读写性能。
背景概述
腾讯云ES团队从大量的运营实践中发现,索引的合理设置是业务高效稳定运行的基础,现实中索引管理不仅使用门槛高、运维投入高,更是很多线上问题的源头,目前ES 60%的运维管理操作、60%的基础线上问题都与此相关,是使用ES的关键痛点。
基于此背景,腾讯云ES推出了业界首创的自治索引,能实现索引创建、滚动、降冷、删除、故障自动修复的全自动化,并实现分片的智能调优,大幅减少了运维故障和资源投入。
本篇文章将从PB级日志数据管理的挑战出发,为大家介绍自治索引的基本概念以及优势特性。
PB级日志数据管理的挑战
日志场景的特点
从我们大量的线上运营与实践来看,目前日志场景主要存在以下几个特点:
- 写入的数据中均带有时间戳,例如常见的@timestamp之类的字段;
- 写入吞吐量大,写入TPS最高可达千万/秒,对可用性的要求高;
- 存在近热远冷的特性,例如刚上报的日志数据,往往读写频率较高,而随着时间推移,频率则慢慢降低;
- 写多读少,大部分的请求往往用于数据写入,而只有少部分的请求进行数据查询;
- 某些行业存在明显的波峰波谷效应,例如在出行行业,数据量在下雨天、节假日骤增,而平常则趋于平缓;
- 数据的价值密度低,在排障时,我们需从海量的日志数据中提取关键信息。
别名方案
基于以上提到的特点,我们先来看到在日志数据管理中常见的解决方式-别名方案,这种方式需要创建ILM、索引模版、初始索引,然后通过别名写入数据。这种方式虽然提供了完整的日志解决方案,但从业务实际接入与维护情况看,仍然存在一定的使用和管理开销。包含两部分:
1)数据接入阶段:ES索引创建,用户需要理解较多概念原理,比如索引模板、别名、生命周期管理、索引滚动等,功能过于灵活、接口使用繁杂;产生一定的学习和使用门槛。
2)数据维护阶段,包括:
- 故障处理,比如写入快速放量,因索引分片数设置不合理,产生写入拒绝,需要手动调整分片数并滚动索引;以及机器故障场景下,需及时滚动索引,保障写入正常,降低业务影响。
- 日常维护:需定期收敛集群分片数,降低集群元数据管理压力,提高集群稳定性。
总结一下,基于别名的日志数据管理存在一定的运营投入、处理不及时会产生业务影响等问题。
别名方案使用流程
社区Datastream方案
再来看下ES社区推出的Datastream功能,Datastream通过结合ILM,可满足日志等时序数据管理需求。社区Datastream解决方案的优势在于,提供了相对完整的日志类时序数据管理功能,并且ILM、索引模板、DataStream,经过多个版本迭代,功能已成熟稳定。
但从数据来看,Datastream并没有非常广泛的使用,原因是:
1)使用相对复杂,创建时依赖ILM、模板等多个组件,并需强制结合index模版使用;
2)字段名限制:写入数据必须带名称为@timestamp的时间字段;
3)写入模式限制:只支持追加写,数据更新场景不太适用;
另外,ILM自动滚动索引虽然可以解决单分片过大的问题,但是在业务写入快速放量,机器故障等场景中仍存在无法覆盖的问题。
Datastream写入示意图
自治索引概述
我们针对目前业界在日志分析、运维监控等场景中使用ES遇到的索引分片设置难题、索引生命周期管理开销大、平台运维成本高等问题,自研了自治索引,作为一站式的索引全托管解决方案,自治索引提供了分片自动调优、查询裁剪、故障自动修复、索引生命周期管理等特性,同时在写入层做了相应的优化,整体而言,自治索引可在降低运维与管理成本的同时,极大的提高使用效率以及在写入与查询时的性能。
自治索引与传统方案对比
基本概念
自治索引是基于Elasticsearch的Datastream内核进行增强实现的,内部关联了一个或多个backing index,即后备索引,我们可以把后备索引理解为自治索引的子索引,数据的写入、查询、滚动、降冷、删除等操作都是针对后备索引的,后备索引处于隐藏的状态,我们在使用与操作时,只需要关注自治索引这一个对象就可以了,无需维护复杂的索引间的关系。
自治索引基本概念
写入模式
自治索引支持追加模式写入和时间分区模式写入两种数据写入模式,其中:
- 追加模式写入适用于日志等无更新操作的追加写入场景;
- 时间分区模式写入适用于监控指标等可能有历史数据覆盖更新的场景。
提交写请求时,自治索引会根据写入模式路由到对应的后备索引上,其中,追加写模式会路由到最新的后备索引,时间分区写模式会路由到数据时间对应的后备索引。
自治索引优势特性
整体而言,自治索引围绕索引从 索引创建-数据写入-分片调优-查询-运维管理等索引使用全流程操作,均提供了相应的特性帮助我们更好进行使用与管理。
优势特性1:高效创建与管理
自治索引的创建和管理相较原生索引以及Datastream更为高效,自治索引内置索引生命周期管理策略、索引模版等,我们只需通过一条命令,即可完成所有配置,无需额外管理ILM、索引模版以及别名等的成本。
优势特性2:写入性能优化
针对“0点索引滚动,产生写入抖动”、“百万级TPS,CPU无法充分利用”、“自带主键写入性能衰减1 倍”等问题,自治索引在写入层均做了相应的优化,相比开源版本ES,写入稳定性提升80%,TPS提升1倍 ,资源利用率提高50 %,性能提升45%。数据如下:
写吞吐(TPS) | CPU | 拒绝率 | |
---|---|---|---|
开源版本 | 76W | 31% | 0.3% |
腾讯云ES | 169W( 121%) | 49%( 58%) | 0% |
写入性能对比
优势特性3:分片自动调优
自治索引支持基于业务负载自动调整分片,兼容写入快速增长、周期性波动、写入毛刺等场景,并且和节点数量关联,使得业务在写入快速放量、扩缩容等场景下,不会出现写入拒绝或需要手动调整的情况。
优势特性4:查询裁剪
自治索引可结合查询条件,快速跳过无关索引,降低分片发送请求数量,实现索引级别的快速裁剪,将PB级日志查询性能提升3倍以上。
优势特性5:故障自动修复
当监测到索引分片所在的某个节点故障导致索引red或者写入异常时,自治索引会自动滚动出新的后备索引,保证新的后备索引分片都分布在正常节点,保证写入的可用性,整个过程无需人工干预,业务无感知,全部由自治索引自动完成。
故障自动修复示意图
总结
本文详细的介绍了由腾讯云ES自研的自治索引应用场景及其优势特性,通过与传统方案的对比,可以看出在日志分析、运维监控等时序数据场景中,自治索引对 创建-写入-调优-查询-运维 等索引使用全流程操作均做了能力上的增强,能够有效的应对海量数据的管理,欢迎大家使用腾讯云ES与自治索引!
您可能需要的链接:
腾讯云ES:一站式接入,数据链路可视化重磅来袭!
腾讯云ES:基于Filebeat进行TKE容器日志采集
免费体验活动专区
Elasticsearch 新用户可享 2核4G,0元 体验 30 天!顺畅体验云上集群
添加小助手回复 Elasticsearch 加入 Elasticsearch 技术社区