@@ -29,15 +29,20 @@ def self.sample(message, &block)
29
29
let ( :config ) { { "match" => { "message" => "%{SYSLOGLINE}" } , "overwrite" => [ "message" ] } }
30
30
let ( :message ) { 'Mar 16 00:01:25 evita postfix/smtpd[1713]: connect from camomile.cloud9.net[168.100.1.3]' }
31
31
32
- it "matches pattern" do
33
- expect ( event . get ( "tags" ) ) . to be nil
34
- expect ( event . get ( "logsource" ) ) . to eql "evita"
35
- expect ( event . get ( "timestamp" ) ) . to eql "Mar 16 00:01:25"
36
- expect ( event . get ( "message" ) ) . to eql "connect from camomile.cloud9.net[168.100.1.3]"
37
- expect ( event . get ( "program" ) ) . to eql "postfix/smtpd"
38
- expect ( event . get ( "pid" ) ) . to eql "1713"
32
+ context "in ecs mode disabled" do
33
+ let ( :config ) { super ( ) . merge ( 'ecs_compatibility' => 'disabled' ) }
34
+
35
+ it "matches pattern" do
36
+ expect ( event . get ( "tags" ) ) . to be nil
37
+ expect ( event . get ( "timestamp" ) ) . to eql "Mar 16 00:01:25"
38
+ expect ( event . get ( "logsource" ) ) . to eql "evita"
39
+ expect ( event . get ( "program" ) ) . to eql "postfix/smtpd"
40
+ expect ( event . get ( "pid" ) ) . to eql "1713"
41
+ expect ( event . get ( "message" ) ) . to eql "connect from camomile.cloud9.net[168.100.1.3]"
42
+ end
39
43
end
40
44
45
+
41
46
%w( v1 v8 ) . each do |ecs_mode |
42
47
context "in ecs mode #{ ecs_mode } " do
43
48
let ( :config ) { super ( ) . merge ( 'ecs_compatibility' => ecs_mode ) }
@@ -59,7 +64,7 @@ def self.sample(message, &block)
59
64
expect ( event . get ( "grok" ) ) . to_not be nil
60
65
expect ( event . get ( "[grok][timestamp]" ) ) . to eql "Mar 16 00:01:25"
61
66
expect ( event . get ( "[grok][message]" ) ) . to eql "connect from camomile.cloud9.net[168.100.1.3]"
62
- expect ( event . get ( "[grok][pid]" ) ) . to eql " 1713"
67
+ expect ( event . get ( "[grok][process][ pid]" ) ) . to eql 1713
63
68
end
64
69
end
65
70
@@ -70,14 +75,15 @@ def self.sample(message, &block)
70
75
expect ( event . get ( "message" ) ) . to eql message
71
76
expect ( event . get ( "tags" ) ) . to be nil
72
77
expect ( event . get ( "grok" ) ) . to be nil
73
- expect ( event . get ( "[@metadata][grok][logsource ]" ) ) . to eql "evita"
78
+ expect ( event . get ( "[@metadata][grok][host][hostname ]" ) ) . to eql "evita"
74
79
expect ( event . get ( "[@metadata][grok][message]" ) ) . to eql "connect from camomile.cloud9.net[168.100.1.3]"
75
80
end
76
81
end
77
82
end
78
83
79
- describe "ietf 5424 syslog line" do
80
- let ( :config ) { { "match" => { "message" => "%{SYSLOG5424LINE}" } } }
84
+ %w( disabled ) . each do |ecs_mode |
85
+ describe "ietf 5424 syslog line" do
86
+ let ( :config ) { { 'ecs_compatibility' => ecs_mode , "match" => { "message" => "%{SYSLOG5424LINE}" } } }
81
87
82
88
sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - [id1 foo=\" bar\" ][id2 baz=\" something\" ] Hello, syslog." do
83
89
expect ( event . get ( "tags" ) ) . to be nil
@@ -185,6 +191,116 @@ def self.sample(message, &block)
185
191
expect ( event . get ( "syslog5424_sd" ) ) . to be nil
186
192
expect ( event . get ( "syslog5424_msg" ) ) . to eql "Appname is nil"
187
193
end
194
+ end
195
+ end
196
+ %w( v1 v8 ) . each do |ecs_mode |
197
+ describe "ietf 5424 syslog line" do
198
+ let ( :config ) { { "overwrite" => [ "message" ] , 'ecs_compatibility' => ecs_mode , "match" => { "message" => "%{SYSLOG5424LINE}" } } }
199
+
200
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - [id1 foo=\" bar\" ][id2 baz=\" something\" ] Hello, syslog." do
201
+ expect ( event . get ( "tags" ) ) . to be nil
202
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 191
203
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
204
+ expect ( event . get ( "timestamp" ) ) . to eql "2009-06-30T18:30:00+02:00"
205
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "paxton.local"
206
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
207
+ expect ( event . get ( "[process][pid]" ) ) . to eql 4123
208
+ expect ( event . get ( "[event][code]" ) ) . to be nil
209
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to eql "[id1 foo=\" bar\" ][id2 baz=\" something\" ]"
210
+ expect ( event . get ( "message" ) ) . to eql "Hello, syslog."
211
+ end
212
+
213
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug - - [id1 foo=\" bar\" ] No process ID." do
214
+ expect ( event . get ( "tags" ) ) . to be nil
215
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 191
216
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
217
+ expect ( event . get ( "timestamp" ) ) . to eql "2009-06-30T18:30:00+02:00"
218
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "paxton.local"
219
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
220
+ expect ( event . get ( "[process][pid]" ) ) . to be nil
221
+ expect ( event . get ( "[event][code]" ) ) . to be nil
222
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to eql "[id1 foo=\" bar\" ]"
223
+ expect ( event . get ( "message" ) ) . to eql "No process ID."
224
+ end
225
+
226
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - - No structured data." do
227
+ expect ( event . get ( "tags" ) ) . to be nil
228
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 191
229
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
230
+ expect ( event . get ( "timestamp" ) ) . to eql "2009-06-30T18:30:00+02:00"
231
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "paxton.local"
232
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
233
+ expect ( event . get ( "[process][pid]" ) ) . to be 4123
234
+ expect ( event . get ( "[event][code]" ) ) . to be nil
235
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
236
+ expect ( event . get ( "message" ) ) . to eql "No structured data."
237
+ end
238
+
239
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug - - - No PID or SD." do
240
+ expect ( event . get ( "tags" ) ) . to be nil
241
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 191
242
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
243
+ expect ( event . get ( "timestamp" ) ) . to eql "2009-06-30T18:30:00+02:00"
244
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "paxton.local"
245
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
246
+ expect ( event . get ( "[process][pid]" ) ) . to be nil
247
+ expect ( event . get ( "[event][code]" ) ) . to be nil
248
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
249
+ expect ( event . get ( "message" ) ) . to eql "No PID or SD."
250
+ end
251
+
252
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - Missing structured data." do
253
+ expect ( event . get ( "tags" ) ) . to be nil
254
+ expect ( event . get ( "[process][pid]" ) ) . to eql 4123
255
+ expect ( event . get ( "[event][code]" ) ) . to be nil
256
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
257
+ expect ( event . get ( "message" ) ) . to eql "Missing structured data."
258
+ end
259
+
260
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - - Additional spaces." do
261
+ expect ( event . get ( "tags" ) ) . to be nil
262
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
263
+ expect ( event . get ( "[process][pid]" ) ) . to be 4123
264
+ expect ( event . get ( "[event][code]" ) ) . to be nil
265
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
266
+ expect ( event . get ( "message" ) ) . to eql "Additional spaces."
267
+ end
268
+
269
+ sample "<191>1 2009-06-30T18:30:00+02:00 paxton.local grokdebug 4123 - Additional spaces and missing SD." do
270
+ expect ( event . get ( "tags" ) ) . to be nil
271
+ expect ( event . get ( "[process][name]" ) ) . to eql "grokdebug"
272
+ expect ( event . get ( "[process][pid]" ) ) . to be 4123
273
+ expect ( event . get ( "[event][code]" ) ) . to be nil
274
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
275
+ expect ( event . get ( "message" ) ) . to eql "Additional spaces and missing SD."
276
+ end
277
+
278
+ sample "<30>1 2014-04-04T16:44:07+02:00 osctrl01 dnsmasq-dhcp 8048 - - Appname contains a dash" do
279
+ expect ( event . get ( "tags" ) ) . to be nil
280
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 30
281
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
282
+ expect ( event . get ( "timestamp" ) ) . to eql "2014-04-04T16:44:07+02:00"
283
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "osctrl01"
284
+ expect ( event . get ( "[process][name]" ) ) . to eql "dnsmasq-dhcp"
285
+ expect ( event . get ( "[process][pid]" ) ) . to be 8048
286
+ expect ( event . get ( "[event][code]" ) ) . to be nil
287
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
288
+ expect ( event . get ( "message" ) ) . to eql "Appname contains a dash"
289
+ end
290
+
291
+ sample "<30>1 2014-04-04T16:44:07+02:00 osctrl01 - 8048 - - Appname is nil" do
292
+ expect ( event . get ( "tags" ) ) . to be nil
293
+ expect ( event . get ( "[log][syslog][priority]" ) ) . to eql 30
294
+ expect ( event . get ( "[system][syslog][version]" ) ) . to eql "1"
295
+ expect ( event . get ( "timestamp" ) ) . to eql "2014-04-04T16:44:07+02:00"
296
+ expect ( event . get ( "[host][hostname]" ) ) . to eql "osctrl01"
297
+ expect ( event . get ( "[process][name]" ) ) . to eql nil
298
+ expect ( event . get ( "[process][pid]" ) ) . to be 8048
299
+ expect ( event . get ( "[event][code]" ) ) . to be nil
300
+ expect ( event . get ( "[system][syslog][structured_data]" ) ) . to be nil
301
+ expect ( event . get ( "message" ) ) . to eql "Appname is nil"
302
+ end
303
+ end
188
304
end
189
305
190
306
describe "parsing an event with multiple messages (array of strings)" , if : false do
@@ -730,6 +846,7 @@ def self.sample(message, &block)
730
846
end
731
847
end
732
848
849
+
733
850
describe "grok with inline pattern definition overwrites existing pattern definition" do
734
851
let ( :config ) {
735
852
{
0 commit comments