66 "errors"
77 "fmt"
88 "os"
9- "slices"
109 "sort"
1110 "strings"
1211 "sync"
@@ -437,9 +436,9 @@ func NewWithFlags(app *kingpin.Application) *Collector {
437436 c := & Collector {
438437 config : ConfigDefaults ,
439438 }
440- c .config .CollectorsEnabled = make ([]string , 0 )
441439
442440 var listAllCollectors bool
441+ var collectorsEnabled string
443442
444443 app .Flag (
445444 "collectors.mssql.class-print" ,
@@ -449,7 +448,7 @@ func NewWithFlags(app *kingpin.Application) *Collector {
449448 app .Flag (
450449 "collectors.mssql.classes-enabled" ,
451450 "Comma-separated list of mssql WMI classes to use." ,
452- ).Default (strings .Join (ConfigDefaults . CollectorsEnabled , "," )).StringsVar ( & c . config . CollectorsEnabled )
451+ ).Default (strings .Join (c . config . CollectorsEnabled , "," )).StringVar ( & collectorsEnabled )
453452
454453 app .PreAction (func (* kingpin.ParseContext ) error {
455454 if listAllCollectors {
@@ -468,6 +467,12 @@ func NewWithFlags(app *kingpin.Application) *Collector {
468467 return nil
469468 })
470469
470+ app .Action (func (* kingpin.ParseContext ) error {
471+ c .config .CollectorsEnabled = strings .Split (collectorsEnabled , "," )
472+
473+ return nil
474+ })
475+
471476 return c
472477}
473478
@@ -480,16 +485,11 @@ func (c *Collector) SetLogger(logger log.Logger) {
480485}
481486
482487func (c * Collector ) GetPerfCounter () ([]string , error ) {
483- enabled := slices .Compact (c .config .CollectorsEnabled )
484-
485- // Result must order, to prevent test failures.
486- sort .Strings (enabled )
487-
488488 c .mssqlInstances = getMSSQLInstances (c .logger )
489- perfCounters := make ([]string , 0 , len (c .mssqlInstances )* len (enabled ))
489+ perfCounters := make ([]string , 0 , len (c .mssqlInstances )* len (c . config . CollectorsEnabled ))
490490
491491 for instance := range c .mssqlInstances {
492- for _ , c := range enabled {
492+ for _ , c := range c . config . CollectorsEnabled {
493493 perfCounters = append (perfCounters , mssqlGetPerfObjectName (instance , c ))
494494 }
495495 }
@@ -502,6 +502,9 @@ func (c *Collector) Close() error {
502502}
503503
504504func (c * Collector ) Build () error {
505+ // Result must order, to prevent test failures.
506+ sort .Strings (c .config .CollectorsEnabled )
507+
505508 // meta
506509 c .mssqlScrapeDurationDesc = prometheus .NewDesc (
507510 prometheus .BuildFQName (types .Namespace , Name , "collector_duration_seconds" ),
@@ -1965,6 +1968,12 @@ func (c *Collector) Build() error {
19651968
19661969 c .mssqlCollectors = c .getMSSQLCollectors ()
19671970
1971+ for _ , name := range c .config .CollectorsEnabled {
1972+ if _ , ok := c .mssqlCollectors [name ]; ! ok {
1973+ return errors .New ("unknown mssql collector: " + name )
1974+ }
1975+ }
1976+
19681977 return nil
19691978}
19701979
@@ -2007,13 +2016,8 @@ func (c *Collector) execute(ctx *types.ScrapeContext, name string, fn mssqlColle
20072016func (c * Collector ) Collect (ctx * types.ScrapeContext , ch chan <- prometheus.Metric ) error {
20082017 wg := sync.WaitGroup {}
20092018
2010- enabled := slices .Compact (c .config .CollectorsEnabled )
2011-
2012- // Result must order, to prevent test failures.
2013- sort .Strings (enabled )
2014-
20152019 for sqlInstance := range c .mssqlInstances {
2016- for _ , name := range enabled {
2020+ for _ , name := range c . config . CollectorsEnabled {
20172021 function := c .mssqlCollectors [name ]
20182022
20192023 wg .Add (1 )
0 commit comments