【问题标题】:How to split file name in logstash?如何在logstash中拆分文件名?
【发布时间】:2021-04-18 05:38:09
【问题描述】:

我正在将 s3 存储桶中的文件注入到 logstash,我的文件名包含一些信息,我想将文件名拆分为多个字段,因此我可以将它们用作单独的字段。请帮助我,我是麋鹿的新手。

input {
 s3 {
    bucket => "***********"
    access_key_id => "***********"
    secret_access_key => "*******"
    "region" => "*********"
    
    "prefix" => "Logs"
    "interval" => "1"
    "additional_settings" => {
           "force_path_style" => true
           "follow_redirects" => false
           }
    }
}

filter {
  mutate {
    add_field => {
      "file" => "%{[@metadata][s3][key]}"              //This file name have to split
    }
   
  }
}

output {
 elasticsearch {
  hosts => ["localhost:9200"]
  index => "indexforlogstash"
     
 }
}

【问题讨论】:

  • 你能提供一个示例文件名(即使是编辑过的),只是看看我们在谈论什么样的模式
  • @Val file Logs/1232131-custombuildv12-log.txt 这是我的文件,其中 Logs 是前缀,其余是文件名,数值代表一些设备 ID,custombuildv12 代表构建 ID

标签: elasticsearch amazon-s3 logstash kibana logstash-file


【解决方案1】:

filter 部分,您可以利用dissect filter 来实现您想要的:

filter {
    ...

    dissect {
      mapping => {
        "file" => "Logs/%{deviceId}-%{buildId}-log.txt"
      }
    }
}

通过此过滤器后,您的文档将获得两个新字段,即:

  • deviceId (1232131)
  • buildId (custombuildv12)

【讨论】:

  • 谢谢你救了我
  • 太好了,很高兴它有帮助!
  • Newley 添加的字段即使在刷新后也无法搜索(堆栈管理然后索引管理)你有什么想法吗?
  • 您是否在堆栈管理 > 索引模式中刷新了索引模式?
  • 好的,实际上,我正在刷新索引管理,现在它工作正常。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多