问题现象
日志集群使用索引模板和策略不合理,每天一类索引创建一个模板,然后滚动生成索引,索引数量数千个,存在大量空索引,由于业务对写入逻辑不清晰,反馈空索引是由于当天没数据产生,无法做出有效优化,故只能从ES层面做分析和优化。
问题分析
分析索引关联的ILM生命周期策略,发现明明配置了10天删除,为什么9月12号了,8月27的索引还都在呢?
进一步分析策略滚动条件,发现配置了一个最大存在时间是1天,这个参数导致每天会滚动生成一个8月27号命名的索引,但是过了这天以后滚动生成的索引都不会再写数据,这就是前面看到的产生大量空索引的原因,而且以后会一直滚动生成无用的08-27的索引。
建议和优化
这个问题是由于对模板和ILM生命周期策略使用不当导致,背离了模板的初衷,导致索引混乱。日常使用中建议同一类索引使用一个模板即可,基于模板和策略滚动生成新索引。
对于此问题现象,业务反馈改造难度大,我们通过ES层面如何去做优化?其实只要搞清楚业务的需求和ILM滚动策略的参数含义,就很好解决了,业务为了每天滚动生成新一天的索引,添加了最大存在时间1这个参数,但是业务本身每天就会自己创建当天日期的新模版和新索引,这样其实我们只需要去掉最大存在时间1这个参数,便可以解决历史索引一直无效滚动的问题,业务本身会创建基于新日期的索引,这样其实业务需求都可以满足了,经验证这样也确实解决了此类问题。