ES--索引生命周期管理

核能气质少年 提交于 2020-01-29 00:09:11

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!