這么簡(jiǎn)單的ES索引生命周期管理,不了解一下嗎~

混沌武士

對(duì)于日志指標(biāo)(metric)類時(shí)序性強(qiáng)的ES索引潦匈,因?yàn)閿?shù)據(jù)量大阱高,并且寫入和查詢大多都是近期時(shí)間內(nèi)的數(shù)據(jù)。我們可以采用hot-warm-cold架構(gòu)將索引數(shù)據(jù)切分成hot/warm/cold的索引茬缩。hot索引負(fù)責(zé)最新數(shù)據(jù)的讀寫赤惊,可使用內(nèi)存存儲(chǔ);warm索引負(fù)責(zé)較舊數(shù)據(jù)的讀取凰锡,可使用內(nèi)存或SSD存儲(chǔ)未舟;cold索引很少被讀取,可使用大容量磁盤存儲(chǔ)掂为。隨著時(shí)間的推移裕膀,數(shù)據(jù)不斷從hot索引->warm索引->cold索引遷移。針對(duì)不同階段的索引我們還可以調(diào)整索引的主分片數(shù)勇哗,副本數(shù)昼扛,單分片的segment數(shù)等等,更好的利用機(jī)器資源。

這一切ES都幫我們實(shí)現(xiàn)了抄谐。ES從6.7版本推出了索引生命周期管理(Index Lifecycle Management 渺鹦,簡(jiǎn)稱ILM)機(jī)制,能幫我們自動(dòng)管理一個(gè)索引策略(Policy)下索引集群的生命周期蛹含。索引策略將一個(gè)索引的生命周期定義為四個(gè)階段

  • Hot:索引可寫入毅厚,也可查詢。
  • Warm:索引不可寫入浦箱,但可查詢吸耿。
  • Cold:索引不可寫入,但很少被查詢酷窥,查詢的慢點(diǎn)也可接受咽安。
  • Delete:索引可被安全的刪除。

索引策略控制這一個(gè)索引的生命從Hot -> Warm -> Cold -> Delete 階段蓬推,每個(gè)階段都可以配置不同的轉(zhuǎn)化行為(Action)板乙。下面我們看下幾個(gè)常用的Action:

  • Rollover
    當(dāng)寫入索引達(dá)到了一定的大小,文檔數(shù)量或創(chuàng)建時(shí)間時(shí)拳氢,Rollover可創(chuàng)建一個(gè)新的寫入索引,將舊的寫入索引的別名去掉蛋铆,并把別名賦給新的寫入索引馋评。所以便可以通過切換別名控制寫入的索引是誰。它可用于Hot階段刺啦。
  • Shrink
    減少一個(gè)索引的主分片數(shù)留特,可用于Warm階段。需要注意的是當(dāng)shink完成后索引名會(huì)由原來的<origin-index-name>變?yōu)?code>shrink-<origin-index-name>.
  • Force merge
    可觸發(fā)一個(gè)索引分片的segment merge玛瘸,同時(shí)釋放掉被刪除文檔的占用空間蜕青。用于Warm階段。
  • Allocate
    可指定一個(gè)索引的副本數(shù)糊渊,用于warm, cold階段右核。

好了現(xiàn)在我們知道一個(gè)索引策略是由配置不同的階段和每個(gè)階段對(duì)應(yīng)的Action組成,那怎么設(shè)置一個(gè)索引的索引策略呢渺绒?把冰箱裝進(jìn)大象分為三部:

設(shè)置一個(gè)索引的索引策略

1.創(chuàng)建一個(gè)索引策略

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
//rollover前距離索引的創(chuàng)建時(shí)間最大為7天
            "max_age": "7d",
//rollover前索引的最大大小不超過50G
            "max_size": "50G",
