Add caching back in.

This commit is contained in:
matt durham 2023-10-05 09:12:03 -04:00
parent 7023184297
commit fe9ec398f9
No known key found for this signature in database
GPG key ID: A62E920AE398897B
3 changed files with 21 additions and 10 deletions

View file

@ -51,6 +51,8 @@ const (
var (
factories = make(map[string]func(config *NodeCollectorConfig, logger log.Logger) (Collector, error))
initiatedCollectorsMtx = sync.Mutex{}
initiatedCollectors = make(map[string]Collector)
collectorStateGlobal = make(map[string]bool)
collectorFlagState = make(map[string]*bool)
availableCollectors = make([]string, 0)
@ -140,15 +142,22 @@ func NewNodeCollector(config *NodeCollectorConfig, logger log.Logger, filters ..
}
collectors := make(map[string]Collector)
initiatedCollectorsMtx.Lock()
defer initiatedCollectorsMtx.Unlock()
for key, enabled := range config.Collectors {
if !enabled || (len(f) > 0 && !f[key]) {
continue
}
if collector, ok := initiatedCollectors[key]; ok && config.AllowCachingOfCollectors {
collectors[key] = collector
} else {
collector, err := factories[key](config, log.With(logger, "collector", key))
if err != nil {
return nil, err
}
collectors[key] = collector
initiatedCollectors[key] = collector
}
}
return &NodeCollector{Collectors: collectors, logger: logger}, nil
}

View file

@ -44,6 +44,7 @@ type NodeCollectorConfig struct {
Wifi WifiConfig
Collectors map[string]bool
AllowCachingOfCollectors bool
}
type WifiConfig struct {

View file

@ -189,6 +189,7 @@ func main() {
runtime.GOMAXPROCS(*maxProcs)
level.Debug(logger).Log("msg", "Go MAXPROCS", "procs", runtime.GOMAXPROCS(0))
collectorConfig.Collectors = collector.GetFlagDefaults()
collectorConfig.AllowCachingOfCollectors = true
http.Handle(*metricsPath, newHandler(!*disableExporterMetrics, *maxRequests, collectorConfig, logger))
if *metricsPath != "/" {
landingConfig := web.LandingConfig{