Compare commits

...

2 Commits

Author SHA1 Message Date
Jan-Otto Kröpke
f6965b10f4 mssql: fix nil panic, if YAML file is used a configuration (#1570) 2024-08-14 08:28:46 +02:00
dependabot[bot]
d7f052fb27 chore(deps): bump golang.org/x/sys from 0.23.0 to 0.24.0 (#1566)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 14:24:45 +02:00
6 changed files with 49 additions and 24 deletions

2
go.mod
View File

@@ -17,7 +17,7 @@ require (
github.com/yusufpapurcu/wmi v1.2.4 github.com/yusufpapurcu/wmi v1.2.4
go.opencensus.io v0.24.0 // indirect go.opencensus.io v0.24.0 // indirect
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
golang.org/x/sys v0.23.0 golang.org/x/sys v0.24.0
gopkg.in/yaml.v3 v3.0.1 gopkg.in/yaml.v3 v3.0.1
) )

4
go.sum
View File

@@ -141,8 +141,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=

View File

@@ -120,10 +120,17 @@ func NewWithFlags(app *kingpin.Application) *Collector {
c := &Collector{ c := &Collector{
config: ConfigDefaults, config: ConfigDefaults,
} }
c.config.CollectorsEnabled = make([]string, 0)
var collectorsEnabled string
app.Flag("collectors.dfsr.sources-enabled", "Comma-separated list of DFSR Perflib sources to use."). app.Flag("collectors.dfsr.sources-enabled", "Comma-separated list of DFSR Perflib sources to use.").
Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringsVar(&c.config.CollectorsEnabled) Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringVar(&collectorsEnabled)
app.Action(func(*kingpin.ParseContext) error {
c.config.CollectorsEnabled = strings.Split(collectorsEnabled, ",")
return nil
})
return c return c
} }

View File

