Elasticsearch Curator实战:使用delete_indices.yml清理过期索引
什么是Elasticsearch Curator
Elasticsearch Curator是一个强大的索引管理工具,专门用于帮助管理员自动化处理Elasticsearch中的索引生命周期。它通过简单的YAML配置文件定义各种索引操作,如创建、移除、优化、备份等,特别适合处理日志类索引的日常维护工作。
delete_indices.yml文件解析
delete_indices.yml是Curator的一个典型动作配置文件,用于定义移除过期索引的操作规则。下面我们详细解析这个配置文件的各个部分。
基本结构
配置文件采用YAML格式,主要包含以下几个关键部分:
- actions:定义要执行的操作列表
- action:指定操作类型为"delete_indices"(移除索引)
- description:操作描述
- options:操作选项配置
- filters:定义过滤条件,确定哪些索引会被操作
配置详解
动作定义
actions:
1:
action: delete_indices
description: >-
移除名称前缀为"logstash-"且创建时间超过45天的索引。如果过滤条件没有匹配到任何索引,忽略错误并正常退出。
action: delete_indices
:明确指定这是一个移除索引的操作description
:描述了此操作的目的——移除名称前缀为"logstash-"且创建时间超过45天的索引
选项配置
options:
ignore_empty_list: True
timeout_override:
continue_if_exception: False
disable_action: True
ignore_empty_list: True
:当过滤条件没有匹配到任何索引时,不报错而是正常退出continue_if_exception: False
:如果在处理过程中遇到异常,立即停止执行disable_action: True
:这是一个安全开关,实际使用时需要改为False才会真正执行timeout_override
:可以覆盖默认的超时设置
过滤器配置
filters:
- filtertype: pattern
kind: prefix
value: logstash-
exclude:
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 45
exclude:
过滤器采用链式设计,依次应用多个过滤条件:
-
模式过滤器:
filtertype: pattern
:基于索引名称模式匹配kind: prefix
:匹配前缀value: logstash-
:只处理以"logstash-"开头的索引exclude
:可以指定要排除的特定模式
-
时间过滤器:
filtertype: age
:基于时间的过滤source: name
:从索引名称中提取时间信息(常见于日志类索引如logstash-2023.01.01)direction: older
:筛选比指定时间更早的索引timestring: '%Y.%m.%d'
:定义如何从索引名解析日期(如2023.01.01)unit: days
:时间单位为天unit_count: 45
:移除超过45天的索引
实际应用建议
-
测试验证:
- 首次使用时,保持
disable_action: True
,使用curator --dry-run
进行试运行 - 确认输出结果符合预期后再实际执行
- 首次使用时,保持
-
时间格式调整:
- 如果索引名称中的日期格式不同,需要相应调整
timestring
- 例如,对于"logs-2023-01-01"格式,应使用
'%Y-%m-%d'
- 如果索引名称中的日期格式不同,需要相应调整
-
多条件组合:
- 可以添加更多过滤器实现复杂条件
- 例如增加
space
过滤器基于磁盘空间使用情况移除索引
-
定时执行:
- 建议通过cron或类似工具定期执行Curator
- 日志类索引通常每天执行一次清理
安全注意事项
- 操作前务必备份重要数据
- 生产环境先在小规模测试集群验证配置
- 考虑设置
continue_if_exception: True
防止单个索引移除失败影响后续操作 - 对于关键索引,可以在
exclude
中添加保护规则
通过合理配置delete_indices.yml,管理员可以轻松实现Elasticsearch索引的自动化生命周期管理,有效控制集群规模,优化存储使用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考