//rollover前索引的最大文檔數(shù)不超過1個(gè)(測(cè)試用)
            "max_docs": 1,
          }
        }
      },
      "warm": {
//rollover之后進(jìn)入warm階段的時(shí)間不小于30天
        "min_age": "30d",
        "actions": {
          "forcemerge": {
//強(qiáng)制分片merge到segment為1
            "max_num_segments": 1
          },
          "shrink": {
//收縮分片數(shù)為1
            "number_of_shards": 1
          },
          "allocate": {
//副本數(shù)為2
            "number_of_replicas": 2
          }
        }
      },
      "cold": {
//rollover之后進(jìn)入cold階段的時(shí)間不小于60天
        "min_age": "60d",
        "actions": {
          "allocate": {
            "require": {
//分配到cold 節(jié)點(diǎn)贺喝,ES可根據(jù)機(jī)器資源配置不同類型的節(jié)點(diǎn)
              "type": "cold"
            }
          }
        }
      },
      "delete": {
//rollover之后進(jìn)入cold階段的時(shí)間不小于60天
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

2.創(chuàng)建一個(gè)索引模版,指定使用的索引策略

PUT _template/my_template
{
//模版匹配的索引名以"index-"開頭
  "index_patterns": ["myindex-*"],                 
  "settings": {
//索引分片數(shù)為2
    "number_of_shards":2 ,
//索引副本數(shù)為1 
    "number_of_replicas": 1,
//索引使用的索引策略為my_policy
    "index.lifecycle.name": "full_policy",    
//索引rollover后切換的索引別名為  test-alias
    "index.lifecycle.rollover_alias": "myindex"    
  }
}

3.創(chuàng)建一個(gè)符合上述索引模版的索引

PUT index-000001
{
  "aliases": {
    "myindex":{ //別名為 myindex
//允許索引被寫入數(shù)據(jù)
      "is_write_index": true 
    }
  }
}

當(dāng)發(fā)生rollover時(shí)宗兼,老索引的別名myindex將被去掉躏鱼,新創(chuàng)建的索引別名為myidex,同時(shí)索引名自動(dòng)在索引名上自增殷绍,變?yōu)閙yindex-0002染苛。此外對(duì)應(yīng)的配置信息我已注釋上了,大家慢慢看吧主到。

小貼士:部署ES集群節(jié)點(diǎn)的版本要統(tǒng)一茶行,不然ILM可能出現(xiàn)意想不到的錯(cuò)誤躯概。

這里為啥要用索引模版來關(guān)聯(lián)索引和索引策略呢?因?yàn)槿绻趧?chuàng)建索引時(shí)不通過模版指定索引策略拢军,當(dāng)發(fā)生rollover時(shí)楞陷,新的索引并不會(huì)繼承原來索引的索引策略。

小伙伴將嘗試了之后發(fā)現(xiàn)不對(duì)啊茉唉,我插入里兩條數(shù)據(jù)并沒有自動(dòng)rollover啊固蛾。不慌,小姐姐是不會(huì)騙人的度陆。ES檢測(cè)索引的索引策略是否該生效的時(shí)間默認(rèn)為10min艾凯,可通過修改以下配置:

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "3s" 
  }
}

3秒中檢測(cè)一下是否可執(zhí)行索引策略,應(yīng)該夠了懂傀。

Logstash使用ILM

問題來了趾诗,當(dāng)我們使用ELK搭建索引日志系統(tǒng)時(shí),咋讓Logstash和ES的ILM無縫連接呢蹬蚁?
Logstash的Elasticsearch output plugin插件自從9.3.1版本之后就支持ILM了恃泪,我們只需要在Logstash的配置文件中簡(jiǎn)單配置下就可以全部托管給ES ILM了。

 output {
      elasticsearch {
//發(fā)生rollover時(shí)的寫入索引的別名
        ilm_rollover_alias => "myindex"
//將會(huì)附在ilm_rollover_alias的值后面共同構(gòu)成索引名犀斋,myindex-00001
        ilm_pattern => "00001"
//使用的索引策略
        ilm_policy => "my_policy"
//使用的索引模版名稱
        template_name => "my_template"
      }
    }

如果我們一直愉快的使用一個(gè)索引策略贝乎,當(dāng)然很好。但是總有意外發(fā)生叽粹。览效。索引策略執(zhí)行失敗了怎么辦,中途想改變索引策略換車怎么辦虫几?這都是問題锤灿。

索引策略執(zhí)行失敗

首先我們先看一下失敗的原因是什么,可以用API查看一下:

GET /myindex/_ilm/explain

返回信息中step_info就是失敗原因辆脸,假設(shè)是索引策略設(shè)置的有問題但校,比如說Shrink的主分片數(shù)設(shè)置的比模版的都大,我們只需要更新索引策略每强,解決問題始腾。然后在重試讓ILM繼續(xù)執(zhí)行下一步就好。

POST /myindex/_ilm/retry

索引策略的更新

我們可使用以下API更新索引策略空执,

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "25GB"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

