diff --git a/CHANGELOG.md b/CHANGELOG.md index f614f4422..3f130fe60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ should now look like: ### Bugfixes +- [#1426](https://github.com/influxdata/telegraf/pull/1426): nil metrics panic fix. - [#1384](https://github.com/influxdata/telegraf/pull/1384): Fix datarace in apache input plugin. - [#1399](https://github.com/influxdata/telegraf/issues/1399): Add `read_repairs` statistics to riak plugin. - [#1405](https://github.com/influxdata/telegraf/issues/1405): Fix memory/connection leak in prometheus input plugin. diff --git a/internal/models/running_output.go b/internal/models/running_output.go index d0d2abbc1..42025912c 100644 --- a/internal/models/running_output.go +++ b/internal/models/running_output.go @@ -138,7 +138,7 @@ func (ro *RunningOutput) Write() error { } func (ro *RunningOutput) write(metrics []telegraf.Metric) error { - if len(metrics) == 0 { + if metrics == nil || len(metrics) == 0 { return nil } start := time.Now() diff --git a/plugins/serializers/graphite/graphite.go b/plugins/serializers/graphite/graphite.go index bf2e75579..43e32c244 100644 --- a/plugins/serializers/graphite/graphite.go +++ b/plugins/serializers/graphite/graphite.go @@ -26,6 +26,9 @@ func (s *GraphiteSerializer) Serialize(metric telegraf.Metric) ([]string, error) timestamp := metric.UnixNano() / 1000000000 bucket := s.SerializeBucketName(metric.Name(), metric.Tags()) + if bucket == "" { + return out, nil + } for fieldName, value := range metric.Fields() { // Convert value to string @@ -89,6 +92,10 @@ func (s *GraphiteSerializer) SerializeBucketName( } } + if len(out) == 0 { + return "" + } + if s.Prefix == "" { return sanitizedChars.Replace(strings.Join(out, ".")) }