diff --git a/probe/awsecs/reporter.go b/probe/awsecs/reporter.go index 6a4c1fd27..9a6e2321c 100644 --- a/probe/awsecs/reporter.go +++ b/probe/awsecs/reporter.go @@ -1,6 +1,7 @@ package awsecs import ( + "fmt" "time" log "github.com/Sirupsen/logrus" @@ -26,8 +27,8 @@ var ( serviceMetadata = report.MetadataTemplates{ Cluster: {ID: Cluster, Label: "Cluster", From: report.FromLatest, Priority: 0}, CreatedAt: {ID: CreatedAt, Label: "Created At", From: report.FromLatest, Priority: 1, Datatype: "datetime"}, - ServiceDesiredCount: {ID: ServiceDesiredCount, Label: "Desired Task Count", From: report.FromLatest, Priority: 2, Datatype: "number"}, - ServiceRunningCount: {ID: ServiceRunningCount, Label: "Running Task Count", From: report.FromLatest, Priority: 3, Datatype: "number"}, + ServiceDesiredCount: {ID: ServiceDesiredCount, Label: "Desired Tasks", From: report.FromLatest, Priority: 2, Datatype: "number"}, + ServiceRunningCount: {ID: ServiceRunningCount, Label: "Running Tasks", From: report.FromLatest, Priority: 3, Datatype: "number"}, } ) @@ -75,7 +76,7 @@ func getLabelInfo(rpt report.Report) map[string]map[string]*taskLabelInfo { return results } -// Reporter implements Tagger +// Reporter implements Tagger, Reporter type Reporter struct { } @@ -106,10 +107,10 @@ func (Reporter) Tag(rpt report.Report) (report.Report, error) { // Create all the services first for serviceName, service := range ecsInfo.services { serviceID := report.MakeECSServiceNodeID(serviceName) - rpt.ECSService = rpt.ECSService.AddNode(report.MakeNodeWith(serviceID, map[string]string{ // TODO add task metadata + rpt.ECSService = rpt.ECSService.AddNode(report.MakeNodeWith(serviceID, map[string]string{ Cluster: cluster, - ServiceDesiredCount: string(*service.DesiredCount), - ServiceRunningCount: string(*service.RunningCount), + ServiceDesiredCount: fmt.Sprintf("%d", *service.DesiredCount), + ServiceRunningCount: fmt.Sprintf("%d", *service.RunningCount), })) } log.Debugf("Created %v ECS service nodes", len(ecsInfo.services)) @@ -151,7 +152,17 @@ func (Reporter) Tag(rpt report.Report) (report.Report, error) { return rpt, nil } -// Name needed for Tagger +// Report needed for Reporter +func (Reporter) Report() (report.Report, error) { + result := report.MakeReport() + taskTopology := report.MakeTopology().WithMetadataTemplates(taskMetadata) + result.ECSTask = result.ECSTask.Merge(taskTopology) + serviceTopology := report.MakeTopology().WithMetadataTemplates(serviceMetadata) + result.ECSService = result.ECSService.Merge(serviceTopology) + return result, nil +} + +// Name needed for Tagger, Reporter func (r Reporter) Name() string { return "awsecs" } diff --git a/prog/probe.go b/prog/probe.go index 66a9e36eb..dd49881c7 100644 --- a/prog/probe.go +++ b/prog/probe.go @@ -206,7 +206,9 @@ func probeMain(flags probeFlags, targets []appclient.Target) { } if flags.ecsEnabled { - p.AddTagger(awsecs.Reporter{}) + reporter := awsecs.Reporter{} + p.AddReporter(reporter) + p.AddTagger(reporter) } if flags.weaveEnabled {