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/", }, }, }