diff --git a/patterns/linux-syslog b/patterns/linux-syslog index 3db302a8a..862c3f496 100644 --- a/patterns/linux-syslog +++ b/patterns/linux-syslog @@ -8,6 +8,6 @@ SYSLOGLINE %{SYSLOGBASE2} %{GREEDYDATA:message} # IETF 5424 syslog(8) format (see http://www.rfc-editor.org/info/rfc5424) SYSLOG5424PRI (?:\<%{NONNEGINT}\>) -SYSLOG5424SD (?:\[%{DATA}\]+|-) +SYSLOG5424SD \[%{DATA}\]+ -SYSLOG5424LINE %{SYSLOG5424PRI:syslog5424_pri}%{NONNEGINT:syslog5424_ver} (%{TIMESTAMP_ISO8601:syslog5424_ts}|-) (%{HOSTNAME:syslog5424_host}|-) (%{WORD:syslog5424_app}|-) (%{WORD:syslog5424_proc}|-) (%{WORD:syslog5424_msgid}|-) %{SYSLOG5424SD:syslog5424_sd} %{GREEDYDATA:syslog5424_msg} +SYSLOG5424LINE %{SYSLOG5424PRI:syslog5424_pri}%{NONNEGINT:syslog5424_ver} (?:%{TIMESTAMP_ISO8601:syslog5424_ts}|-) (?:%{HOSTNAME:syslog5424_host}|-) (?:%{WORD:syslog5424_app}|-) (?:%{WORD:syslog5424_proc}|-) (?:%{WORD:syslog5424_msgid}|-) (?:%{SYSLOG5424SD:syslog5424_sd}|-) %{GREEDYDATA:syslog5424_msg} diff --git a/spec/filters/grok.rb b/spec/filters/grok.rb index 61f6d34a7..1362db0d4 100644 --- a/spec/filters/grok.rb +++ b/spec/filters/grok.rb @@ -51,6 +51,45 @@ describe LogStash::Filters::Grok do insist { subject["syslog5424_sd"] } == "[id1 foo=\"bar\"][id2 baz=\"something\"]" insist { subject["syslog5424_msg"] } == "Hello, syslog." end + + sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug - - [id1 foo=\"bar\"] No process ID." do + insist { subject["tags"] }.nil? + insist { subject["syslog5424_pri"] } == "<191>" + insist { subject["syslog5424_ver"] } == "1" + insist { subject["syslog5424_ts"] } == "2009-06-30T18:30:00+02:00" + insist { subject["syslog5424_host"] } == "paxton.local" + insist { subject["syslog5424_app"] } == "grokdebug" + insist { subject["syslog5424_proc"] } == nil + insist { subject["syslog5424_msgid"] } == nil + insist { subject["syslog5424_sd"] } == "[id1 foo=\"bar\"]" + insist { subject["syslog5424_msg"] } == "No process ID." + end + + sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - - No structured data." do + insist { subject["tags"] }.nil? + insist { subject["syslog5424_pri"] } == "<191>" + insist { subject["syslog5424_ver"] } == "1" + insist { subject["syslog5424_ts"] } == "2009-06-30T18:30:00+02:00" + insist { subject["syslog5424_host"] } == "paxton.local" + insist { subject["syslog5424_app"] } == "grokdebug" + insist { subject["syslog5424_proc"] } == "4123" + insist { subject["syslog5424_msgid"] } == nil + insist { subject["syslog5424_sd"] } == nil + insist { subject["syslog5424_msg"] } == "No structured data." + end + + sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug - - - No PID or SD." do + insist { subject["tags"] }.nil? + insist { subject["syslog5424_pri"] } == "<191>" + insist { subject["syslog5424_ver"] } == "1" + insist { subject["syslog5424_ts"] } == "2009-06-30T18:30:00+02:00" + insist { subject["syslog5424_host"] } == "paxton.local" + insist { subject["syslog5424_app"] } == "grokdebug" + insist { subject["syslog5424_proc"] } == nil + insist { subject["syslog5424_msgid"] } == nil + insist { subject["syslog5424_sd"] } == nil + insist { subject["syslog5424_msg"] } == "No PID or SD." + end end describe "parsing an event with multiple messages (array of strings)" do