我尝试使用logstash从log4j消息中提取数据。 消息看起来像这样:
Method findAll - Start by : bokc
我想提取方法名称:“findAll”和用户“bokc”。
我该怎么做?
我使用logstash 1.5.2,我的配置是:
input {
log4j {
mode => "server"
type => "log4j-artemis"
port => 4560
}
}
filter {
multiline {
type => "log4j-artemis"
pattern => "^\\s"
what => "previous"
}
mutate {
add_field => [ "source_ip", "%{host}" ]
}
}
答案 0 :(得分:0)
使用grok filter:
filter {
grok {
match => [
"message",
"^Method %{WORD:method} - Start by : %{USER:user}"
]
tag_on_failure => []
}
}
这将两个单词提取到字段"方法"和"用户"。 tag_on_failure
的设置可确保不匹配的邮件不会被_grokparsefailure
标记。由于大多数消息不是假设以匹配模式,因此将它们标记为失败是没有意义的。