前言
随着接入ELK日志分析平台的系统增加,每日海量的日志数据使得磁盘空间越发紧张,从而ES的日志清理也成了一个常规操作。而ES官方也提供了一个很好用的工具——curator来实现这个事情。抽空也部署了一个,以供阅知。
Curator简介
据官方介绍,curator最早被称为clearESindices.py的python脚本,它的唯一功能就是删除索引清理数据,而后重命名为logstash_index_cleaner.py,在logstash下用来清理过期日志。此后不久,原作者加入Elastic,改造成为了Elasticsearch Curator官方工具,扩展了更多功能,实现对索引的灵活操作,目前最新5.8版本主要功能有:从别名添加或删除索引、更改分片路由分配、关闭索引、创建索引、删除索引、删除快照、打开被关闭的索引、对索引执行forcemerge合并、reindex索引(包括来自远程集群的索引)、更改索引的每个分片的副本数、rollover索引、生成索引的快照(备份)、还原快照。
与ES版本兼容对应关系图
部署使用
不得不说老外做的工具人性化方面还是很到位的,Curator 支持各种方式部署,windows和Linux皆可,且不必安装在ES集群所在节点,只要可以访问到ES服务即可。详细可以参考官网。我这里为了方便直接用windows的免安装版本了。
curator提供了两个命令接口:curator和curator_cli。
curator_cli命令
一般curator_cli主要用来调试,适合查看索引状态,这个接口只支持一次运行一个action,并且通过命令行写入复杂的filter可读性不好,所以,一般是使用curator_cli来配合写curator的action.yml做简单的测试。
比如查看所有的index:
curator_cli --host 192.168.1.10 --port 9200show_indices --verbos
curator命令
curator [--config CONFIG.YML][--dry-run] ACTION_FILE.YML
--config之后跟上配置文件,主要配置ES集群的信息;--dry-run如果带上了则会模拟执行action的操作,实际不会生效,主要用来配置规则前的测试;action文件里面配置的是具体的索引操作规则,每个action由三部分组成:
- action,具体执行什么操作
- option, 配置哪些可选项
- filter, 过滤条件,哪些index需要执行action
config配置文件里面需要注意的是,如果集群里面索引较多,建议请求超时时长设长点否则容易超时。
Actions也是在一个yml文件中,通过缩进定义变量。我这里只加了一个清除10天前索引数据的动作,如果定义了多个action,它们则会被顺序执行,如果有依赖关系,要保证被依赖的action写在前面。这里要注意的是option选项,在多action中并且没有互相依赖的情况下,一定要设置ignore_empty_list:True,这里代表的是,如果filter没有找到符合查询条件的index,略过。如果设置成false,且在第一个action时,没有找到匹配的index,整个curator会被abort。同样option选项里面的disable_action: True也要注意设置为False,否则该action不会执行,目的是为了多个action任务中可以暂停某些不需要的任务。
官网上还有很多action的例子,可以很方便的找到对应的参考。
自动执行
curator是一个命令行工具,而我们的需要是需要自动化的定期维护,因此需要在linux系统的crontab或者windows的计划任务中增加一个每天执行该命令的操作即可。
Windows例子
我这里是写到一个批处理脚本里面,然后加到windows计划任务里的方式处理的
Linux 例子
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 0 * * * root curator --config /opt/curator/curator.yml /opt/curator/action.yml
参考
[1]. 官方简介:
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/about-origin.html
[2]. 博客园:https://www.cnblogs.com/wynjauu/articles/9372659.html