Kibana SLM策略配置异常:快照保留5天却包含一年索引
问题原因与解决方案
核心误解
你配置的retention.expire_after: "5d"是用来控制快照自身的保留时长——也就是快照创建完成后,会在5天后被自动删除,但它完全不会影响快照中包含哪些索引。
当前你的config.indices: "index-*"会匹配所有以index-开头的索引,所以每次执行快照时,自然会把过去一年里所有符合这个规则的索引都包含进去,这就是问题的根源。
正确配置方法
要让快照只包含最近5天的索引,需要利用Elasticsearch的日期数学表达式,精准匹配索引名中的日期部分。假设你的索引命名格式是index-YYYY.MM.DD(例如index-2024.05.20),修改SLM策略的config部分如下:
PUT _slm/policy/new-snapshot-1 { "schedule": "0 40 21 * * ?", "name": "<index-{now/d}>", "repository": "snap-s3", "config": { "indices": "index-{now/d-5d}*", "include_global_state": true, "ignore_unavailable": true }, "retention": { "expire_after": "5d" } }
index-{now/d-5d}*:表示匹配索引名以当前日期减去5天开头的所有索引(比如今天是2024.05.20,就会匹配index-2024.05.15*到index-2024.05.20*的所有索引)。ignore_unavailable: true:避免因为某一天的索引不存在而导致整个快照任务失败。
如果你的索引命名是其他日期格式(比如index-20240520),只需调整日期数学表达式的格式部分即可,例如:
"indices": "index-{now/d-5d||yyyyMMdd}*"
额外说明
如果你的索引名没有包含日期信息,SLM无法直接通过索引创建时间来筛选要快照的索引,这种情况下建议调整索引命名规则,加入日期后缀,这样才能用上述方法实现按时间范围快照索引。
内容的提问来源于stack exchange,提问作者dominbdg
相关产品推荐
相关产品推荐

