You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何Azure VM上的Elasticsearch索引每周日06:00 UTC被删除及如何阻止?

解决Azure VM上Elasticsearch每周自动删除索引的问题

别着急,咱们一步步拆解这个定时删除的问题——除了索引生命周期策略(ILM),还有好几个地方可能触发这种操作,我帮你梳理排查方向:

1. 先查虚拟机系统层面的定时任务

因为是在Azure虚拟机上部署的,首先得排除系统级的定时脚本在搞事情:

  • 登录VM终端,运行 crontab -l(Linux系统),看看当前用户的定时任务里有没有调用curl或者Elasticsearch CLI删除索引的命令,时间是不是刚好对应每周日06:00 UTC。
  • 还要检查系统级定时任务:比如/etc/crontab文件、/etc/cron.d/目录下的配置,以及anacron相关设置,别漏了系统层面的定时任务。

2. 检查Elasticsearch的Watcher定时任务

ILM之外,ES的Watcher模块也能创建定时执行的操作,这是很多人容易忽略的点:

  • 登录Kibana,进入Stack Management > Watcher,看看有没有创建的Watcher任务,触发时间是每周日06:00 UTC,且动作包含删除索引的逻辑。
  • 也可以直接用ES API查询所有Watcher:
    curl -X GET "http://<你的ES地址>:9200/_watcher/watch/_all?pretty"
    
    看看返回结果里有没有匹配时间和操作的任务。

3. 排查日志采集工具的自动清理配置

你提到把应用日志发送到ES,那日志采集工具(比如Filebeat、Logstash)可能自带了旧索引清理功能:

  • 检查Filebeat的cleanup相关配置,或者Logstash的filter/output插件里有没有写定时删除索引的逻辑。
  • 另外,如果你用过Elasticsearch Curator(现在是ES的官方索引管理工具),也要看看有没有配置定时删除索引的Job,时间是不是刚好对上。

4. 排除Azure平台的自动化操作

虽然概率不高,但也要确认下Azure层面的自动化任务:

  • 登录Azure门户,查看虚拟机所在的资源组,有没有配置Azure Automation Runbook或者Logic Apps,定时执行删除ES索引的操作。
  • 顺便检查虚拟机的备份策略,有没有可能备份流程中误删了索引(这种情况少见,但可以排除)。

5. 临时应急:给索引加删除保护

如果暂时找不到根源,可以先给关键索引设置删除保护,防止被意外删除:

  • 用ES API设置索引的index.blocks.delete属性为true
    curl -X PUT "http://<你的ES地址>:9200/<目标索引名>/_settings?pretty" -H 'Content-Type: application/json' -d'
    {
      "index.blocks.delete": true
    }
    '
    
    这样就无法通过API删除该索引,直到你手动解除这个设置。不过这是临时方案,还是得找到根源才能彻底解决。

6. 查看ES审计日志定位操作来源

如果你的ES开启了审计日志,可以直接从日志里找删除操作的发起者:

  • 去ES的日志目录(默认是/var/log/elasticsearch/)查看audit.log,搜索delete相关的操作记录,看看时间是否对应每周日06:00 UTC,同时能看到请求的来源IP、操作用户等信息,直接定位是谁在删索引。

按照这个顺序排查,应该能找到问题所在。如果排查中遇到具体的报错或者奇怪的配置,可以贴出来再细化分析。

内容的提问来源于stack exchange,提问作者Mir Sabbir

火山引擎 最新活动