Mac Docker部署Metricbeat未生成每日新索引问题咨询
排查Metricbeat ILM未生成每日索引的问题
从你提供的配置和日志来看,核心问题出在ILM策略的滚动条件和索引命名格式配置上,下面一步步拆解并解决:
1. 先抓日志里的关键线索
你的日志里明确显示当前生效的ILM策略滚动条件是:
"rollover":{"max_age":"30d","max_size":"50gb"}
这意味着只有当索引存在满30天或者达到50GB时,才会触发滚动生成新索引,完全不符合你想要的每日生成新索引的需求。另外你配置的ilm.pattern: "{now/M{yyyy.MM}}-000001"是按月的命名格式,即使滚动也只会生成月度索引,不是每日的。
2. 修复步骤
步骤1:修正Metricbeat配置文件
更新metricbeat.yml里的ILM相关配置,调整滚动策略和索引命名格式:
#-------------------------- Elasticsearch output ------------------------------ output.elasticsearch: hosts: ["localhost:9200"] ilm.enabled: true # 改为按天的命名格式,匹配你要的metricbeat-7.5.0-2020.02.02-000001样式 ilm.pattern: "{now/d{yyyy.MM.dd}}-000001" # 允许覆盖已存在的ILM策略(默认不覆盖,旧策略会一直生效) ilm.overwrite: true # 允许覆盖已存在的索引模板,确保新的命名规则生效 setup.template.overwrite: true
步骤2:更新ILM策略(两种方式可选)
方式一:通过Metricbeat自动同步
重启Metricbeat后,因为你设置了ilm.overwrite: true,它会自动更新ILM策略的滚动条件为每日(如果Metricbeat内置的策略模板是按天配置的话)。
方式二:手动通过API修改策略(更精准)
用curl发送请求直接更新Elasticsearch里的metricbeat-7.5.0策略,确保滚动条件是1天:
curl -X PUT "https://YYY.azure.elastic-cloud.com:443/_ilm/policy/metricbeat-7.5.0" -H 'Content-Type: application/json' -d' { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_age": "1d", # 改成1天触发滚动 "max_size": "50gb" # 保留大小限制,可按需调整 } } } } } }'
步骤3:手动触发滚动(可选,立即生效)
如果你不想等24小时,想要马上生成新的每日索引,可以手动触发滚动操作:
curl -X POST "https://YYY.azure.elastic-cloud.com:443/metricbeat-7.5.0/_rollover"
3. 为什么之前没生效?
- 旧的ILM策略滚动条件是30天,Metricbeat默认不会覆盖已存在的策略,所以修改配置后旧策略依然生效;
- 你的
ilm.pattern配置的是按月生成索引名,即使滚动也不会出现日期精确到天的索引; - 索引模板已存在且未被覆盖,新的命名规则无法应用到后续生成的索引。
内容的提问来源于stack exchange,提问作者DaiKeung
相关产品推荐
相关产品推荐

