mirror of
https://github.com/prometheus/node_exporter.git
synced 2024-12-27 22:49:44 -08:00
new flag to disable all default collectors (#1460)
* new flag to disable all default collectors Signed-off-by: Paul Gier <pgier@redhat.com> Co-authored-by: Ben Kochie <superq@gmail.com>
This commit is contained in:
parent
3e1b0f1bee
commit
b40954dce5
|
@ -18,6 +18,7 @@
|
||||||
* [CHANGE] Refactor mdadm collector #1403
|
* [CHANGE] Refactor mdadm collector #1403
|
||||||
* [CHANGE] Add `mountaddr` label to NFS metrics. #1417
|
* [CHANGE] Add `mountaddr` label to NFS metrics. #1417
|
||||||
* [CHANGE] Don't count empty collectors as success. #...
|
* [CHANGE] Don't count empty collectors as success. #...
|
||||||
|
* [FEATURE] New flag to disable default collectors #1276
|
||||||
* [FEATURE] Add new schedstat collector #1389
|
* [FEATURE] Add new schedstat collector #1389
|
||||||
* [FEATURE] Add uname support for Darwin and OpenBSD #1433
|
* [FEATURE] Add uname support for Darwin and OpenBSD #1433
|
||||||
* [FEATURE] Add new metric node_cpu_info #1489
|
* [FEATURE] Add new metric node_cpu_info #1489
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"github.com/go-kit/kit/log"
|
"github.com/go-kit/kit/log"
|
||||||
"github.com/go-kit/kit/log/level"
|
"github.com/go-kit/kit/log/level"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"gopkg.in/alecthomas/kingpin.v2"
|
kingpin "gopkg.in/alecthomas/kingpin.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Namespace defines the common namespace to be used by all metrics.
|
// Namespace defines the common namespace to be used by all metrics.
|
||||||
|
@ -50,8 +50,9 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
factories = make(map[string]func(logger log.Logger) (Collector, error))
|
factories = make(map[string]func(logger log.Logger) (Collector, error))
|
||||||
collectorState = make(map[string]*bool)
|
collectorState = make(map[string]*bool)
|
||||||
|
forcedCollectors = map[string]bool{} // collectors which have been explicitly enabled or disabled
|
||||||
)
|
)
|
||||||
|
|
||||||
func registerCollector(collector string, isDefaultEnabled bool, factory func(logger log.Logger) (Collector, error)) {
|
func registerCollector(collector string, isDefaultEnabled bool, factory func(logger log.Logger) (Collector, error)) {
|
||||||
|
@ -66,7 +67,7 @@ func registerCollector(collector string, isDefaultEnabled bool, factory func(log
|
||||||
flagHelp := fmt.Sprintf("Enable the %s collector (default: %s).", collector, helpDefaultState)
|
flagHelp := fmt.Sprintf("Enable the %s collector (default: %s).", collector, helpDefaultState)
|
||||||
defaultValue := fmt.Sprintf("%v", isDefaultEnabled)
|
defaultValue := fmt.Sprintf("%v", isDefaultEnabled)
|
||||||
|
|
||||||
flag := kingpin.Flag(flagName, flagHelp).Default(defaultValue).Bool()
|
flag := kingpin.Flag(flagName, flagHelp).Default(defaultValue).Action(collectorFlagAction(collector)).Bool()
|
||||||
collectorState[collector] = flag
|
collectorState[collector] = flag
|
||||||
|
|
||||||
factories[collector] = factory
|
factories[collector] = factory
|
||||||
|
@ -78,6 +79,28 @@ type NodeCollector struct {
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DisableDefaultCollectors sets the collector state to false for all collectors which
|
||||||
|
// have not been explicitly enabled on the command line.
|
||||||
|
func DisableDefaultCollectors() {
|
||||||
|
for c := range collectorState {
|
||||||
|
if _, ok := forcedCollectors[c]; !ok {
|
||||||
|
*collectorState[c] = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// collectorFlagAction generates a new action function for the given collector
|
||||||
|
// to track whether it has been explicitly enabled or disabled from the command line.
|
||||||
|
// A new action function is needed for each collector flag because the ParseContext
|
||||||
|
// does not contain information about which flag called the action.
|
||||||
|
// See: https://github.com/alecthomas/kingpin/issues/294
|
||||||
|
func collectorFlagAction(collector string) func(ctx *kingpin.ParseContext) error {
|
||||||
|
return func(ctx *kingpin.ParseContext) error {
|
||||||
|
forcedCollectors[collector] = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewNodeCollector creates a new NodeCollector.
|
// NewNodeCollector creates a new NodeCollector.
|
||||||
func NewNodeCollector(logger log.Logger, filters ...string) (*NodeCollector, error) {
|
func NewNodeCollector(logger log.Logger, filters ...string) (*NodeCollector, error) {
|
||||||
f := make(map[string]bool)
|
f := make(map[string]bool)
|
||||||
|
|
|
@ -29,7 +29,7 @@ import (
|
||||||
"github.com/prometheus/common/version"
|
"github.com/prometheus/common/version"
|
||||||
"github.com/prometheus/node_exporter/collector"
|
"github.com/prometheus/node_exporter/collector"
|
||||||
"github.com/prometheus/node_exporter/https"
|
"github.com/prometheus/node_exporter/https"
|
||||||
"gopkg.in/alecthomas/kingpin.v2"
|
kingpin "gopkg.in/alecthomas/kingpin.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// handler wraps an unfiltered http.Handler but uses a filtered handler,
|
// handler wraps an unfiltered http.Handler but uses a filtered handler,
|
||||||
|
@ -153,6 +153,10 @@ func main() {
|
||||||
"web.max-requests",
|
"web.max-requests",
|
||||||
"Maximum number of parallel scrape requests. Use 0 to disable.",
|
"Maximum number of parallel scrape requests. Use 0 to disable.",
|
||||||
).Default("40").Int()
|
).Default("40").Int()
|
||||||
|
disableDefaultCollectors = kingpin.Flag(
|
||||||
|
"collector.disable-defaults",
|
||||||
|
"Set all collectors to disabled by default.",
|
||||||
|
).Default("false").Bool()
|
||||||
configFile = kingpin.Flag(
|
configFile = kingpin.Flag(
|
||||||
"web.config",
|
"web.config",
|
||||||
"Path to config yaml file that can enable TLS or authentication.",
|
"Path to config yaml file that can enable TLS or authentication.",
|
||||||
|
@ -166,6 +170,9 @@ func main() {
|
||||||
kingpin.Parse()
|
kingpin.Parse()
|
||||||
logger := promlog.New(promlogConfig)
|
logger := promlog.New(promlogConfig)
|
||||||
|
|
||||||
|
if *disableDefaultCollectors {
|
||||||
|
collector.DisableDefaultCollectors()
|
||||||
|
}
|
||||||
level.Info(logger).Log("msg", "Starting node_exporter", "version", version.Info())
|
level.Info(logger).Log("msg", "Starting node_exporter", "version", version.Info())
|
||||||
level.Info(logger).Log("msg", "Build context", "build_context", version.BuildContext())
|
level.Info(logger).Log("msg", "Build context", "build_context", version.BuildContext())
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue