specification
specification copied to clipboard
RFC: Trace Identifiers
This is the Tracking issue for the Trace Identifiers RFC.
Proposal: https://github.com/opentracing/specification/blob/master/rfc/trace_identifiers.md
Summary
The OpenTracing SpanContext interface is extended to include SpanID
and TraceID
accessors.
The OpenTracing model of computation specifies two primary object types, Spans
and Traces
, but does not specify identifiers for these objects. Identifiers for the two primary object types make it easier to correlate tracing data with data in other systems, simplify important tasks, and allow the creation of reusable trace observers.
Current Status
Work is ready to begin, but there is one final bikeshed to paint: what to call these methods. SpanID
and TraceID
are the ideal names. However, these method names are already in use by some tracers, but with more specialized return types. Adding them to the SpanContext interface risks causing collisions and potentially creating breaking changes for some tracers. Using a slightly different method name would reduce the chance of a collision, at the expense of being... not TraceID
or SpanID
. Once we pick a satisfactory term, we can quickly add this feature to all of the OpenTracing APIs.
Let's debate naming conventions on gitter and see if we can get consensus.
Related Issues and Discussions
- [x] RFC https://github.com/opentracing/specification/blob/master/rfc/trace_identifiers.md
- [ ] Go https://github.com/opentracing/opentracing-go/issues/188
- [x] Java https://github.com/opentracing/opentracing-java/pull/280
- [x] Javascript https://github.com/opentracing/opentracing-javascript/pull/120
- [ ] Python
We may want to consider unwrapping as part of the same RFC. Typecasting will no longer be reliable if OpenTracing middleware becomes common.
Relevant Issues and PRs
- https://github.com/opentracing/opentracing-java/issues/282
- https://github.com/opentracing/opentracing-java/pull/211
For reference, this was added to the C# Tracer in https://github.com/opentracing/opentracing-csharp/pull/96
@austinlparker Wondering if the names should be updated to the latest that the Java API has (ToTraceId()
and ToSpanId()
) - something to consider ;)
I don’t think it’d really be idiomatic C#; TraceId and SpanId are both accessed via getter auto-properties on ISpanContext, which is imo where I’d expect them to be in C#.
On Mon, Oct 15, 2018 at 12:38 PM Carlos Alberto Cortez < [email protected]> wrote:
@austinlparker https://github.com/austinlparker Wondering if the names should be updated to the latest that the Java API has (ToTraceId() and ToSpanId()) - something to consider ;)
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/opentracing/specification/issues/123#issuecomment-429925629, or mute the thread https://github.com/notifications/unsubscribe-auth/AD8uxIXtNmEpASTZxlegRQorPgiwjAC9ks5ulLoBgaJpZM4VKTPA .
The to prefix signals that this these may not be simple properties but some implementations have to convert their internal representation to strings which results in memory allocations.
On Mon 15. Oct 2018 at 20:26, Austin Parker [email protected] wrote:
I don’t think it’d really be idiomatic C#; TraceId and SpanId are both accessed via getter auto-properties on ISpanContext, which is imo where I’d expect them to be in C#.
On Mon, Oct 15, 2018 at 12:38 PM Carlos Alberto Cortez < [email protected]> wrote:
@austinlparker https://github.com/austinlparker Wondering if the names should be updated to the latest that the Java API has (ToTraceId() and ToSpanId()) - something to consider ;)
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub < https://github.com/opentracing/specification/issues/123#issuecomment-429925629 , or mute the thread < https://github.com/notifications/unsubscribe-auth/AD8uxIXtNmEpASTZxlegRQorPgiwjAC9ks5ulLoBgaJpZM4VKTPA
.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/opentracing/specification/issues/123#issuecomment-429963156, or mute the thread https://github.com/notifications/unsubscribe-auth/ACEDCOYoN_p7iNczN_j5R1zj6OKbk7xYks5ulNNsgaJpZM4VKTPA .
I've forked this convo into the C# repo so we don't clog up this thread.
I really like this idea. Right now the fact that SpanContext is essentially empty in the opentracing interface is a little strange and leaves open too many things. Something like traceId and spanId accessors with common naming would be wonderful to put in this interface.
any movement on this?
Also curious about this one - with new tools like Grafana's Tempo that can correlate logs to traces and take you straight to the trace view from the log viewer, I definitely want to log the trace ID for that purpose.
I updated the status in the description - it's implemented in Java/JS only. The RFC was approved, but the spec was not updated.
Unlikely to see much traction here since all efforts moved to OpenTelemetry.
Thanks for the update! We don't yet have any tracing where I work, but I'm trying to champion it and get it going. I've experimented with both OpenTracing and OpenTelemetry, but thus far I've leaned towards OpenTracing due to otel-go not yet having a stable enough API. I think we can manage that though.