将文件路径从filebeat提取到logstash,然后提取到弹性索引

eoxn13cs  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(214)

我试着把我的路径的一部分给予我的ElasticSearch索引。
我的logstash配置文件如下所示(注意:配置文件可能是错误的,因为我尝试了100个不同的东西)

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
    beats {
            port => "5044"
        }
}
# The filter part of this file is commented out to indicate that it is
# optional.
filter {
  grok {
      match => ["[log][file][path]", "c:\\PL_Logs\\%{GREEDYDATA:index_name}\\%{GREEDYDATA}" ]
  }
}
#output {
# stdout { codec => rubydebug }
#}
output {
   elasticsearch {
        hosts => [ "localhost:9222" ]
        index => "%{index_name}-%{+YYYY.MM.dd}"
   }
    stdout { codec => rubydebug }
}

我的日志是这样归档的C:\Incoming_Logs\requested_part\somesubfolder_doesnt_matter\2022\03\18\2022031814.txt
我filebeat配置是这样的:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\Incoming_Logs\**\*.txt

我的问题是如何从我的路径中取出requested_part部分并将其作为索引?我尝试了许多方法,例如使用[](%[{index_name}])覆盖索引。我尝试使用“path”而不是“[log][file][path]”进行匹配。我将grok条件更改为“c:\PL_Logs%{GREEDYDATA:index_name}**”,还尝试使用“/”而不是double“\”
有人能指出我哪里做错了吗?

ni65a41a

ni65a41a1#

我从这个问题How to get parts of Filebeat source filename in Logstash中找到了适合我的grok匹配
我做的是这样的match => { "[log][file][path]" => ".*(\\|\/)(?<myIndex>.*)(\\|\/).*.*(\\|\/).*(\\|\/).*(\\|\/).*(\\|\/)" }
它的工作,但我更喜欢一个更优雅的正则表达式,如果有人可以帮助。

相关问题