0

我是一个新的 Logstash 用户,我开始编写一些 grok 规则来解析我的 asa 日志文件。我有一些规则可以正确触发,尽管我在 grok 调试器中对其进行了测试,但我无法正确解析事件,并且它始终可以正确测试。此事件将始终具有_grokparsefailure标志。

这是一个事件:

<166>:太平洋标准时间 2 月 26 日 23:44:14:%ASA-session-6-305012:从内部拆除动态 TCP 转换:192.168.1.45/53838 到外部:71.110.113.180/53838 持续时间 0:00:30

还有我的 grok 模式:

<%{POSINT:syslog_pri}>:%{CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305012: Teardown dynamic TCP translation from %{WORD:source_interface_name}:%{IP:source_ip}/%{POSINT:source_port} to %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port} duration (?<translation_duration>\d+:\d+:\d+)

我的过滤器集如下:

filter {
        grok {
                match   => ["message", "<%{POSINT:syslog_pri}>:%    {CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305011: Built dynamic TCP translation from %{WORD:source_interface_name}:%{IP:source_ip}/%{POSINT:source_port} to %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port}" ]

            match   => ["messgae", "<%{POSINT:syslog_pri}>:%{CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305012: Teardown dynamic TCP translation from %{WORD:source_interface_name}:%{IP:source_ip}/%{POSINT:source_port} to %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port} duration (?<translation_duration>\d+:\d+:\d+)" ]

            match   => ["message", "<%{POSINT:syslog_pri}>:%{CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305011: Built dynamic UDP translation from %{WORD:source_interface_name}:%{IP:source_ip}/%{POSINT:source_port} to %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port}" ]

            match   => ["message", "<%{POSINT:syslog_pri}>:%{CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305012: Teardown dynamic UDP translation from %{WORD:source_interface_name}:%{IP:source_ip}/%{POSINT:source_port} to %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port} duration (?<translation_duration>\d+:\d+:\d+)" ]

    }

    geoip {
            source  => "source_ip"
    }

    geoip {
            source  => "destination_ip"
    }

感谢您的任何指导。

4

1 回答 1

0

尝试使用内置的 grok 过滤器而不是最后的命名捕获,如下所示:

<%{POSINT:syslog_pri}>:%{CISCOTIMESTAMP:timestamp} PST: %ASA-session-6-305012: 从 %{WORD:source_interface_name} 拆除动态 TCP 转换:%{IP:source_ip}/%{POSINT:source_port } 到 %{WORD:destination_interface_name}:%{IP:destination_ip}/%{POSINT:destination_port} 持续时间 %{NONNEGINT:dur_hour}:%{NONNEGINT:dur_min}:%{NONNEGINT:dur_sec}

您还可以尝试创建一个简单的 test.conf,它只是用作输入:

stdin{} 

并将输出设置为:

output { stdout { codec => rubydebug } }

如果您执行 logstash -f test.conf < [your test data] 它应该为您提供有关正在发生的事情的更多信息。

于 2015-02-28T16:29:20.073 回答