mirror of
https://github.com/prometheus/node_exporter.git
synced 2025-03-05 21:00:12 -08:00
Add caching back in.
This commit is contained in:
parent
7023184297
commit
fe9ec398f9
|
@ -51,6 +51,8 @@ const (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
factories = make(map[string]func(config *NodeCollectorConfig, logger log.Logger) (Collector, error))
|
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)
|
collectorStateGlobal = make(map[string]bool)
|
||||||
collectorFlagState = make(map[string]*bool)
|
collectorFlagState = make(map[string]*bool)
|
||||||
availableCollectors = make([]string, 0)
|
availableCollectors = make([]string, 0)
|
||||||
|
@ -140,15 +142,22 @@ func NewNodeCollector(config *NodeCollectorConfig, logger log.Logger, filters ..
|
||||||
}
|
}
|
||||||
collectors := make(map[string]Collector)
|
collectors := make(map[string]Collector)
|
||||||
|
|
||||||
|
initiatedCollectorsMtx.Lock()
|
||||||
|
defer initiatedCollectorsMtx.Unlock()
|
||||||
for key, enabled := range config.Collectors {
|
for key, enabled := range config.Collectors {
|
||||||
if !enabled || (len(f) > 0 && !f[key]) {
|
if !enabled || (len(f) > 0 && !f[key]) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if collector, ok := initiatedCollectors[key]; ok && config.AllowCachingOfCollectors {
|
||||||
|
collectors[key] = collector
|
||||||
|
} else {
|
||||||
collector, err := factories[key](config, log.With(logger, "collector", key))
|
collector, err := factories[key](config, log.With(logger, "collector", key))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
collectors[key] = collector
|
collectors[key] = collector
|
||||||
|
initiatedCollectors[key] = collector
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return &NodeCollector{Collectors: collectors, logger: logger}, nil
|
return &NodeCollector{Collectors: collectors, logger: logger}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ type NodeCollectorConfig struct {
|
||||||
Wifi WifiConfig
|
Wifi WifiConfig
|
||||||
|
|
||||||
Collectors map[string]bool
|
Collectors map[string]bool
|
||||||
|
AllowCachingOfCollectors bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type WifiConfig struct {
|
type WifiConfig struct {
|
||||||
|
|
|
@ -189,6 +189,7 @@ func main() {
|
||||||
runtime.GOMAXPROCS(*maxProcs)
|
runtime.GOMAXPROCS(*maxProcs)
|
||||||
level.Debug(logger).Log("msg", "Go MAXPROCS", "procs", runtime.GOMAXPROCS(0))
|
level.Debug(logger).Log("msg", "Go MAXPROCS", "procs", runtime.GOMAXPROCS(0))
|
||||||
collectorConfig.Collectors = collector.GetFlagDefaults()
|
collectorConfig.Collectors = collector.GetFlagDefaults()
|
||||||
|
collectorConfig.AllowCachingOfCollectors = true
|
||||||
http.Handle(*metricsPath, newHandler(!*disableExporterMetrics, *maxRequests, collectorConfig, logger))
|
http.Handle(*metricsPath, newHandler(!*disableExporterMetrics, *maxRequests, collectorConfig, logger))
|
||||||
if *metricsPath != "/" {
|
if *metricsPath != "/" {
|
||||||
landingConfig := web.LandingConfig{
|
landingConfig := web.LandingConfig{
|
||||||
|
|
Loading…
Reference in a new issue