查看索引策略發(fā)現(xiàn)浪箭,每次更新索引策略的版本都會(huì)增加。

對(duì)于還沒有開始創(chuàng)建的索引辨绊,更新索引策略顯然能夠生效奶栖。對(duì)于已經(jīng)存在的策略生效的索引,當(dāng)前階段是不會(huì)按照最新版本的策略執(zhí)行的,必須等到變?yōu)橄乱粋€(gè)階段了宣鄙,才會(huì)按照最新版本的策略執(zhí)行袍镀。

如果想切換索引使用的索引策略,可以使用API進(jìn)行修改:

PUT myindex/_settings
{
  "lifecycle.name": "my_other_policy"
}

此外冻晤,在老版本使用ILM機(jī)制時(shí)苇羡,可能還涉及到將原來的索引納入索引策略管理中,將原來ES的curator索引滾動(dòng)方案升級(jí)到ILM等問題鼻弧。本文主要結(jié)合官方文檔介紹了ILM的開箱使用设江,Logstash使用ILM,索引策略執(zhí)行失敗和索引策略的更新的使用攘轩。更多問題還請(qǐng)閱讀官方文檔叉存,獲得更好的體驗(yàn)。

感謝您的閱讀度帮,我是Monica23334 || Monica2333 歼捏。立下每周寫一篇原創(chuàng)文章flag的小姐姐,關(guān)注我并期待打臉吧~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笨篷,一起剝皮案震驚了整個(gè)濱河市瞳秽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌率翅,老刑警劉巖寂诱,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異安聘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓢棒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門浴韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脯宿,你說我怎么就攤上這事念颈。” “怎么了连霉?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵榴芳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我跺撼,道長(zhǎng)窟感,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任歉井,我火速辦了婚禮柿祈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己躏嚎,他們只是感情好蜜自,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卢佣,像睡著了一般重荠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虚茶,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天戈鲁,我揣著相機(jī)與錄音,去河邊找鬼媳危。 笑死荞彼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的待笑。 我是一名探鬼主播鸣皂,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼暮蹂!你這毒婦竟也來了寞缝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤仰泻,失蹤者是張志新(化名)和其女友劉穎荆陆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體集侯,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡被啼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棠枉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浓体。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辈讶,靈堂內(nèi)的尸體忽然破棺而出命浴,到底是詐尸還是另有隱情,我是刑警寧澤贱除,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布生闲,位于F島的核電站,受9級(jí)特大地震影響月幌,放射性物質(zhì)發(fā)生泄漏碍讯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一扯躺、第九天 我趴在偏房一處隱蔽的房頂上張望冲茸。 院中可真熱鬧屯阀,春花似錦、人聲如沸轴术。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗栽。三九已至盖袭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彼宠,已是汗流浹背鳄虱。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凭峡,地道東北人拙已。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像摧冀,于是被迫代替她去往敵國和親倍踪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 ES最早在6.8版本在X-pack套件中引入了索引生命周期管理功能索昂。在此之前建车,索引的生命周期管理往往是利用定...
    餓虎嗷嗚閱讀 3,015評(píng)論 0 1
  • 1.什么是索引周期管理 定義:以時(shí)間為導(dǎo)向?qū)?shù)據(jù)進(jìn)行應(yīng)用策略操作。索引管理流程:熱數(shù)據(jù)->暖數(shù)據(jù)->冷數(shù)據(jù)->數(shù)據(jù)...
    康小為6840閱讀 6,385評(píng)論 0 2
  • 上一篇有提到椒惨,ILM主要是對(duì)大量時(shí)序數(shù)據(jù)處理而設(shè)計(jì)的缤至,那么它的每個(gè)階段分別是什么用途,怎么去操作康谆,本文將重點(diǎn)說明(...
    郭彥超閱讀 6,548評(píng)論 0 0
  • Elastic+logstash+head簡(jiǎn)單介紹 一. 概述 ElasticSearch是一個(gè)基于Lucene的...
    柒月失凄閱讀 4,272評(píng)論 0 4
  • 這將是es索引管理的第三篇文章了领斥,本篇將總結(jié)策略構(gòu)建的順序,方便大家在項(xiàng)目中使用沃暗;在開始本篇內(nèi)容之前戒突,我補(bǔ)發(fā)一個(gè)p...
    郭彥超閱讀 2,356評(píng)論 0 1