我正在尝试配置 logstash 来管理我的各种日志源,其中之一是 Mongrel2。Mongrel2 使用的格式是tnetstring
,其中日志消息将采用以下形式
86:9:localhost,12:192.168.33.1,5:57089#10:1411396297#3:GET,1:/,8:HTTP/1.1,3:200#6:145978#]
我想编写自己的 grok 模式来从上述格式中提取某些字段。我在尝试提取主机时收到了有关此问题的帮助。所以如果在grok-patterns
我定义
M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)
然后在logstash conf中指定
filter {
grok {
match => [ "message", "%{M2HOST}" ]
}
}
它按预期工作。我现在遇到的问题是我想指定多个模式,例如 M2HOST、M2ADDR 等。我尝试在同一个 grok-patterns 文件中定义其他模式
M2HOST ^(?:[^:]*\:){2}(?<hostname>[^,]*)
M2ADDR ^(?:[^:]*\:){3}(?<address>[^,]*)
并更改logstash conf
filter {
grok {
match => [ "message", "%{M2HOST} %{M2ADDR}" ]
}
}
但现在我得到了错误_grokparsefailure
。