Do an initial run of the collectors, so that you don't

have to wait 60s to see the first values.
This commit is contained in:
Brian Brazil 2014-05-23 13:07:34 +01:00
parent b959697368
commit bf39ec5bf1

View file

@ -50,6 +50,9 @@ func main() {
go serveStatus(registry)
log.Printf("Starting initial collection")
collect(collectors)
tick := time.Tick(*interval)
for {
select {
@ -63,15 +66,7 @@ func main() {
case <-tick:
log.Printf("Starting new interval")
wg := sync.WaitGroup{}
wg.Add(len(collectors))
for _, c := range collectors {
go func(c collector.Collector) {
Execute(c)
wg.Done()
}(c)
}
wg.Wait()
collect(collectors)
case <-sigUsr1:
log.Printf("got signal")
@ -120,6 +115,18 @@ func serveStatus(registry prometheus.Registry) {
http.ListenAndServe(*listeningAddress, exp.DefaultCoarseMux)
}
func collect(collectors []collector.Collector) {
wg := sync.WaitGroup{}
wg.Add(len(collectors))
for _, c := range collectors {
go func(c collector.Collector) {
Execute(c)
wg.Done()
}(c)
}
wg.Wait()
}
func Execute(c collector.Collector) {
begin := time.Now()
updates, err := c.Update()