54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 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())
 | |
| }
 | |
| 
 | |
| // SendInternalCounter is a convenience method for sending
 | |
| // non-timing internal metrics.
 | |
| func SendInternalCounter(name, vCenter string, value int64) {
 | |
| 	s := selfstat.Register("vsphere", name, map[string]string{"vcenter": vCenter})
 | |
| 	s.Set(value)
 | |
| }
 | |
| 
 | |
| // 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)
 | |
| }
 |