From 302ac88bdbedb11020ba82a8f715f3cb0bd6290a Mon Sep 17 00:00:00 2001 From: Sven Rebhan <36194019+srebhan@users.noreply.github.com> Date: Thu, 13 Apr 2023 00:15:35 +0200 Subject: [PATCH] fix(parsers.grok): Fix nil metric for multiline inputs (#13078) --- plugins/parsers/grok/parser.go | 4 +++- plugins/parsers/grok/parser_test.go | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/plugins/parsers/grok/parser.go b/plugins/parsers/grok/parser.go index f3c4655ab..d052e1d91 100644 --- a/plugins/parsers/grok/parser.go +++ b/plugins/parsers/grok/parser.go @@ -387,7 +387,9 @@ func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) { if err != nil { return nil, err } - metrics = append(metrics, m) + if m != nil { + metrics = append(metrics, m) + } return metrics, nil } diff --git a/plugins/parsers/grok/parser_test.go b/plugins/parsers/grok/parser_test.go index 18c2324f1..607751fc0 100644 --- a/plugins/parsers/grok/parser_test.go +++ b/plugins/parsers/grok/parser_test.go @@ -1167,3 +1167,19 @@ func TestTrimRegression(t *testing.T) { ) require.Equal(t, expected, actual) } + +func TestMultilineNilMetric(t *testing.T) { + buf, err := os.ReadFile("./testdata/test_multiline.log") + require.NoError(t, err) + + p := &Parser{ + Measurement: "multiline", + Patterns: []string{`%{TIMESTAMP_ISO8601:timestamp:ts-rfc3339} Info%{MULTILINEDATA:text}`}, + Multiline: true, + Log: testutil.Logger{}, + } + require.NoError(t, p.Compile()) + actual, err := p.Parse(buf) + require.NoError(t, err) + require.Empty(t, actual) +}