prysm-pulse/monitoring/tracing
terencechain d17996f8b0
Update to V4 🚀 (#12134)
* Update V3 from V4

* Fix build v3 -> v4

* Update ssz

* Update beacon_chain.pb.go

* Fix formatter import

* Update update-mockgen.sh comment to v4

* Fix conflicts. Pass build and tests

* Fix test
2023-03-17 18:52:56 +00:00
..
BUILD.bazel Update to V4 🚀 (#12134) 2023-03-17 18:52:56 +00:00
errors.go Move Shared/ Subpackages Into Monitoring/ Folder (#9591) 2021-09-14 20:59:51 +00:00
README.md Move Shared/ Subpackages Into Monitoring/ Folder (#9591) 2021-09-14 20:59:51 +00:00
recovery_interceptor_option.go Move Shared/ Subpackages Into Monitoring/ Folder (#9591) 2021-09-14 20:59:51 +00:00
tracer.go Update to V4 🚀 (#12134) 2023-03-17 18:52:56 +00:00

How to view collected traces

Prerequisites:
  • Docker (For Jaeger image)
  • Go 1.11+ (For execution traces collected by pprof)
Using Jaeger

Tracing is disabled by default, to enable, you can use the option --enable-tracing. Jaeger endpoint can be configured with the --tracing-endpoint option and defaults to http://127.0.0.1:14268.

Run Jaeger:

$ docker run -d --name jaeger   -e COLLECTOR_ZIPKIN_HTTP_PORT=9411   -p 5775:5775/udp   -p 6831:6831/udp   -p 6832:6832/udp   -p 5778:5778   -p 16686:16686   -p 14268:14268   -p 9411:9411   jaegertracing/all-in-one:1.6

This will start the UI at http://localhost:16686

Using the Go tool

Tracing is disabled by default, to enable, you can use the option --enable-tracing. Run the application using the --pprof option to enable pprof (for trace collection).

To collect traces for 5 seconds:

$ curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out

View the trace with:

$ go tool trace trace.out
2018/05/04 10:39:59 Parsing trace...
2018/05/04 10:39:59 Splitting trace...
2018/05/04 10:39:59 Opening browser. Trace viewer is listening on http://127.0.0.1:51803

How to collect additional traces

We use the OpenCensus library to create traces. To trace the execution of a p2p message through the system, we must define spans around the code that handles the message. To correlate the trace with other spans defined for the same message, use the context passed inside the Message struct to create a span:

var msg p2p.Message
var mySpan *trace.Span
msg.Ctx, mySpan = trace.StartSpan(msg.Ctx, "myOperation")
myOperation()
mySpan.End()

Another example on how to define spans can be found here: https://godoc.org/go.opencensus.io/trace#example-StartSpan