我试着把我的路径的一部分给予我的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“\”
有人能指出我哪里做错了吗?
1条答案
按热度按时间ni65a41a1#
我从这个问题How to get parts of Filebeat source filename in Logstash中找到了适合我的grok匹配
我做的是这样的
match => { "[log][file][path]" => ".*(\\|\/)(?<myIndex>.*)(\\|\/).*.*(\\|\/).*(\\|\/).*(\\|\/).*(\\|\/)" }
它的工作,但我更喜欢一个更优雅的正则表达式,如果有人可以帮助。