es中索引生命周期策略和索引生命周期的关系index.lifecycle.rollover_alias is empty or not defined
主要是下面的两个博客:
转载自博客:https://www.jianshu.com/p/9805b5173876
elk 索引生命周期报错 illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [xxx]...
背景:springboot 集成elk,每天生成一个索引 格式 {项目}-{环境}-{日期}
表现:为了节省空间,自动删除30天之前的日志,想应用elk 的索引生命周期,但是出现下面的异常illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [xxx] is empty or not defined
原因:之前的索引生命周期在hot 阶段 启用了滚动更新,必须设置别名才行
解决方案:
- 关闭滚动更新(这个是干啥用的?开启后可以设置索引超过多少g,或超过多少天,自动新创建一个索引,我们每天创建一个索引,所以用不到这个)
-
把原来已经应用策略的索引,先删除策略,再重新添加上策略,否则老索引还是无法正常自动删除
【Kibana】索引生命周期策略报错 index.lifecycle.rollover_alias does not po
-
一、背景
在使用ELK进行日志收集分析时,我们经常会将每天的日志生成一个索引,类似somta-log-2021-02-25,在以前的版本是需要我们写脚本或者服务来删除不想要的索引的,但是在新的ES里面已经帮我们实现了,我们可以通过创建一个索引生命周期策略来将我们的索引进行合并,删除等操作,是非常方便的但是在ES 7.7.1上配置了一个生命周期索引,确出现了如下错误
错误1:
illegal_argument_exception: index.lifecycle.rollover_alias [somta-logs] does not point to index [somta-log-2021.02.23]
错误2:
illegal_argument_exception: rollover target [somta-logs] does not point to a write index
错误3:
illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [somta-log-2021.02.23] is empty or not defined
二、问题原因
先来看看我报错时,我的详细设置1、索引模板
PUT _template/logs_template
{
"index_patterns": ["somta-log-*"], # 匹配所有以logs开头的索引
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "log-30-days", # 绑定生命周期策略
"index.lifecycle.rollover_alias": "somta-log" # 别名
}
}
2、生命周期索引
其实出现该问题的主要原因是“启用滚动更新”造成的,因为索引生命周期策略中滚动更新时需要对索引设置别名的,并且每个索引别名要不一样,但是我们是按天分割索引的,有没办法自动设置索引,所以这种方式明显不适合,启用滚动更新的索引格式一般为 apm-7.7.1-profile-000027三、解决办法
我只需要禁用“启用滚动更新”即可,然后将修改后的索引生命周期策略重新添加到索引模板上即可注意:
1.使用新的索引模板进行测试的时候,需要新建一个模板对应的索引,否则在此处的下拉框中将不会出现该索引模板
2.如果原索引模板中已经存在索引生命周期策略,覆盖后新生成的索引会使用新覆盖的策略,但是已经存在的索引仍然是就策略,不会触发删除,需要手动删除
作者:明天的地平线 https://www.bilibili.com/read/cv10124335/ 出处:bilibili
- 结论:索引生命周期和索引绑定,如果启动了滚动索引就是要索引的别名
-
posted on 2023-09-07 13:44 luzhouxiaoshuai 阅读(274) 评论(0) 编辑 收藏 举报