@@ -68,20 +68,9 @@ type collectorConfig struct {
6868}
6969
7070func 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 {
9887type 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