Comments (6)
I do agree that in some scenarios like sidecar maybe skipping this is the right thing, but if we have a "standalone service" which is not a proxy/lb/sidecar, would be good to know this info.
Happy to have these kind of comments/recommendations. Also maybe making this an "optional" flag, and service owner can decide to set this or not based on the fact that the service type would make sense. So not having the flag set it does not mean that your parent is traced but that the parent is a "relevant" service (or how we call it).
I do agree that there are caveats, but I do also see a gap here, and would like to have a solution that at least works for real cases like we have in my current company :).
from trace-context.
My concern with this is what it means to be a "service". Is istio sidecar a service? Should it set this bit? If it doesn't, how about a standalone proxy like nginx?
from trace-context.
Sorry for the late reply. We discussed this in a working group meeting. It would be helpful to describe possible use cases in more detail. There is a description about that in the "How does this help?" section already, but so far it remains a bit vague.
Knowing that the parent participates or not into the trace is a critical information that can be used by the backend when showing parent child relationships and to inform the user about the correct connection between the services. In this case what the backend may do is just to inform the user that there are intermediate services that are not participating in the trace (backend cannot know about how many, what other services are doing since they decided to not participate in the trace).
So the only information a downstream service can get from this is whether or not there were any intermediate services, but no additional context or information. How would an observability backend use this information? How is displaying this helpful for users of an observability product? Do you have examples of real world use cases for that information?
and would like to have a solution that at least works for real cases like we have in my current company :).
Can you expand on that real world use case?
from trace-context.
This can be achieved by utilizing tracestate
. Also tracestate approach is better (as discussed today at the meeting) in another use case where "proxy" service retries and want to append the retry # into tracestate without changing traceparent. Multi-value tracestate key/value pair will work better than a boolean flag.
from trace-context.
This can be achieved by utilizing tracestate. Also tracestate approach is better (as discussed today at the meeting) in another use case where "proxy" service retries and want to append the retry # into tracestate without changing traceparent. Multi-value tracestate key/value pair will work better than a boolean flag.
Feedback:
This will not work for us unless the tracestate
is somehow standardized as well. Even for the number of retries
what is the "key" in the tracestate used? Same here, what is the key used for this? How do a proxy provider like envoy agree with a service provider like Snowflake on that key?
from trace-context.
@SergeyKanzhelev ping on this
from trace-context.
Related Issues (20)
- Adopt either span-id or parent-id for section headings HOT 4
- When headers should be propagated in browsers should be made more clear HOT 2
- Change the defining document for HTTP from RFC7230 to RFC9110 HOT 2
- Update tests to test Trace Context level 2 by default
- Incorporate Level 2 changes (random trace id flag) into traceresponse header in Level 3
- Add more normative text for flags processing in traceresponse
- Level 3 spec: Update privacy section to include information about traceresponse headers.
- Random part of trace ID should be uniformly distributed HOT 3
- Autopublishing level2/Level3 specs need to work with multiple markdown files HOT 2
- Document handling of tracestate duplicate keys HOT 6
- Does this specification define a way to handle retries? HOT 4
- Proposal: Allow common base64 encoding in tracestate values HOT 5
- Should tracing headers be included in 304 Not Modified responses? HOT 14
- Revisit header name -- Server-Timing vs. traceresponse HOT 9
- Server-timing names HOT 6
- Remove all markdown includes
- Can Traceresponse enable parent-child relationship between browser and server spans?
- Trace Context Extensibility HOT 7
- request for clarification re size of parent-id HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from trace-context.