42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package vsphere
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/influxdata/telegraf/selfstat"
|
|
)
|
|
|
|
// stopwatch is a simple helper for recording timing information, such as gather times and discovery times.
|
|
type stopwatch struct {
|
|
stat selfstat.Stat
|
|
start time.Time
|
|
}
|
|
|
|
// newStopwatch creates a new StopWatch and starts measuring time its creation.
|
|
func newStopwatch(name, vCenter string) *stopwatch {
|
|
return &stopwatch{
|
|
stat: selfstat.RegisterTiming("vsphere", name+"_ns", map[string]string{"vcenter": vCenter}),
|
|
start: time.Now(),
|
|
}
|
|
}
|
|
|
|
// newStopwatchWithTags creates a new StopWatch and starts measuring time its creation. Allows additional tags.
|
|
func newStopwatchWithTags(name, vCenter string, tags map[string]string) *stopwatch {
|
|
tags["vcenter"] = vCenter
|
|
return &stopwatch{
|
|
stat: selfstat.RegisterTiming("vsphere", name+"_ns", tags),
|
|
start: time.Now(),
|
|
}
|
|
}
|
|
|
|
// stop stops a stopwatch and records the time.
|
|
func (s *stopwatch) stop() {
|
|
s.stat.Set(time.Since(s.start).Nanoseconds())
|
|
}
|
|
|
|
// sendInternalCounterWithTags is a convenience method for sending non-timing internal metrics. Allows additional tags
|
|
func sendInternalCounterWithTags(name, vCenter string, tags map[string]string, value int64) {
|
|
tags["vcenter"] = vCenter
|
|
s := selfstat.Register("vsphere", name, tags)
|
|
s.Set(value)
|
|
}
|