-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Visualize uninstrumented services in the dependency diagrams #3805
Conversation
@@ -71,6 +71,20 @@ func (m *Store) GetDependencies(ctx context.Context, endTs time.Time, lookback t | |||
trace, _ := m.deduper.Adjust(orig) | |||
if m.traceIsBetweenStartAndEnd(startTs, endTs, trace) { | |||
for _, s := range trace.Spans { | |||
// this finds unmanged peers of the service. So this are all external dependcies | |||
peer := m.findPeer(s) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will not address the issue in the ticket. While peer.service is a recommended tag, it's often impossible for the instrumentation to know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How you mean? What is the case this tag doesn't catch? And shouldn't this be more an issue for the collector? Shouldn't the observability layer trust the open telemetry spec?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or did you referring too the other informations that the open telemetry gives for peers?
Something like
- peer.port
- peer.ipv6
- peer.ipv4
- peer.hostname
- peer.address
So we should combine all these information for the key?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are two issues.
- You're force-adding a dependency based on the presence of
peer.service
tag regardless of whether the current node is the leaf in the call graph or an inner node that would produce a dependency anyway from its child span. - None of the tags you listed are actually required to be present in the span. In a typical HTTP client instrumentation, the instrumentation layer does not know the name of the downstream service, only its URL, so
peer.service
tag is likely to be missing, while otherpeer.*
tags might be present. We would need some heuristic function that would decide how to name the downstream service in this case.
closing stale PR |
Which problem is this PR solving?
This PR resolves the feature #3804 for the memory storage.
Short description of the changes
remote containers development
extension of vscode.It looks nice so far:
cc @yurishkuro