Add tracing spans to app

Also log things like number of nodes in Map, total number of reports.
This commit is contained in:
Bryan Boreham
2018-10-11 15:22:38 +00:00
parent b84622cb0d
commit 8693f0ab08
6 changed files with 49 additions and 0 deletions
+13
View File
@@ -3,6 +3,9 @@ package render
import (
"context"
opentracing "github.com/opentracing/opentracing-go"
otlog "github.com/opentracing/opentracing-go/log"
"github.com/weaveworks/scope/report"
)
@@ -51,6 +54,8 @@ func (ts Transformers) Transform(nodes Nodes) Nodes {
// Render renders the report and then transforms it
func Render(ctx context.Context, rpt report.Report, renderer Renderer, transformer Transformer) Nodes {
span, ctx := opentracing.StartSpanFromContext(ctx, "Render:"+typeName(renderer))
defer span.Finish()
return transformer.Transform(renderer.Render(ctx, rpt))
}
@@ -65,6 +70,8 @@ func MakeReduce(renderers ...Renderer) Renderer {
// Render produces a set of Nodes given a Report.
func (r Reduce) Render(ctx context.Context, rpt report.Report) Nodes {
span, ctx := opentracing.StartSpanFromContext(ctx, "Reduce.Render")
defer span.Finish()
l := len(r)
switch l {
case 0:
@@ -74,7 +81,9 @@ func (r Reduce) Render(ctx context.Context, rpt report.Report) Nodes {
for _, renderer := range r {
renderer := renderer // Pike!!
go func() {
span, ctx := opentracing.StartSpanFromContext(ctx, typeName(renderer))
c <- renderer.Render(ctx, rpt)
span.Finish()
}()
}
for ; l > 1; l-- {
@@ -101,6 +110,8 @@ func MakeMap(f MapFunc, r Renderer) Renderer {
// Render transforms a set of Nodes produces by another Renderer.
// using a map function
func (m Map) Render(ctx context.Context, rpt report.Report) Nodes {
span, ctx := opentracing.StartSpanFromContext(ctx, "Map.Render:"+functionName(m.MapFunc))
defer span.Finish()
var (
input = m.Renderer.Render(ctx, rpt)
output = newJoinResults(nil)
@@ -113,6 +124,8 @@ func (m Map) Render(ctx context.Context, rpt report.Report) Nodes {
output.add(inRenderable.ID, outRenderable)
}
}
span.LogFields(otlog.Int("input.nodes", len(input.Nodes)),
otlog.Int("ouput.nodes", len(output.nodes)))
return output.result(input)
}