diff --git a/script_exporter.go b/script_exporter.go index badabcc..c5d0be3 100644 --- a/script_exporter.go +++ b/script_exporter.go @@ -11,6 +11,7 @@ import ( "os" "os/exec" "regexp" + "sync" "time" "github.com/prometheus/client_golang/prometheus" @@ -69,12 +70,16 @@ func runScript(script *Script) error { } func runScripts(scripts []*Script) []*Measurement { + var wg sync.WaitGroup + measurements := make([]*Measurement, 0) ch := make(chan *Measurement) for _, script := range scripts { + wg.Add(1) go func(script *Script) { + defer wg.Done() start := time.Now() success := 0 err := runScript(script) @@ -95,6 +100,8 @@ func runScripts(scripts []*Script) []*Measurement { }(script) } + wg.Wait() + for i := 0; i < len(scripts); i++ { measurements = append(measurements, <-ch) } @@ -177,10 +184,13 @@ func main() { log.Infof("Loaded %d script configurations", len(config.Scripts)) + var probePathLinks string for _, script := range config.Scripts { if script.Timeout == 0 { script.Timeout = 15 } + probePathLinks += + `