作者:来自 Elastic Stef Nestor
大家好!在之前的一篇博客中,我们概述了常见的索引生命周期管理 (index lifecycle management - ILM) 问题及其解决方案。此后,我们已将这些常见场景添加到我们的 Elasticsearch 文档中,并附带示例演示视频。在这里,我们将扩展 ILM 历史索引(ILM history index),以演示如何在故障排除期间使用它,并在需要干预时设置主动警报。
监控 ILM Elastic Health Elastic Cloud 支持 故障排除
ILM 原理
ILM 通过逻辑和时间延迟自动执行常见的管理任务,例如将数据轮换到新索引、通过硬件温度老化索引以及在保留期后删除数据。
为了保护数据完整性,ILM 按顺序执行这些请求的阶段及其操作。与其他一些行业工具不同,这意味着如果索引在某个步骤上出现问题,ILM 将不会继续执行索引的后续步骤,直到当前问题得到解决。这可以避免高级操作的中间状态,并且具有保护作用,例如,当索引的 ILM 策略被标记为在删除之前等待快照时,以确保在备份中捕获数据以确保合规性。
历史索引
ILM 历史索引 ilm-history-* 存储索引的 ILM explain 数据的历史摘要。它在设置 indices.lifecycle.history_index_enabled 下默认启用。你可以通过针对此索引模式 data view 在 Kibana 中查看此数据。例如,在 Create data view下,我们将定位索引模式 ilm-history-7。
创建后,我们可以在 Discover 下查看数据。我更喜欢通过切换表列来浏览创建的索引模式:[index、policy、state.phase、state.action、state.step、success、error_details]。
此日志在排查索引在执行其步骤时遇到问题的原因时非常有用,例如,滚动更新遇到错误,setting [index.lifecycle.rollover_alias] for index [x] is empty or not defined. 。
这也有助于检查索引是否在特定子操作上停留的时间比预期的要长。例如,迁移持续时间延长可能表示集群或网络压力。或者,等待快照的时间延长可能表示存储库健康问题。
类似的 ILM 信息记录在 Elasticsearch 集群日志中,但格式不同。两者对于故障排除同样有效。我发现出于合规性原因,用户更喜欢保留比集群日志更长的 ILM 历史记录。让我们展示一下相似之处!在 Elastic Cloud 下,我启用了日志和指标,以便可以针对 elastic-cloud-logs-8 创建数据视图。
然后,在 Discover 中,我可以过滤到 log.logger:"org.elasticsearch.xpack.ilm.IndexLifecycleRunner"。
你会注意到 10 分钟的周期,这是由 ILM 的设置 indices.lifecycle.poll_interval 值来决定的。
检查问题
我们建议使用 v8.7 中引入的 Health API 来检查活动的 ILM 问题。这会针对错误和停滞步骤进行报告,因此比滚动浏览 ILM explain 更为全面。Dev Tools 会显示健康结果:
Elastic Cloud 将此信息加载到其部署健康状态中,该部署健康状态报告:
以下是来自 Dev Tools 的不健康报告的示例:
Elastic Cloud 相应地报告:
监控错误
我们建议设置监控 Kibana 规则,以便在需要干预以纠正索引的 ILM 错误时收到通知,这样它就可以继续其生命周期。此设置位于 Stack Monitoring 及其其他性能警报之上。
例如,在 "Create Rule " 下,我们将选择 "Stack Alerts ",然后选择类型 Elasticsearch query。
我们将规则命名为 "ILM erring"。向下滚动,我们将目标数据视图 ilm-history-7 包含 Lucene 查询错误和 log.logger:"org.elasticsearch.xpack.ilm.IndexLifecycleRunner"。在我们的示例中,我们希望收到任何匹配的通知,因此我们将阈值设置为 "is above 1."。
接下来,我们将启用通知 action。在我们的示例中,我们将使用 Elastic Cloud 的内置 SMTP 服务器来发送值班分配电子邮件。
就是这样!现在,当需要使用 ILM 历史索引进行干预以保持 ILM 健康时,示例团队将收到通知。当你的团队收到通知时,他们可能会对我们关于检查 ILM 健康状况的演示视频以及我们常见的设置问题和解决方案感兴趣。让我们所有人都安静地待命吧!
本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。
原文:Monitoring Elasticsearch index lifecycle management with the history index | Elastic Blog