【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。

news2025/3/4 8:46:55

以下是对 Elasticsearch 官方教程《Customize built-in ILM policies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。

---

Elasticsearch 教程:自定义内置 ILM 策略

1.背景与目标

Elasticsearch 提供了内置的索引生命周期管理(ILM)策略,例如`logs@lifecycle`、`metrics@lifecycle`和`synthetics@lifecycle`。这些策略主要用于管理 Elastic Agent 收集的数据流(data streams)的后端索引。然而,这些默认策略可能无法完全满足您的性能、弹性和数据保留需求。因此,Elasticsearch 允许用户根据自己的需求自定义这些策略。

本教程的目标是帮助您根据以下需求自定义 ILM 策略:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 滚动后,将索引保留在热数据层 30 天。

• 滚动 30 天后,将索引移动到温数据层,设置副本分片数为 1,并强制合并索引段以释放已删除文档占用的空间。

• 滚动 90 天后删除索引。

2.前提条件

在开始自定义 ILM 策略之前,您需要准备以下环境:

2.1 Elasticsearch 集群

• 热数据层(Hot Tier):用于存储最近的数据,提供高性能的读写操作。

• 温数据层(Warm Tier):用于存储较旧的数据,适合读取操作,但写入性能较低。

如果使用Elasticsearch 服务:

• 默认情况下,Elastic Stack 部署包含热层。

• 要添加温层,可以通过编辑部署并点击“添加温数据层的容量”来完成。

如果使用自管集群:

• 需要为节点分配`data_hot`和`data_warm`角色。

• 例如,在温层的每个节点的`elasticsearch.yml`文件中添加以下配置:

```yaml

  node.roles: [data_warm]

  ```

2.2 Elastic Agent

• 需要一个安装并配置好的 Elastic Agent,用于将日志数据发送到 Elasticsearch 集群。

• Elastic Agent 使用数据流(data streams)存储日志监控数据,索引模式为`logs-*-*`。

3.自定义 ILM 策略

3.1 查看默认的 ILM 策略

默认的`logs@lifecycle`策略会自动管理`logs-*-*`数据流的后端索引。该策略的默认行为如下:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 该策略旨在防止创建许多微小的每日索引。

3.2 创建新的 ILM 策略

由于直接编辑管理的策略可能会被回滚或覆盖,因此建议将默认策略另存为新策略,并对其进行自定义。

1. 打开 Kibana:

• 转到堆栈管理(Stack Management)>索引生命周期策略(Index Lifecycle Policies)。

• 切换“包含管理的系统策略(Include managed system policies)”以显示默认的`logs@lifecycle`策略。

2. 另存为新策略:

• 选择`logs@lifecycle`策略。

• 在“编辑策略日志(Edit policy logs)”页面上,切换“另存为新策略(Save as new policy)”,并为新策略命名,例如`logs-custom`。

3.3 自定义策略的阶段和设置

ILM 策略包含多个阶段(Phase),每个阶段都有特定的行为和设置。我们将根据需求自定义以下阶段:

3.3.1 热阶段(Hot Phase)

• 滚动设置(Rollover Settings):

• 默认情况下,`logs@lifecycle`策略会在索引的主分片大小达到 50GB 或索引满 30 天时滚动到新索引。

• 如果需要修改滚动条件,可以点击“高级设置(Advanced settings)”,并禁用“使用推荐默认值(Use recommended defaults)”。

• 例如,可以将滚动条件设置为“索引大小达到 40GB 或索引满 20 天”。

3.3.2 温阶段(Warm Phase)

• 激活温阶段:

• 默认情况下,`logs@lifecycle`策略可能没有启用温阶段。您需要手动启用并配置它。

• 点击“高级设置(Advanced settings)”。

• 设置“将数据移入阶段的时间(Move data into phase when)”为“30 天旧”,表示在滚动 30 天后将索引移至温层。

• 启用“设置副本(Set replicas)”,并将“副本数量(Number of replicas)”设置为 1。

• 启用“强制合并数据(Force merge data)”,并将“段数(Number of segments)”设置为 1。这有助于释放已删除文档占用的空间。

3.3.3 删除阶段(Delete Phase)

• 启用删除阶段:

• 在温阶段,点击垃圾桶图标以启用删除阶段。

