我希望将两个geoip过滤器应用于一个logstash消息 - 让我们说:带有dst字段(防火墙位置)和src字段(访问源)的防火墙消息。 / p>
日志条目可能如下所示:
<190>2015 Mar 23 02:21:30 fw1 <50000> Dropped Inbound packet (Stateless ICMP) Src:87.245.196.38 Dst:154.54.27.169 Type:11 Code:0 IPP:1 Rule:-1 Interface:WAN (Internet)
过滤器在logstash.conf中定义如下:
if [message] =~ "packet" {
grok {
match => [
"message", "<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> %{WORD:activity} %{DATA:inout} \(%{DATA:msg}\) Src:%{IPV4:src} SPort:%{INT:sport} Dst:%{IPV4:dst} DPort:%{INT:dport} IPP:%{INT:ipp} Rule:%{INT:rule} Interface:%{WORD:iface}",
"message", "<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> %{WORD:activity} %{DATA:inout} \(%{DATA:msg}\) Src:%{IPV4:src} Dst:%{IPV4:dst} Type:%{POSINT:type} Code:%{INT:code} IPP:%{INT:ipp} Rule:%{INT:rule} Interface:%{WORD:iface}"
]
}
geoip { source => "src" }
geoip { source => "dst" }
}
消息得到很好的解析(没有_grokparsefailure),但只附加了一个geoip信息(最后一个&#34; dst&#34;)。
答案 0 :(得分:3)
将geoip filter's target option设置为您要为每个源字段存储GeoIP信息的字段。
filter {
geoip {
source => "src"
target => "src_geoip"
}
geoip {
source => "dst"
target => "dst_geoip"
}
}