Skip to content

Commit 3c6dbed

Browse files
thampiotrcristiangreco
authored andcommitted
Allow configuring enabled collectors.
1 parent a53dc5b commit 3c6dbed

File tree

2 files changed

+19
-28
lines changed

2 files changed

+19
-28
lines changed

cmd/postgres_exporter/main.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ const (
6868
serverLabelName = "server"
6969
)
7070

71-
// TODO(thampiotr): consider removing this
7271
func main() {
7372
kingpin.Version(version.Print(exporterName))
7473
promslogConfig := &promslog.Config{}

collector/collector.go

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,9 @@ type collectorConfig struct {
6868
}
6969

7070
func registerCollector(name string, isDefaultEnabled bool, createFunc func(collectorConfig) (Collector, error)) {
71-
var helpDefaultState string
72-
if isDefaultEnabled {
73-
helpDefaultState = "enabled"
74-
} else {
75-
helpDefaultState = "disabled"
76-
}
77-
78-
// Create flag for this collector
79-
flagName := collectorFlagPrefix + name
80-
flagHelp := fmt.Sprintf("Enable the %s collector (default: %s).", name, helpDefaultState)
81-
defaultValue := fmt.Sprintf("%v", isDefaultEnabled)
82-
83-
flag := kingpin.Flag(flagName, flagHelp).Default(defaultValue).Action(collectorFlagAction(name)).Bool()
84-
collectorState[name] = flag
71+
collectorFlagAction(name)
72+
local := isDefaultEnabled
73+
collectorState[name] = &local
8574

8675
// Register the create function for this collector
8776
factories[name] = createFunc
@@ -98,7 +87,7 @@ type PostgresCollector struct {
9887
type Option func(*PostgresCollector) error
9988

10089
// NewPostgresCollector creates a new PostgresCollector.
101-
func NewPostgresCollector(logger *slog.Logger, excludeDatabases []string, dsn string, filters []string, options ...Option) (*PostgresCollector, error) {
90+
func NewPostgresCollector(logger log.Logger, excludeDatabases []string, dsn string, enabledCollectors []string, options ...Option) (*PostgresCollector, error) {
10291
p := &PostgresCollector{
10392
logger: logger,
10493
}
@@ -110,24 +99,27 @@ func NewPostgresCollector(logger *slog.Logger, excludeDatabases []string, dsn st
11099
}
111100
}
112101

113-
f := make(map[string]bool)
114-
for _, filter := range filters {
115-
enabled, exist := collectorState[filter]
116-
if !exist {
117-
return nil, fmt.Errorf("missing collector: %s", filter)
102+
collectorsToStart := map[string]struct{}{}
103+
if len(enabledCollectors) == 0 {
104+
for name, enabledByDefault := range collectorState {
105+
if *enabledByDefault {
106+
collectorsToStart[name] = struct{}{}
107+
}
118108
}
119-
if !*enabled {
120-
return nil, fmt.Errorf("disabled collector: %s", filter)
109+
} else {
110+
for _, name := range enabledCollectors {
111+
_, exist := collectorState[name]
112+
if !exist {
113+
return nil, fmt.Errorf("requested to enable an unknown collector: %s", name)
114+
}
115+
collectorsToStart[name] = struct{}{}
121116
}
122-
f[filter] = true
123117
}
118+
124119
collectors := make(map[string]Collector)
125120
initiatedCollectorsMtx.Lock()
126121
defer initiatedCollectorsMtx.Unlock()
127-
for key, enabled := range collectorState {
128-
if !*enabled || (len(f) > 0 && !f[key]) {
129-
continue
130-
}
122+
for key, _ := range collectorsToStart {
131123
if collector, ok := initiatedCollectors[key]; ok {
132124
collectors[key] = collector
133125
} else {

0 commit comments

Comments
 (0)