-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Open
Milestone
Description
Master issue for adding comprehensive tracing throughout the go-ipfs codebase.
Some requirements:
- End users and gateway operators should be able to trace costly work units throughout the various parts of the go-ipfs internals
- Should fit into a larger distributed tracing story if go-ipfs is part of a larger system
- Traces all the types of subsystems
- Synchronous work done as part of requests such as gateway requests
- Async workers that service sync requests
- Async workers that aren't involved in synchronous requests
- DHT background work
- Work done at daemon startup
- libp2p
- Pluggable into different tracing backends
- Easy to instrument existing un-instrumented code
- Easy to instrument new code such as plugins, new interface implementations, etc.
- Random sampling knob to tune perf/observability tradeoff
I plan to implement this against OpenTelemetry. Tactically I want to start at a high level (e.g. gateway reqs) and iteratively work down into the guts, driven by trying to answer questions about real requests so that we are instrumenting the right things.
Some related issues:
- context/tracing in the blockstore/datastore pipeline #6803
- Towards better tracking of gateway performance #5783
Todos:
- Add tracer provider in go-ipfs w/ exporter configs, and add gateway and CoreAPI tracing
- Deploy to public gateways
- Add tracing in subsystems (incomplete list)
- go-bitswap
- go-namesys
- go-datastore
- go-libp2p-kad-dht
- libp2p subsystems
- The Provider API needs a context plumbed through to go-ipfs-provider
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels