一、es 冷热数据介绍

es查询存储数据的时候一般查询近期的数据,时间比较久的数据查询频次很低,可以把时间久的数据设置为冷数据,使其迁移到冷节点,冷节点会使用较低的CPU、内存、配置磁盘也可以使用机械盘,在保存相同数据的条件下,降低成本

二、es 冷热数据配置

前提条件:es 集群已经建立好

1、针对es的 data node 打标签

node.attr.node_type: hot|cold node.attr.是声明es的标签 node_type 是自定义字段这个写什么都行,只要和后面index 设置冷热节点保持一个值就行 修改es配置文件后重启节点 curl -XGET -u user:password http://esip:9200/_cat/nodeattrs?v&h=node,attr,value 可以在这个api下查看节点属性 也可以使用cerebro 查看 下面是两个hot节点 一个cold节点的示例 image.png

2、确认node标签打好后可以修改index的节点属性

curl -XPUT -u user:password http://esip:9200/indexname/_settings -H "Content-Type: application/json" -d ' { "index.routing.allocation.require.node_type" : "hot" }' indexname 支持正则 这里以syslogs-2022.12.09为例 image.png node_type 和上面自定义的属性保持一致,cerebro查看index的hot cold属性 "index.routing.allocation.require.node_type" : "hot" 这个意思是 必须去 node_type 为hot的节点 也是这里定义的热节点 声明这个index是hot数据后 他就会吧数据迁移到hot的标签的node节点上去。 当es 集群node 标签声明了 hot cold后 index 不打标签的话,就和正常的es集群一样 hot cold es自己随机分配分片数量

这里完成了对现有数据热冷数据打标签及对应标签index 数据分配到对应的node

如果我们的index是每日自动新建,或者想自动处理新的index 这里就要使用 index templates 对新建的index 自动打标签,使用 lifecycle Managent(生命周期管理自动对旧数据进行hot cold处理)

三、kibana 新建index 使用 Index lifecycle Managent管理

新index 模板设置 image.png 这个完成后,绑定的index 新建 就会默认自动打上hot的标签。 然后Index Lifecycle Policies 下对新建的index 处理。 对于每日自动新建的index enable rollover(滚动更新) 不能开启,否则会报错

image.png

这里可以选择warm 数据配置,warm数据分配到hot还是cold ,index新建后多长时间设置为warm,warm节点的副本数 image.png cold 配置类似,多了一个freeze(冻结)的选项 image.png index 删除时间 这里设置的是180天 image.png 配置好Index Lifecycle Policies 后需要绑定到Index Management 180day 是我这里自定义的 policies 名称 image.png 查看 纳入Index lifecycle Managent 的索引 image.png

到这里基本es冷热数据处理基本完成主要是两个部分 1、对现有数据的处理 2、对新建index的处理