腾讯云 ES 重磅推出,一站式全托管的自治索引终于来了!
作者:腾讯云 ES 团队
背景概述
当您有日志、监控等持续产生的时序数据存储需求时,通常通过滚动 Elasticsearch 索引的方式完成,该
方式虽然能帮忙您完成基本的数据管理功能,但是仍然需要结合索引模版、索引生命周期管理、索引别名等实现较完整的索引管理,有一定的使用门槛。另外也有一定的索引维护成本,例如需准确的进行索引分片数预估,避免索引分片数不足影响写入可用性、不合理的索引分片数设置导致分片数过多影响集群稳定性,以及索引所在节点故障阻塞写入时需要介入滚动新的索引等问题。
为了解决这些问题,腾讯云 Elasticsearch 自研了自治索引,自治索引是针对日志分析、运维监控等时序数据场景的一站式索引管理解决方案,您只需要通过简单的步骤创建自治索引,读写请求时指定单个自治索引对象即可,内置索引分片数自动调优、以及完整的索引生命周期管理。提升索引易用性的同时,大大降低索引的维护成本。本文主要介绍自治索引的适用场景、优势特性以及基本概念等。
适用场景
自治索引适用于日志分析、运维监控和其他时序数据场景,例如 Metric 监控分析、IoT 智能硬件数据收集等。
优势与特性
易使用:只需一条命令即可完成自治索引的创建,读写操作仅需关注单个自治索引,内置索引滚动、冷热数据搬迁、过期删除等功能,您只需在自治索引上配置即可,无需额外管理 ILM 策略和索引模版的成本。
易维护:内置索引分片数自动调整功能,实时跟踪业务写入压力变化,能够及时、稳定的调整索引分片数,以及故障自动滚动新的索引,大大降低索引维护成本。
前提条件
自治索引适用于 2022 年 6 月 1 日之后创建的 7.14.2 版本集群,早于此时间创建的 7.14.2 版本集群滚动重启后可支持,低于 7.14.2 版本的集群需升级至 7.14.2 版本。
写入到自治索引中的每个文档要求包含一个时间类型的字段,时间类型字段名称需与自治索引定义里的时间字段名称一致。如果创建自治索引时未指定时间字段名称,默认为 @timestamp。
基本概念
自治索引与后备索引
自治索引通过 Elasticsearch DataStream 内核增强实现,内部关联一个或多个后备索引,后备索引即普通的 Elasticsearch 索引,后备索引处于隐藏状态,只需关注和操作自治索引即可。
写入模式
自治索引支持追加模式写入和时间分区模式写入两种数据写入模式,追加模式写入适用于日志等无更新操作的追加写入场景,时间分区模式写入适用于监控指标等可能有历史数据覆盖更新的场景。
写入请求
向自治索引提交写请求时,会根据写入模式路由到对应的后备索引上。其中,追加写模式会路由到最新的后备索引,时间分区写模式会路由到数据时间对应的后备索引。
(1)追加模式写入
(2)时间分区模式写入
查询请求
向自治索引提交查询请求时,请求会转发到所有后备索引上。
滚动更新
滚动更新将为自治索引新建一个新的后备索引,当前支持以下两种滚动方式:
(1)自动滚动更新:通过自治索引内置功能实现,当满足自治索引配置的滚动周期条件或者当前提供写入的后备索引所在节点故障时,自动滚动新的后备索引。
(2)手动滚动更新:通过 Rollover API 实现,操作方式详见 Rollover。
索引生命周期管理
通过 Elasticsearch ILM 索引生命管理实现,可直接在自治索引配置生命周期管理策略,无需额外管理生命周期管理策略和关联索引模版,策略类型支持 Elasticsearch 完整的索引生命周期管理策略。
索引分片数管理
通过自治索引内置功能实现,内部实时跟踪索引写入压力变化,及时、稳定,调整索引分片数。您无需关心索引分片数不足引起的写入可用性,以及集群分片数过多的问题。
使用方式
腾讯云 ES 数据管理通过简单易用的可视化界面,提供了自治索引的创建、检索分析、索引监控、配置管理等多项服务,协助用户高效的进行索引管理。
创建索引:
索引列表:
索引监控
通过 API 创建自治索引
通过如下方式,我们即可完成自治索引的创建:
参数说明:
mappings
和 ES index 中的 mapping 一致,用于设置 ES index mapping,可选填。
settings
和 ES index 中的 settings 一致,用于设置 ES index settings,可选填。
policy
和 ES ilm 设置涵义一致,配置方式做了简化,用于设置索引生命周期策略,可选填。
options
自治索引属性,其中:
timestamp_field:时间字段,支持用户自定义,可选填,不填默认为:@timestamp 。
expire.max_age:时间范围分区过期最长保留时间,单位支持 h(小时)、d(天),最小单位为 1 小时,不填默认为 0,即不删除过期的历史时间范围分区。
expire.max_size:时间范围分区过期最大存储容量,超过则淘汰历史时间范围分区,单位支持 b、kb、mb、gb、tb、pb,不填默认为 0,即不淘汰历史范围分区。
precreate.enable:是否开启预创建时间范围分区,默认值为 true,表示自动预创建时间范围分区。
rollover.max_age:时间范围滚动周期,单位支持 h(小时)、d(天),可选填,默认值 1d,最小单位为 1h。-1 表示不滚动时间范围分区。
rollover.dynamic:时间范围分区滚动周期动态调整开关,默认为 true,表示是否支持平台动态调整时间范围分区的滚动周期。
shard_num.dynamic:时间范围分区分片数动态调整开关,默认为 true,表示是否支持平台动态调整时间范围分区的分片数。
write_mode:时间范围分区写入模式,可选值为:"append_only":追加模式写入,表示数据会写入最新的时间范围分区、"time_partition":时间分区模式写入,表示数据会写入数据时间对应的时间范围分区。默认为 append_only 模式。
评论