• 在删除阶段,设置“将数据移入阶段的时间(Move data into phase when)”为“90 天旧”,表示在滚动 90 天后删除索引。

3. 保存新策略:

• 完成所有配置后,点击“保存为新策略(Save as new policy)”。

4.应用新的 ILM 策略

创建并配置好新的 ILM 策略后,需要将其应用于`logs`索引模板,以便 Elastic Agent 使用该策略管理日志数据。

1. 创建组件模板(Component Template):

• 转到 Kibana 的组件模板(Component Templates)页面。

• 点击“创建组件模板(Create component template)”。

• 命名组件模板为`logs@custom`。

• 在“索引设置(Index settings)”中,指定新创建的 ILM 策略名称:

```json

     {

       "index": {

         "lifecycle": {

           "name": "logs-custom"

         }

       }

     }

     ```

• 审核并保存组件模板。

2. 更新索引模板(Index Template):

• 转到索引模板(Index Templates)页面。

• 选择`logs`索引模板。

• 查看“组件模板(Component templates)”列表,确认`logs@custom`组件模板已被添加。

5.总结

通过以上步骤,您可以根据自己的需求自定义 Elasticsearch 的内置 ILM 策略。自定义策略允许您灵活地管理索引的生命周期,包括滚动、数据层迁移、副本设置以及索引的最终删除。这有助于优化集群的性能、资源利用率和数据保留策略。

 

 

6.注意事项

• 不要直接编辑管理的策略:直接修改默认的管理策略可能会导致策略被回滚或覆盖。建议始终通过“另存为新策略”的方式来创建自定义策略。

• 测试新策略:在生产环境中应用新策略之前,建议在测试环境中验证其行为,确保它符合您的预期。

• 监控与调整:ILM 策略的设置可能需要根据实际使用情况进行调整。建议定期监控集群的性能和资源使用情况,并根据需要优化策略。

通过本教程,您应该能够根据自己的需求自定义 Elasticsearch 的 ILM 策略,并将其应用于实际的数据管理场景中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(十 二)趣学设计模式 之 享元模式!

目录 一、 啥是享元模式?二、 为什么要用享元模式?三、 享元模式的实现方式四、 享元模式的优缺点五、 享元模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

Trae:国内首款AI原生IDE,编程效率大提升

今年一月,在新闻上看到字节跳动面向海外市场推出了一款名为Trae的AI集成开发环境(IDE)。起初,我并未给予过多关注,因为市面上已有不少IDE集成了AI插件,功能也非常全面,而字节跳动自家的MarsCode…

RocketMQ定时/延时消息实现机制

