From 63d07f4272fa4a417301f7401d2cd594332826d8 Mon Sep 17 00:00:00 2001 From: Alexander Shepelin Date: Sat, 7 Jul 2018 02:13:46 +0300 Subject: [PATCH] Don't set values when pattern doesn't match in regex processor (#4396) (cherry picked from commit 35d2f90d6c53a5adf524fa7c8a6d05e35e214e46) --- plugins/processors/regex/regex.go | 8 ++++++-- plugins/processors/regex/regex_test.go | 5 ++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/processors/regex/regex.go b/plugins/processors/regex/regex.go index 3282406c8..f73ed06b6 100644 --- a/plugins/processors/regex/regex.go +++ b/plugins/processors/regex/regex.go @@ -67,7 +67,9 @@ func (r *Regex) Apply(in ...telegraf.Metric) []telegraf.Metric { for _, metric := range in { for _, converter := range r.Tags { if value, ok := metric.GetTag(converter.Key); ok { - metric.AddTag(r.convert(converter, value)) + if key, newValue := r.convert(converter, value); newValue != "" { + metric.AddTag(key, newValue) + } } } @@ -75,7 +77,9 @@ func (r *Regex) Apply(in ...telegraf.Metric) []telegraf.Metric { if value, ok := metric.GetField(converter.Key); ok { switch value := value.(type) { case string: - metric.AddField(r.convert(converter, value)) + if key, newValue := r.convert(converter, value); newValue != "" { + metric.AddField(key, newValue) + } } } } diff --git a/plugins/processors/regex/regex_test.go b/plugins/processors/regex/regex_test.go index e7c15e5aa..f16ef7f5c 100644 --- a/plugins/processors/regex/regex_test.go +++ b/plugins/processors/regex/regex_test.go @@ -222,7 +222,7 @@ func TestNoMatches(t *testing.T) { }, }, { - message: "Should emit empty string when result_key given but regex doesn't match", + message: "Should not emit new tag/field when result_key given but regex doesn't match", converter: converter{ Key: "request", Pattern: "not_match", @@ -230,8 +230,7 @@ func TestNoMatches(t *testing.T) { ResultKey: "new_field", }, expectedFields: map[string]interface{}{ - "request": "/users/42/", - "new_field": "", + "request": "/users/42/", }, }, }