You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash如何配置按日志文件日期创建对应Elasticsearch索引?

问题根因

你当前配置中的%{+YYYY-MM-dd}取的是Logstash处理日志事件的服务器当前时间,和日志文件本身的生成日期无关,所以所有日志都会写入处理当日对应的索引,自然出现所有内容进同一个索引的问题。

配置调整方案

需要分两段修改Logstash配置:

1. 新增filter段提取文件名中的日期

Logstash的file输入插件会默认把日志文件的全路径存在path字段中,我们通过grok规则从该字段提取文件名里的日期,存储到自定义字段log_date中:

filter {
  grok {
    # 如果你的path是带前缀的全路径,把匹配规则改成 ".*adminPortal-%{DATA:log_date}\.\d\.log" 即可
    match => { "path" => "adminPortal-%{DATA:log_date}\.\d\.log" }
  }
  # 以下是可选配置,用于校验提取到的日期格式是否合法
  date {
    match => [ "log_date", "yyyy-MM-dd" ]
    tag_on_failure => [ "invalid_log_date" ]
  }
}

2. 修改output段的索引命名规则

把索引名中的时间引用替换为我们上一步提取到的log_date字段:

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "admin-%{log_date}"
  }
}

修改完成后重启Logstash即可生效,不同日期的日志文件会自动写入对应日期的索引。

内容的提问来源于stack exchange,提问作者Ali farahzadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:45:04