RocketMQ 的延迟消息是其核心特性之一,允许消息在指定延迟时间后才被消费者消费。 定时消息生命周期 一、延迟消息的核心机制 RocketMQ(5.0之前) 不支持任意时间精度的延迟,而是通过预定义的 延迟级别(Delay Level&a…

基于SpringBoot的校园二手交易平台(源码+论文+部署教程)

运行环境 校园二手交易平台运行环境如下: • 前端:Vue • 后端:Java • IDE工具:IntelliJ IDEA(可自行更换) • 技术栈:SpringBoot Vue MySQL 主要功能 校园二手交易平台主要包含前台和…

利用 LangChain 和一个大语言模型(LLM)构建一个链条,自动从用户输入的问题中提取相关的 SQL 表信息,再生成对应的 SQL 查询

示例代码: from langchain_core.runnables import RunnablePassthrough from langchain.chains import create_sql_query_chain from operator import itemgetter from langchain.chains.openai_tools import create_extraction_chain_pydantic# 系统消息&#xff…

力扣hot 100之矩阵四题解法总结

本期总结hot100 中二维矩阵的题,时空复杂度就不分析了 1.矩阵置零 原地标记,用第一行和第一列作为当前行列是否为0的标记,同时用两个标签分别记录0行、0列的标记空间中原本是否有0 class Solution:def setZeroes(self, matrix: List[List[…

在Linux上使用APT安装Sniffnet的详细步骤

一、引言 Sniffnet 是一款开源的网络流量监控工具,适用于多种Linux发行版。如果你的Linux系统使用APT(Advanced Package Tool)作为包管理器,以下是如何通过APT安装Sniffnet的详细步骤。 二、系统要求 在开始安装之前&#xff0…

zookeeper-docker版

Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…

StableDiffusion本地部署 3 整合包猜想

本地部署和整合包制作猜测 文章目录 本地部署和整合包制作猜测官方部署第一种第二种 StabilityMatrix下载整合包制作流程猜测 写了这么多python打包和本地部署的文章,目的是向做一个小整合包出来,不要求有图形界面,只是希望一键就能运行。 但…

数据结构(初阶)(七)----树和二叉树(前中后序遍历)

实现链式结构的二叉树 实现链式结构的二叉树遍历前序遍历中序遍历后序遍历 节点个数叶子节点个数⼆叉树第k层结点个数⼆叉树的深度/⾼度查找值为X的节点二叉树的销毁 层序遍历判断二叉树是否为完全二叉树 ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常…

科技赋能筑未来 中建海龙MiC建筑技术打造保障房建设新标杆

近日,深圳梅林路6号保障房项目顺利封顶,标志着国内装配式建筑领域又一里程碑式突破。中建海龙科技有限公司(以下简称“中建海龙”)以模块化集成建筑(MiC)技术为核心,通过科技创新与工业化建造深…

json介绍、python数据和json数据的相互转换

目录 一 json介绍 json是什么? 用处 Json 和 XML 对比 各语言对Json的支持情况 Json规范详解 二 python数据和json数据的相互转换 dumps() : 转换成json loads(): 转换成python数据 总结 一 json介绍 json是什么? 实质上是一条字符串 是一种…

计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)

文章目录 概要项目演示图片系统架构技术运行环境系统功能简介 概要 网络上许多计算机毕设项目开发前端界面设计复杂、不美观,而且功能结构十分单一,存在很多雷同的项目:不同的项目基本上就是套用固定模板,换个颜色、改个文字&…

Spring Boot 测试:单元、集成与契约测试全解析

一、Spring Boot 分层测试策略 Spring Boot 应用采用经典的分层架构,不同层级的功能模块对应不同的测试策略,以确保代码质量和系统稳定性。 Spring Boot 分层架构: Spring Boot分层架构 A[客户端] -->|HTTP 请求| B[Controller 层] …

Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)

在 Oracle 数据库的学习进程中,分组查询与联表查询是进阶阶段的重要知识点,它们如同数据库操作的魔法棒,能够从复杂的数据中挖掘出有价值的信息。对于 Java 全栈开发者而言,掌握这些技能不仅有助于高效地处理数据库数据&#xff0…

机器学习的起点:线性回归Linear Regression

机器学习的起点:线性回归Linear Regression 作为机器学习的起点,线性回归是理解算法逻辑的绝佳入口。我们从定义、评估方法、应用场景到局限性,用生活化的案例和数学直觉为你构建知识框架。 回归算法 一、线性回归的定义与核心原理 定义&a…

17、什么是智能指针,C++有哪几种智能指针【高频】

智能指针其实不是指针,而是一个(模板)类,用来存储指向某块资源的指针,并自动释放这块资源,从而解决内存泄漏问题。主要有以下四种: auto_ptr 它的思想就是当当一个指针对象赋值给另一个指针对…

PyCharm接入本地部署DeepSeek 实现AI编程!【支持windows与linux】

今天尝试在pycharm上接入了本地部署的deepseek,实现了AI编程,体验还是很棒的。下面详细叙述整个安装过程。 本次搭建的框架组合是 DeepSeek-r1:1.5b/7b Pycharm专业版或者社区版 Proxy AI(CodeGPT) 首先了解不同版本的deepsee…

PyCharm怎么集成DeepSeek

PyCharm怎么集成DeepSeek 在PyCharm中集成DeepSeek等大语言模型(LLM)可以借助一些插件或通过代码调用API的方式实现,以下为你详细介绍两种方法: 方法一:使用JetBrains AI插件(若支持DeepSeek) JetBrains推出了AI插件来集成大语言模型,不过截至2024年7月,官方插件主要…

【定昌Linux系统】部署了java程序,设置开启启动

将代码上传到相应的目录,并且配置了一个.sh的启动脚本文件 文件内容: #!/bin/bash# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名) JAR_FILE"/usr/local/java/xs_luruan_client/lib/xs_luruan_…