@@ -111,6 +111,7 @@ func NewWithFlags(app *kingpin.Application) *Collector {
c.config.CollectorsEnabled = make([]string, 0) c.config.CollectorsEnabled = make([]string, 0)
var listAllCollectors bool var listAllCollectors bool
var collectorsEnabled string
app.Flag( app.Flag(
"collectors.exchange.list", "collectors.exchange.list",
@@ -120,7 +121,7 @@ func NewWithFlags(app *kingpin.Application) *Collector {
app.Flag( app.Flag(
"collectors.exchange.enabled", "collectors.exchange.enabled",
"Comma-separated list of collectors to use. Defaults to all, if not specified.", "Comma-separated list of collectors to use. Defaults to all, if not specified.",
).Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringsVar(&c.config.CollectorsEnabled) ).Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringVar(&collectorsEnabled)
app.PreAction(func(*kingpin.ParseContext) error { app.PreAction(func(*kingpin.ParseContext) error {
if listAllCollectors { if listAllCollectors {
@@ -152,6 +153,12 @@ func NewWithFlags(app *kingpin.Application) *Collector {
return nil return nil
}) })
app.Action(func(*kingpin.ParseContext) error {
c.config.CollectorsEnabled = strings.Split(collectorsEnabled, ",")
return nil
})
return c return c
} }

View File

@@ -6,7 +6,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"os" "os"
"slices"
"sort" "sort"
"strings" "strings"
"sync" "sync"
@@ -437,9 +436,9 @@ func NewWithFlags(app *kingpin.Application) *Collector {
c := &Collector{ c := &Collector{
config: ConfigDefaults, config: ConfigDefaults,
} }
c.config.CollectorsEnabled = make([]string, 0)
var listAllCollectors bool var listAllCollectors bool
var collectorsEnabled string
app.Flag( app.Flag(
"collectors.mssql.class-print", "collectors.mssql.class-print",
@@ -449,7 +448,7 @@ func NewWithFlags(app *kingpin.Application) *Collector {
app.Flag( app.Flag(
"collectors.mssql.classes-enabled", "collectors.mssql.classes-enabled",
"Comma-separated list of mssql WMI classes to use.", "Comma-separated list of mssql WMI classes to use.",
).Default(strings.Join(ConfigDefaults.CollectorsEnabled, ",")).StringsVar(&c.config.CollectorsEnabled) ).Default(strings.Join(c.config.CollectorsEnabled, ",")).StringVar(&collectorsEnabled)
app.PreAction(func(*kingpin.ParseContext) error { app.PreAction(func(*kingpin.ParseContext) error {
if listAllCollectors { if listAllCollectors {
@@ -468,6 +467,12 @@ func NewWithFlags(app *kingpin.Application) *Collector {
return nil return nil
}) })
app.Action(func(*kingpin.ParseContext) error {
c.config.CollectorsEnabled = strings.Split(collectorsEnabled, ",")
return nil
})
return c return c
} }
@@ -480,16 +485,11 @@ func (c *Collector) SetLogger(logger log.Logger) {
} }
func (c *Collector) GetPerfCounter() ([]string, error) { func (c *Collector) GetPerfCounter() ([]string, error) {
enabled := slices.Compact(c.config.CollectorsEnabled)
// Result must order, to prevent test failures.
sort.Strings(enabled)
c.mssqlInstances = getMSSQLInstances(c.logger) c.mssqlInstances = getMSSQLInstances(c.logger)
perfCounters := make([]string, 0, len(c.mssqlInstances)*len(enabled)) perfCounters := make([]string, 0, len(c.mssqlInstances)*len(c.config.CollectorsEnabled))
for instance := range c.mssqlInstances { for instance := range c.mssqlInstances {
for _, c := range enabled { for _, c := range c.config.CollectorsEnabled {
perfCounters = append(perfCounters, mssqlGetPerfObjectName(instance, c)) perfCounters = append(perfCounters, mssqlGetPerfObjectName(instance, c))
} }
} }
@@ -502,6 +502,9 @@ func (c *Collector) Close() error {
} }
func (c *Collector) Build() error { func (c *Collector) Build() error {
// Result must order, to prevent test failures.
sort.Strings(c.config.CollectorsEnabled)
// meta // meta
c.mssqlScrapeDurationDesc = prometheus.NewDesc( c.mssqlScrapeDurationDesc = prometheus.NewDesc(
prometheus.BuildFQName(types.Namespace, Name, "collector_duration_seconds"), prometheus.BuildFQName(types.Namespace, Name, "collector_duration_seconds"),
@@ -1965,6 +1968,12 @@ func (c *Collector) Build() error {
c.mssqlCollectors = c.getMSSQLCollectors() c.mssqlCollectors = c.getMSSQLCollectors()
for _, name := range c.config.CollectorsEnabled {
if _, ok := c.mssqlCollectors[name]; !ok {
return errors.New("unknown mssql collector: " + name)
}
}
return nil return nil
} }
@@ -2007,13 +2016,8 @@ func (c *Collector) execute(ctx *types.ScrapeContext, name string, fn mssqlColle
func (c *Collector) Collect(ctx *types.ScrapeContext, ch chan<- prometheus.Metric) error { func (c *Collector) Collect(ctx *types.ScrapeContext, ch chan<- prometheus.Metric) error {
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
enabled := slices.Compact(c.config.CollectorsEnabled)
// Result must order, to prevent test failures.
sort.Strings(enabled)
for sqlInstance := range c.mssqlInstances { for sqlInstance := range c.mssqlInstances {
for _, name := range enabled { for _, name := range c.config.CollectorsEnabled {
function := c.mssqlCollectors[name] function := c.mssqlCollectors[name]
wg.Add(1) wg.Add(1)

View File

@@ -78,12 +78,19 @@ func NewWithFlags(app *kingpin.Application) *Collector {
c := &Collector{ c := &Collector{
config: ConfigDefaults, config: ConfigDefaults,
} }
c.config.TextFileDirectories = make([]string, 0)
var textFileDirectories string
app.Flag( app.Flag(
"collector.textfile.directories", "collector.textfile.directories",
"Directory or Directories to read text files with metrics from.", "Directory or Directories to read text files with metrics from.",
).Default(strings.Join(ConfigDefaults.TextFileDirectories, ",")).StringsVar(&c.config.TextFileDirectories) ).Default(strings.Join(ConfigDefaults.TextFileDirectories, ",")).StringVar(&textFileDirectories)
app.Action(func(*kingpin.ParseContext) error {
c.config.TextFileDirectories = strings.Split(textFileDirectories, ",")
return nil
})
return c return c
} }