ES索引生命周期管理

1.什么是索引周期管理

定义:以时间为导向对数据进行应用策略操作。
索引管理流程:热数据->暖数据->冷数据->数据归档->数据删除
索引策略动作:优先级、重索引、分片分配、只读、合并、收缩、冻结、删除

2.如何做索引生命周期管理

2.1设计策略

针对索引根据时间、空间、类型、优先级进行不同种类的管理策略。

示例:
a. 我需要将tdx_索引自动关闭30天前的数据,自动删除180天前的数据;
b. 我需要将jty_
索引每达到100g新生成一个新的二级索引;
c. 我需要将ths_和jty_索引在进行段合并时,第一优先顺序为ths索引,第二优先顺序为jty索引;

2.2设计动作

针对索引根据不同策略,进行相关的规则设计以及阶段设计

示例:
针对tdx_索引,我需要先合并,再收缩,再关闭,再删除;
针对jty_
索引,我需要增加副本,再关闭,再删除

2.3执行动作

针对每个动作,编写索引的实际操作脚本
合并:

##################### ForceMerge###################################
actions:
  1:
  action: forcemerge
  description: >- #默认合并2天之前的ES集群监控索引
  options:
    max_num_segments: 1
    delay: 0
    timeout_override:
    continue_if_exception: True
    disable_action: False

  filters:
    -filtertype: pattern
    kind: regex
    value: '^(\.monitoring-(es|kibana|beats|logstash)-6-).*$'
    exclude:

    -filtertype: age
    source: creation_date
    direction: older
    unit: days
    unit_count: 1

    -filtertype: forcemerged
    max_num_segments: 1

关闭:

