textfile: fix duplicate metrics error (#738)

The textfile gatherer should only be added to gatherer list once.

Signed-off-by: Li Wei <liwei@anbutu.com>
This commit is contained in:
Wei Li 2017-12-07 00:05:40 +08:00 committed by Ben Kochie
parent a96f1738b3
commit 1e9bb4ec3a

View File

@ -22,6 +22,7 @@ import (
"path/filepath"
"sort"
"strings"
"sync"
"time"
"github.com/golang/protobuf/proto"
@ -34,6 +35,7 @@ import (
var (
textFileDirectory = kingpin.Flag("collector.textfile.directory", "Directory to read text files with metrics from.").Default("").String()
textFileAddOnce sync.Once
)
type textFileCollector struct {
@ -56,10 +58,12 @@ func NewTextFileCollector() (Collector, error) {
// the flag is not passed.
log.Infof("No directory specified, see --collector.textfile.directory")
} else {
prometheus.DefaultGatherer = prometheus.Gatherers{
prometheus.DefaultGatherer,
prometheus.GathererFunc(func() ([]*dto.MetricFamily, error) { return c.parseTextFiles(), nil }),
}
textFileAddOnce.Do(func() {
prometheus.DefaultGatherer = prometheus.Gatherers{
prometheus.DefaultGatherer,
prometheus.GathererFunc(func() ([]*dto.MetricFamily, error) { return c.parseTextFiles(), nil }),
}
})
}
return c, nil