我在用着Grok http://logstash.net/docs/1.4.1/filters/grok& Logstash 将访问日志从 Nginx 发送到 Elastic search。我正在向 Logstash 提供所有访问日志(使用通配符,效果很好),并且我想获取文件名(准确地说,是其中的一部分)并将其用作字段。
我的配置如下:
input {
file {
path => "/var/log/nginx/*.access.log"
type => "nginx_access"
}
}
filter {
if [type] == "nginx_access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
match => { "path" => "%{GREEDYDATA}/%{GREEDYDATA:app}.access.log" }
add_field => { "app" => "%{app}" }
}
}
}
output{
# whatever
}
但这似乎不起作用:app
字段已添加,但值为%{app}
(未更换)。
我尝试了不同的方法,但没有成功。我可能错过了一些东西......有任何想法吗 ?
多谢
好的,找到了。grok
默认情况下在匹配时中断。所以第一场比赛很好,它会跳过第二场。
我是这样解决的:
filter {
if [type] == "nginx_access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
match => { "path" => "%{GREEDYDATA}/%{GREEDYDATA:app}.access.log" }
break_on_match => false
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)