1,为什么要对elasticsearch进行生命周期管理?
ES索引存活数量过多,会给ES集群带来较大压力,不仅严重影响数据录入和数据查询效率,而且导致磁盘、CPU占用比过高,加大节点“驾崩”的风险。对ES进行索引生命周期管理意义重大,不仅能提高服务器性能,降低内存和磁盘使用率,而且能够优化数据结构,提升读写、查询效率,避免数据丢失情况出现。
2,如何对elasticsearch进行生命周期管理?
针对索引,根据时间、空间、类型、优先级进行不同种类的管理策略。推荐以时间序列为导向对数据进行应用策略操作。
对于时间序列索引,索引生命周期中有五个阶段:
热数据–索引正在积极更新和查询。
暖数据–索引不再更新,但仍需要查询。
冷数据–索引不再被更新,且很少被查询。数据仍然需要搜索,但查询速度较慢也没关系。
数据归档–索引不在被更新和查询,但需要存储以作备份。
数据删除–不再需要索引,可以安全删除。
以时间序列为导向,控制索引的老化时间,将3天以内的数据定义为热数据,3天以上7天以内的数据定义为暖数据,7天以上30天以内的数据定义为冷数据,30天以上数据进行归档,无需归档的数据进行删除。经过优化处理,可极大提高ES的可用性,避免数据丢失。
3,用什么对elasticsearch进行生命周期管理?
进行ES索引生命周期管理可借助工具。ES 7.0版本提供ILM策略进行elasticsearch-stack的组件生命周期管理功能;ES 6.x及以下版本使用elasticsearch-curator进行索引策略动作。使用ILM策略优先级比使用curator优先级更高,为了避免冲突,使用ILM进行索引管理后尽量避免使用curator再次进行管理。在此推荐使用elasticsearch-curator,本文提供Centos7及Centos6两个安装包的获取方法。
系统名 | 下载地址 |
---|---|
Centos7 | https://packages.elastic.co/curator/5/centos/7/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm |
Centos6 | https://packages.elastic.co/curator/5/centos/6/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm |
elasticsearch-curator使用时需要注意版本问题,如下图所示,目前Curator最新版本是5.7.6,支持ES 5.x及以上版本。
使用elasticsearch-curator进行时间序列为导向的索引生命周期管理,主要分为三个步骤:
1,Curator部署
Curator只需要安装在可访问Elasticsearch集群中机器上就可以运行, 它不需要安装在群集中的一个节点上。
用wget获取rpm包后直接安装:
rpm -ivh elasticsearch-curator*.rpm
软件安装完毕后,得到安装目录:/opt/elasticsearch-curator
在安装目录配置文件夹下,新建一个主配置文件curator.yml(粘贴下述代码,注意修改es集群hosts与port):
client:
hosts:
- rjjd-node01.xx.com
- rjjd-node02.xx.com
- rjjd-node03.xx.com
port: 9200
url_prefix:
use_ssl: False
timeout: 60
master_only:
logging:
loglevel: INFO
logfile: /var/log/curator.log
logformat: json
blacklist: ['elasticsearch', 'urllib3']
2,Curator策略编写
单个策略有以下四部分组成:
1.动作名称,例如close、open、shrink等。
2.动作参数,例如忽略空索引、发生错误后继续执行后面的动作等。
3.过滤器,例如按照时间、空间、分片等维度类型来过滤。
4.过滤参数,例如设置时间、空间、索引状态模式进行过滤器的增强参数。
示例(关闭索引策略):
action: close #动作类型
description:‘默认关闭30天前的大于100g的通达信索引’ #动作描述
options:
ignore_empty_list: True #忽略空索引
continue_if_exception: True #发生错误后继续执行
disable_action: False #启用动作
filters:
- filtertype: pattern #过滤类型1
kind: prefix #类型模式使用前缀
value: ‘tdx_’ #前缀名称
exclude: #是否排除
- filtertype: age #过滤类型2,按照时间
source: creation_date #时间选择参数,按照索引生成时间
direction: older #时间模式
unit: days #时间单位
unit_count: 30 #时间具体值
- filtertype: space #过滤类型3
disk_space: 100 #类型大小
threshold_behavior: less_than #判断条件,大于或者小于
reverse: True #是否反向判断
3,Curator启动
创建yml文件(以上文关闭索引策略为例):
[root@localhost .curator]# cat close.yml
actions:
action: close
description:‘默认关闭30天前的大于100g的通达信索引’
options:
ignore_empty_list: True
continue_if_exception: True
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: ‘tdx_’
exclude:
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 30
- filtertype: space
disk_space: 100
threshold_behavior: less_than
reverse: True
命令启动:
curator –config curator.yml config/close.yml &
配置定时任务:
Crontab -e
#加上如下的命令,表示每日22点定时执行close.yml:
#0 22 * * * /usr/bin/curator –config /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/close.yml
定时任务解析参数解析:
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
如上文定时任务:0代表minute,区间0-59;22代表hour,区间0-23;三个“”的占位依次代表day-of-month、month、day-of-week,day-of-month区间1-31,month区间1-12,day-of-week区间0-7,周日可以是0或7,“”意味着全选;full-path-to-shell-script指向配置文件路径。
如有未尽事宜,请参考Curator官方链接:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/actions.html
来源:CSDN
作者:雨夜天晴
链接:https://blog.csdn.net/weixin_42367527/article/details/103781597