Inherit previous instance's stats in statsd plugin.
This way, after a reload, the stats wont restart again at least for the counter type. closes #887
This commit is contained in:
parent
386d5a3ccf
commit
8e671e0154
|
@ -26,6 +26,8 @@ const (
|
||||||
var dropwarn = "ERROR: Message queue full. Discarding line [%s] " +
|
var dropwarn = "ERROR: Message queue full. Discarding line [%s] " +
|
||||||
"You may want to increase allowed_pending_messages in the config\n"
|
"You may want to increase allowed_pending_messages in the config\n"
|
||||||
|
|
||||||
|
var prevInstance *Statsd
|
||||||
|
|
||||||
type Statsd struct {
|
type Statsd struct {
|
||||||
// Address & Port to serve from
|
// Address & Port to serve from
|
||||||
ServiceAddress string
|
ServiceAddress string
|
||||||
|
@ -234,10 +236,18 @@ func (s *Statsd) Start(_ telegraf.Accumulator) error {
|
||||||
// Make data structures
|
// Make data structures
|
||||||
s.done = make(chan struct{})
|
s.done = make(chan struct{})
|
||||||
s.in = make(chan []byte, s.AllowedPendingMessages)
|
s.in = make(chan []byte, s.AllowedPendingMessages)
|
||||||
|
|
||||||
|
if prevInstance == nil {
|
||||||
s.gauges = make(map[string]cachedgauge)
|
s.gauges = make(map[string]cachedgauge)
|
||||||
s.counters = make(map[string]cachedcounter)
|
s.counters = make(map[string]cachedcounter)
|
||||||
s.sets = make(map[string]cachedset)
|
s.sets = make(map[string]cachedset)
|
||||||
s.timings = make(map[string]cachedtimings)
|
s.timings = make(map[string]cachedtimings)
|
||||||
|
} else {
|
||||||
|
s.gauges = prevInstance.gauges
|
||||||
|
s.counters = prevInstance.counters
|
||||||
|
s.sets = prevInstance.sets
|
||||||
|
s.timings = prevInstance.timings
|
||||||
|
}
|
||||||
|
|
||||||
s.wg.Add(2)
|
s.wg.Add(2)
|
||||||
// Start the UDP listener
|
// Start the UDP listener
|
||||||
|
@ -245,6 +255,7 @@ func (s *Statsd) Start(_ telegraf.Accumulator) error {
|
||||||
// Start the line parser
|
// Start the line parser
|
||||||
go s.parser()
|
go s.parser()
|
||||||
log.Printf("Started the statsd service on %s\n", s.ServiceAddress)
|
log.Printf("Started the statsd service on %s\n", s.ServiceAddress)
|
||||||
|
prevInstance = s
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue