diff --git a/plugins/inputs/statsd/statsd.go b/plugins/inputs/statsd/statsd.go index 3f646d254aed5..5d88f20f8f093 100644 --- a/plugins/inputs/statsd/statsd.go +++ b/plugins/inputs/statsd/statsd.go @@ -85,6 +85,8 @@ type Statsd struct { Templates []string listener *net.UDPConn + + graphiteParser *graphite.GraphiteParser } // One statsd metric, form is :||@ @@ -505,10 +507,17 @@ func (s *Statsd) parseName(bucket string) (string, string, map[string]string) { var field string name := bucketparts[0] - p, err := graphite.NewGraphiteParser(s.MetricSeparator, s.Templates, nil) - if err == nil { - p.DefaultTags = tags - name, tags, field, _ = p.ApplyTemplate(name) + + p := s.graphiteParser + var err error + + if p == nil { + p, err = graphite.NewGraphiteParser(s.MetricSeparator, s.Templates, nil) + if err == nil { + s.graphiteParser = p + p.DefaultTags = tags + name, tags, field, _ = p.ApplyTemplate(name) + } } if s.ConvertNames {