From 1e9bb4ec3a8374b062659d49f42ab5064381ae88 Mon Sep 17 00:00:00 2001 From: Wei Li Date: Thu, 7 Dec 2017 00:05:40 +0800 Subject: [PATCH] textfile: fix duplicate metrics error (#738) The textfile gatherer should only be added to gatherer list once. Signed-off-by: Li Wei --- collector/textfile.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/collector/textfile.go b/collector/textfile.go index 4428479..6135bf6 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -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