Skip to content

Commit fe9ec39

Browse files
committed
Add caching back in.
1 parent 7023184 commit fe9ec39

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

collector/collector.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ const (
5050
)
5151

5252
var (
53-
factories = make(map[string]func(config *NodeCollectorConfig, logger log.Logger) (Collector, error))
54-
collectorStateGlobal = make(map[string]bool)
55-
collectorFlagState = make(map[string]*bool)
56-
availableCollectors = make([]string, 0)
57-
forcedCollectors = map[string]bool{} // collectors which have been explicitly enabled or disabled
53+
factories = make(map[string]func(config *NodeCollectorConfig, logger log.Logger) (Collector, error))
54+
initiatedCollectorsMtx = sync.Mutex{}
55+
initiatedCollectors = make(map[string]Collector)
56+
collectorStateGlobal = make(map[string]bool)
57+
collectorFlagState = make(map[string]*bool)
58+
availableCollectors = make([]string, 0)
59+
forcedCollectors = map[string]bool{} // collectors which have been explicitly enabled or disabled
5860
)
5961

6062
func GetDefaults() map[string]bool {
@@ -140,15 +142,22 @@ func NewNodeCollector(config *NodeCollectorConfig, logger log.Logger, filters ..
140142
}
141143
collectors := make(map[string]Collector)
142144

145+
initiatedCollectorsMtx.Lock()
146+
defer initiatedCollectorsMtx.Unlock()
143147
for key, enabled := range config.Collectors {
144148
if !enabled || (len(f) > 0 && !f[key]) {
145149
continue
146150
}
147-
collector, err := factories[key](config, log.With(logger, "collector", key))
148-
if err != nil {
149-
return nil, err
151+
if collector, ok := initiatedCollectors[key]; ok && config.AllowCachingOfCollectors {
152+
collectors[key] = collector
153+
} else {
154+
collector, err := factories[key](config, log.With(logger, "collector", key))
155+
if err != nil {
156+
return nil, err
157+
}
158+
collectors[key] = collector
159+
initiatedCollectors[key] = collector
150160
}
151-
collectors[key] = collector
152161
}
153162
return &NodeCollector{Collectors: collectors, logger: logger}, nil
154163
}

collector/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ type NodeCollectorConfig struct {
4343
VmStat VmStatConfig
4444
Wifi WifiConfig
4545

46-
Collectors map[string]bool
46+
Collectors map[string]bool
47+
AllowCachingOfCollectors bool
4748
}
4849

4950
type WifiConfig struct {

node_exporter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func main() {
189189
runtime.GOMAXPROCS(*maxProcs)
190190
level.Debug(logger).Log("msg", "Go MAXPROCS", "procs", runtime.GOMAXPROCS(0))
191191
collectorConfig.Collectors = collector.GetFlagDefaults()
192+
collectorConfig.AllowCachingOfCollectors = true
192193
http.Handle(*metricsPath, newHandler(!*disableExporterMetrics, *maxRequests, collectorConfig, logger))
193194
if *metricsPath != "/" {
194195
landingConfig := web.LandingConfig{

0 commit comments

Comments
 (0)