「Curator」- 删除五天前日志索引 @20210402
问题描述
日志集群:Elasticsearch 7.6.3 我们需要自动删除在日志集群中五天前的日志。
我们的日志以天为单位存储在不同的索引中,的以天日志索引格式为 logstash-YYYY.MM.DD
解决方法
使用 Curator 工具
第一步、创建配置文件
该配置文件用于指定集群的连接信息,config.yaml:
---
client:
hosts:
- 10.10.50.229
- 10.10.50.230
- 10.10.50.231
port: 9200
url_prefix:
http_auth:
timeout: 300
master_only: False
logging:
loglevel: INFO
logfile:
logformat: default
blacklist: ['elasticsearch', 'urllib3']
第二步、创建动作文件
该配置文件用于指定要执行的动作,action.yaml
---
actions:
1:
description: "删除五天前的索引"
action: delete_indices
options:
ignore_empty_list: True
timeout_override: 300
continue_if_exception: False
disable_action: False
filters:
- filtertype: pattern
kind: timestring
value: 'logstash-%Y.%m.%d'
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 5
第三步、测试
使用 --dry-run 测试,根据日志输出进行调整:
curator --config /path/to/config.yaml --dry-run action.yaml
然后去掉 --dry-run 选项执行,并检查索引是否被删除:
curator --config /path/to/config.yaml action.yaml
第四步、添加定时任务
附加说明
时间选择的问题
时间选择是个复杂的问题,该方案不适用与删除 30 天前的日志,甚至删除一周前的日志都可能存在问题,参考以下文档对时间选择的描述:
1)Curator Reference [5.8] » Filters » age
2)Curator Reference [5.8] » Filters » period
比如说,在 filtertype: age 中,月份是按照 30 天计算的,但是实际的月份会有 28 29 30 31 天,这就导致会出现偏差。在涉及多个月份或者索引命名使用周数(索引名包含周信息)的情况下,可以使用 filter: period 过滤。
参考文献
Curator Reference [5.8] » Configuration » Configuration File
Curator Reference [5.8] » Actions » Delete Indices
Curator Reference [5.8] » Filters » pattern
浙公网安备 33010602011771号