乾貨 | Elasticsearch索引管理利器——Curator深刻詳解

一、痛點
Elasticsearch集羣管理中索引的管理很是重要。git

數據量少的時候,一個或者幾個索引就能知足問題。github

可是一旦數據量天天幾TB甚至幾十TB的增加時,索引的生命週期管理顯得尤其重要。centos

痛點1:你是否遇到過磁盤不夠,要刪除幾個月前甚至更早時間數據的狀況?安全

若是沒有基於時間建立索引,單一索引藉助delete_by_query結合時間戳,會越刪磁盤空間越緊張,以致於對本身都產生了懷疑?elasticsearch

痛點2:你是否還在經過複雜的腳本管理索引?ide

1個增量rollover動態更新腳本,
1個按期delete腳本,
1個按期force_merge腳本,
1個按期shrink腳本,
1個按期快照腳本。工具

索引多了或者集羣規模大了,腳本的維護是一筆不菲的開銷。優化

若是以上痛點,你都遇到過了。this

那麼,客官別走,本文利器curator會給你答案。url

二、curator是什麼?
乾貨 | Elasticsearch索引管理利器——Curator深刻詳解
2.1 被Elastic收編的歷史
curator最先被稱爲clearESindices.py。 它的惟一功能是刪除索引,
然後重命名:logstash_index_cleaner.py。它在logstash存儲庫下做用:過時日誌清理。

此後不久,原做者加入Elastic,它成爲了Elasticsearch Curator,
Git地址:https://github.com/elastic/curator

2.2 收編後功能強大
curator容許對索引和快照執行許多不一樣的操做,包括:

從別名添加或刪除索引(或二者!)

更改分片路由分配更改分片路由分配

關閉索引關閉索引

建立索引建立索引

刪除索引刪除索引

刪除快照刪除快照

打開被關閉的索引打開被關閉的索引

對索引執行forcemerge段合併操做對索引執行forcemerge段合併操做

reindex索引,包括來自遠程集羣的索引reindex索引,包括來自遠程集羣的索引

更改索引的每一個分片的副本數 更改索引的每一個分片的副本數

rollover索引rollover索引

生成索引的快照(備份)生成索引的快照(備份)

還原快照還原快照

三、curator 版本
不一樣於Elasticsearch甚至ELKB的版本統一規範,curator有本身的一套版本規範。

乾貨 | Elasticsearch索引管理利器——Curator深刻詳解
簡化記錄以下:
6.XES使用 curator 5;
5.XES可使用curator5 或者 curator4 ,

具體參考官網:http://t.cn/EGi2nLX

還等什麼,趕忙用起來!

四、Curator使用指南
4.1 curator安裝
curator能夠經過多種方式安裝,具體取決於您的需求。

值得注意的是,Curator只須要安裝在可訪問Elasticsearch集羣中機器上就能夠運行。 它不須要安裝在羣集中的一個節點上。

個人機器是5.X版本,使用以下操做ok。

Step1:安裝:

1pip install elasticsearch-curator

centos6/7用戶更簡潔:

1yum install elasticsearch-curator

Step 2:升級至最新版本(非必須,根據本身須要):

1pip install -U elasticsearch-curator

驗證執行成功方法1:

1curator_cli show_indices

若成功,會顯示索引信息。

4.2 curator用法講解
4.2.1 用法1:curator_cli 命令行
用法舉例:curatorcli 關閉所有一天前建立的索引名稱爲logs*開頭的索引。

1curator_cli --host 192.168.1.2 --port 9200 close --filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unitcount":1},{"filtertype":"pattern","kind":"prefix","value":"logs"}]'

好處:無需配置文件,一行命令便可成功。
壞處:不能便捷的適應複雜的操做。

4.2.2 用法2:curator命令行
用法舉例:

1curator [--config CONFIG.YML] [--dry-run] ACTION_FILE.YML

解釋:
一、CONFIG.YML是配置文件,用於配置ES集羣信息。
CONFIG.YML樣例:

1[root@localhost .curator]# cat curator.yml
2# Remember, leave a key empty if there is no value. None will be a string,
3## not a Python "NoneType"
4
5client:
6 hosts: 192.168.1.1
7 port: 9200
8 url_prefix:
9 use_ssl: False
10 certificate:
11 client_cert:
12 client_key:
13 ssl_no_validate: False
14 http_auth:
15 timeout: 30
16 master_only: False
17
18logging:
19 loglevel: INFO
20 logfile: /home/curator/logs
21 logformat: default
22 blacklist: ['elasticsearch', 'urllib3']

核心配置:

1)集羣IP;
2)安全認證信息;
3)日誌信息。

二、ACTION_FILE.YML 執行索引操做的配置信息
因爲支持的操做很是多,建議直接參考官網配置便可:

http://t.cn/EGiLwyk

http://t.cn/EGiL4EF

拿刪除歷史索引舉例:

如下命令刪除了30天前,以logs_*開頭的索引。

1[root@localhost .curator]# cat action.yml
2---
3# Remember, leave a key empty if there is no value. None will be a string,
4# not a Python "NoneType"
5#
6# Also remember that all examples have 'disable_action' set to True. If you
7# want to use this action as a template, be sure to set this to False after
8# copying it.
9actions:
10 1:
11 action: delete_indices
12 description: >-
13 Delete indices older than 20 days (based on index name), for logstash-
14 prefixed indices. Ignore the error if the filter does not result in an
15 actionable list of indices (ignore_empty_list) and exit cleanly.
16 options:
17 ignore_empty_list: True
18 disableaction: False
19 filters:
20 - filtertype: pattern
21 kind: prefix
22 value: logs

23 - filtertype: age
24 source: name
25 direction: older
26 timestring: '%Y.%m.%d'
27 unit: days
28 unit_count: 30

若是執行多個任務怎麼辦呢?

注意:actions: 後面的,依次類推:

2:執行操做
3:執行操做
4:執行操做
N:執行操做

好處:1個配置搞定10+處操做,不費勁!

4.3 curator 實踐
通過4.2的配置,實踐執行以下:

curator --config config.yml 指定路徑/action.yml

4.4 週期性執行
藉助crontab,天天零點5分執行

1$ crontab -e

加上以下的命令:

15 0 * curator --config config.yml action.yml

五、小結
切記:
curator適用於基於時間或者template其餘方式建立的索引,
不適合單一索引存儲N久歷史數據的操做的場景。

思考:
遇到通用問題,不要重複造輪子,看看官方或者別人是否已經實現了,已經有更好的方案了。

若是有,就「拿來主義」,和本身業務不一致,能夠考慮優化。

好比:相似curator,有不少公司已經進一步加工爲可視化工具,極大提升效率。
乾貨 | Elasticsearch索引管理利器——Curator深刻詳解

相關文章
相關標籤/搜索