[####################Close ###################################]
actions:
  1:
    action: close
    description: >-
      #默认close7天之前的ES集群监控watch索引
    options:
      ignore_empty_list: True
      continue_if_exception: True
      disable_action: False

    filters:
    - filtertype: pattern
      kind: prefix
      value: .watcher-history-9-
      exclude:

    - filtertype: age
      source: creation_date
      direction: older
      unit: days
      unit_count: 7

2.4完成策略

针对每个策略,调用系统定时任务进行循环操作

3.用什么来做索引管理

ES7.0版本提供ILM策略进行es-stack的组件生命周期管理功能;
ES6.x及以下版本使用elasticsearch-curator进行索引策略动作;
使用ILM策略优先级比使用curator优先级更高,为了避免冲突,使用ILM进行索引管理后尽量避免使用curator再次进行管理;

3.1Index lifecycle management

通过将生命周期策略附加到用于创建索引模板的索引模板来控制索引在老化时的处理方式。您可以更新策略以修改新索引和现有索引的生命周期。

对于时间序列索引,索引生命周期中有四个阶段:
•热- 索引正在积极更新和查询。
•暖- 索引不再更新,但仍需要查询。
•冷- 索引不再被更新,且很少被查询。数据仍然需要搜索,但如果这些查询速度较慢也没关系。
•删除- 不再需要索引,可以安全删除。

生命周期策略控制索引如何在这些阶段中转换以及在每个阶段对索引执行的操作。该政策可以指定:
•要转移到新索引的最大空间或时间。
•索引不再更新和主分片的数量可以减少。
•强制合并以永久删除标记为删除的文档。
•索引可以移动到性能较低的硬件。
•可用性不那么重要的索引和副本的数量可以减少。
•索引需要进行安全删除。

例如,如果要将一组ATM中的度量标准数据编入索引到Elasticsearch,则可以定义一个策略:
1.当索引达到50GB时,转到新索引。
2.将旧索引移动到暖数据阶段,将其标记为只读,并将其合并缩小为单个分片单个数据段。
3.7天后,将索引移至冷数据阶段并将其移至较便宜的硬件。
4.达到所需的30天保留期后,删除索引。

3.2Elasticsearch-curator

Curator安装

Centos7
wget https://packages.elastic.co/curator/5/centos/7/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm

Centos6
wget https://packages.elastic.co/curator/5/centos/6/Packages/elasticsearch-curator-5.7.6-1.x86_64.rpm

rpm -ivh elasticsearch-curator*.rpm

软件安装完毕后,得到安装目录:/opt/elasticsearch-curator
安装完毕后,需要新建一个主配置文件curator.yml:

################ Curator #########
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']

Curator策略编写

官方链接:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/actions.html

目前支持的策略动作有:
Alias(重新别名)
Allocation(分配分片)
Close(关闭索引)
Cluster Routing(集群路由)
Create Index(创建索引)
Delete Indices(删除索引)
Delete Snapshots(删除快照)
Forcemerge(段合并)
Index Settings(索引设置)
Open(打开索引)
Reindex(重新索引)
Replicas(副本分配)
Restore(重新存储)
Rollover(滚动索引)
Shrink(收缩索引)
Snapshot(索引快照)

单个策略有以下几部分组成:
a.动作名称,例如close,open,shrink,
官方链接:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/actions.html

b.动作参数,例如忽略空索引,第一个执行错误继续执行后面的动作,
官方链接:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/options.html

c.过滤器,例如按照时间,按照空间,按照分片等维度类型来过滤,
官方链接:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/filters.html

d.过滤参数,例如设置时间大小,空间大小,索引状态模式进行过滤器的增强参数,
官方链接:
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/filter_elements.html

示例:关闭索引策略

#################### Close  ###################################
actions:
  1:
  action: close            #动作类型
  description: ‘默认close7天之前的ES集群监控watch索引’  #动作描述
  options:
    ignore_empty_list: True      #忽略空索引
    continue_if_exception: True  #发生错误后继续执行
    disable_action: False        #启用动作

  filters:                   
    -filtertype: pattern            #过滤类型1
    kind: prefix            #类型模式使用前缀
    value: .watcher-history-9-      #前缀名称
    exclude:                      #是否排除
    -filtertype: age                #过滤类型2,按照时间
    source: creation_date        #时间选择参数,按照索引生成时间
    direction: older              #时间模式
    unit: days                  #时间单位
    unit_count: 7                #时间具体值

2:
  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                #是否反向判断

Curator启动

命令启动:
curator –config curator.ymlconfig/close.yml &
配置定时任务:
Crontab -e

0 22 * * * /usr/bin/curator –config /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/close.yml
0 2 * * * /usr/bin/curator –config /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/forcemerge.yml

4.实际使用示例

请编写一个索引管理策略文件和定时任务,需求:

1.针对通达信索引tdx_*(按月生成),每天凌晨2点开始进行段合并,每个分片合并成3个段;

actions:
  1:
    action: forcemerge
    description: “针对通达信索引tdx_*(按月生成),每天凌晨2点开始进行段合并,每个分片合并成3个段”
    options:
      max_num_segments: 3
      continue_if_exception: True
      disable_action: False
    filters:
    - filtertype: pattern
        kind: prefix
        value: tdx_
        timestring:"%Y.%m"
    - filtertype: age
        source: creation_date
        direction: older
        unit: months
        unit_count: 1
    - filtertype: forcemerged
        max_num_segments: 3

#定时任务          
0 2 * * * /usr/bin/curator –config  /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/tdxmerger.yml

2.针对金太阳索引jty_(按小时生成),每天凌晨3点开始进行关闭,关闭40天前的索引,且保留大于50gb的索引,同时排除掉jty_app索引;

actions:
  1:
    action: close            
    description:  “针对金太阳索引jty_*(按小时生成),每天凌晨3点开始进行关闭,关闭40天前的索引,且保留大于50gb的索引,同时排除掉jty_app*索引”
    options:
      ignore_empty_list: True      
      continue_if_exception: True   
      disable_action: False        
    filters:                      
    - filtertype: pattern            
        kind: prefix                 
        value: jty_                  
        timestring:"%Y.%m.%d.%H"    
        exclude: False
    - filtertype: pattern            
        kind: prefix                 
        value: jty_app                  
        exclude: True                   
    - filtertype: age                
        source: creation_date         
        direction: older              
        unit: hours                  
        unit_count: 40*24               
    - filtertype: space            
        disk_space: 50            
        threshold_behavior: more_than  
        reverse: True                

#定时任务          
0 3 * * * /usr/bin/curator –config  /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/jtyclose.yml

3.针对君泓索引jh_*(按天生成),每天22点开始进行索引分片合并,将小于1gb的索引的分片数量调整为1个分片;

actions:
  1:
    action: forcemerge
    description: "针对君泓索引jh_*(按天生成),每天22点开始进行索引分片合并,将小于1gb的索引的分片数量调整为1个分片"
    options:
      max_num_segments: 1
      continue_if_exception: True
      disable_action: False
    filters:
    - filtertype: pattern
        kind: prefix
        value: jh_
        timestring:"%Y.%m.%d"
    - filtertype: age
        source: creation_date
        direction: older
        unit: days
        unit_count: 1
    - filtertype: space
        disk_space: 1
        threshold_behavir: less_than
    - filtertype: forcemerged
        max_num_segments: 1

#定时任务          
0 22 * * * /usr/bin/curator –config  /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/jhmerger.yml

4.针对tomcat索引tomcat_*(按小时生成),每天21点开始自动创建未来1天的索引;

actions:
  1:
    action: create_index
    description: "针对tomcat索引tomcat_*(按小时生成),每天21点开始自动创建未来1天的索引"
    options:
      name: '<tomcat_{now/H+1d}>'
      extra_settings:
        settings:
          number_of_shards: 24
          number_of_replicas: 0
      disable_action: False
      continue_if_exception: True
      ignore_empty_list: True
    - filtertype: period
      period_type: relative
      source: name
      range_from: -1
      range_to: -1
      timestring: '%Y.%m.%d.%H'
      unit: hours
      
#定时任务          
0 21 * * * /usr/bin/curator –config  /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/tomcatcreate.yml

5.针对nginx索引(nginx_jty_,nginx_jty48_,nginx_jty48_log_),代表每天自动生成时间戳,需要使用一个action动作完成以上3种索引的关闭动作,自动关闭10天前的以上索引;

actions:
  1:
    action: close             
    description:  “针对nginx索引(nginx_jty_*,nginx_jty48_*,nginx_jty48_log_*),*代表每天自动生成时间戳,需要使用一个action动作完成以上3种索引的关闭动作,自动关闭10天前的以上索引”   
    options:
      ignore_empty_list: True      
      continue_if_exception: True   
      disable_action: False        
    filters:                      
    - filtertype: pattern            
        kind: prefix                 
        value: nginx_jty48_log_               
        timestring:"*"
    - filtertype: pattern            
        kind: prefix                 
        value: nginx_jty48_                
        timestring:"*"
    - filtertype: pattern            
        kind: prefix                 
        value: nginx_jty_                  
        timestring:"*"        
    - filtertype: age                
        source: creation_date         
        direction: older              
        unit: days                   
        unit_count: 10               

#定时任务          
59 23 * * * /usr/bin/curator –config  /opt/elasticsearch-curator/curator.yml /opt/elasticsearch/config/nginxclose.yml
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容