diff --git a/application/application.go b/application/application.go index 47f7a67..c82796b 100644 --- a/application/application.go +++ b/application/application.go @@ -23,7 +23,6 @@ func New(application, service string) Tags { // Map with all values func (a Tags) Map() map[string]string { allTags := make(map[string]string) - allTags["application"] = a.Application allTags["service"] = a.Service allTags["cluster"] = a.Cluster @@ -32,6 +31,5 @@ func (a Tags) Map() map[string]string { for k, v := range a.CustomTags { allTags[k] = v } - return allTags } diff --git a/application/heartbeater.go b/application/heartbeater.go index ecdad02..cf99de2 100644 --- a/application/heartbeater.go +++ b/application/heartbeater.go @@ -16,17 +16,19 @@ type heartbeater struct { sender senders.Sender application Tags source string + components []string ticker *time.Ticker stop chan bool } // StartHeartbeatService will create and start a new HeartbeatService -func StartHeartbeatService(sender senders.Sender, application Tags, source string) HeartbeatService { +func StartHeartbeatService(sender senders.Sender, application Tags, source string, components ...string) HeartbeatService { hb := &heartbeater{ sender: sender, application: application, source: source, + components: components, ticker: time.NewTicker(5 * time.Minute), stop: make(chan bool, 1), } @@ -43,7 +45,6 @@ func StartHeartbeatService(sender senders.Sender, application Tags, source strin }() hb.beat() - return hb } @@ -54,6 +55,15 @@ func (hb *heartbeater) Close() { func (hb *heartbeater) beat() { tags := hb.application.Map() tags["component"] = "wavefront-generated" + hb.send(tags) + + for _, component := range hb.components { + tags["component"] = component + hb.send(tags) + } +} + +func (hb *heartbeater) send(tags map[string]string) { err := hb.sender.SendMetric("~component.heartbeat", 1, 0, hb.source, tags) if err != nil { log.Printf("heartbeater SendMetric error: %v\n", err)