Logstash - 如何在一条消息中使用多个geoip过滤器

时间:2015-03-23 15:26:03

标签: elasticsearch logstash geoip

我希望将两个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;)。

1 个答案:

答案 0 :(得分:3)

geoip filter's target option设置为您要为每个源字段存储GeoIP信息的字段。

filter {
    geoip {
      source => "src"
      target => "src_geoip"
    }
    geoip {
      source => "dst"
      target => "dst_geoip"
    }
}