Logstash:如何将文件名添加为字段?
我正在使用Logstash+Elasticsearch+Kibana对Tomcat日志文件进行概述 对于每个日志条目,我需要知道它来自的文件名。我想将其添加为一个字段。有办法吗? 我在谷歌上搜索了一下,只找到了答案,但答案不再是最新的 到目前为止,我看到的唯一解决方案是使用不同的“添加字段”为每个可能的文件名指定单独的配置,如下所示: 但是,每次有新的文件名时,我都需要重新配置logstash。Logstash:如何将文件名添加为字段?,logstash,Logstash,我正在使用Logstash+Elasticsearch+Kibana对Tomcat日志文件进行概述 对于每个日志条目,我需要知道它来自的文件名。我想将其添加为一个字段。有办法吗? 我在谷歌上搜索了一下,只找到了答案,但答案不再是最新的 到目前为止,我看到的唯一解决方案是使用不同的“添加字段”为每个可能的文件名指定单独的配置,如下所示: 但是,每次有新的文件名时,我都需要重新配置logstash。 有更好的主意吗?嗨,我添加了一个grok过滤器来实现这一点。我只想要文件名而不是路径,但是你可以根据
有更好的主意吗?嗨,我添加了一个grok过滤器来实现这一点。我只想要文件名而不是路径,但是你可以根据需要更改它
filter {
grok {
match => ["path","%{GREEDYDATA}/%{GREEDYDATA:filename}\.log"]
}
}
如果要在一个事件中组合消息和文件名:
filter {
grok {
match => {
message => "ERROR (?<function>[\S]*)"
}
}
grok {
match => {
path => "%{GREEDYDATA}/%{GREEDYDATA:filename}\.log"
}
}}
感谢您的回答:)这不会在日志文件内容中查找文件名吗?不,通常您会在message字段上使用grok,但我使用path字段,这是logstash自动添加的一个特殊字段。非常感谢:)您的解决方案有效-在“{GREEDYDATA:filename}”之前添加百分号之后。请更新您的答案,我将接受它作为解决方案。我只是不知道“路径”字段的存在。很好的一个,去掉了一个字符,修复了它。@JettroCoenradie:And
grok
将被添加到过滤器下,但是如果我们想在文件中输入它自己呢?
filter {
grok {
match => {
message => "ERROR (?<function>[\S]*)"
}
}
grok {
match => {
path => "%{GREEDYDATA}/%{GREEDYDATA:filename}\.log"
}
}}
"_index": "logstash-2016.08.03",
"_type": "logs",
"_id": "AVZRyEI49-A6kyBCq6Yt",
"_score": 1,
"_source": {
"message": "27/07/16 12:16:18,321 ERROR blaaaaaaaaa.internal.com",
"@version": "1",
"@timestamp": "2016-08-03T19:01:33.083Z",
"path": "/home/admin/mylog.log",
"host": "my-virtual-machine",
"function": "blaaaaaaaaa.internal.com",
"filename": "mylog"
}