jaegertracing / jaeger-ui

Web UI for Jaeger
http://jaegertracing.io/
Apache License 2.0
1.1k stars 470 forks source link

Visualization of followsFrom relation #662

Open chrvo opened 3 years ago

chrvo commented 3 years ago

Requirement - what kind of business use case are you trying to solve?

We have multiple arbitration services that are called by multiple other service. All incoming messages are aggregated under certain conditions in a defined time window:

                             +----+
                             |    | Timer
                             v    |
                       +-------+  |
                       |       |  |
                       |   A   +--+
                       |   G   |
 Service A +---------> |   G   |
                       |   R   |    Result
 Service B +---------> |   E   | ------------->
                       |   G   |
 Service C +---------> |   A   |
                       |   T   |
                       |   E   |
                       |       |
                       +-------+

We generate a span for the result with links to the spans from all aggregated requests (OpenTelemetry Links which are exported als Jaeger followsFrom).

Problem - what in Jaeger blocks you from solving the requirement?

At moment, we have a bunch of different independent traces in the Jaeger which is not optimal for tracing the behavior.

Proposal - what do you suggest to solve the problem or improve the existing situation?

We generate a span for the result with links to the spans from all aggregated requests (OpenTelemetry Links which are exported als Jaeger followsFrom). At moment, we have a bunch of different independent traces in the Jaeger, which is quiet suboptiomal.

As the followsFrom links are not visualized yet, we brainstormed what visualization would help us.

  1. A link/followsFrom section in the span properties The section should be on the same level as Tags, Process and Logs and should contain HTML links to the spans that a) follows from and b) are followed from this span jaeger_links

  2. All linked traced should appear in the same trace view. With different "root nodes" in the Traceview This could be optionally with a "show linked traces" checkbox to enable it. mt

  3. Highlight linked (both ways) span on mouse over/selection events.

Any open questions to address

yurishkuro commented 3 years ago

+1 for the Links section - I thought we already implemented that. cc @rubenvp8510

However, there is another visual indication when you have a foreign SpanReference:

image

rubenvp8510 commented 3 years ago

Regarding of "Link" section I remember I've already implemented something similar in this PR: https://github.com/jaegertracing/jaeger-ui/pull/477

There should be a references accordion, but it will be showed only when the span has more than one reference, assuming that the first reference is the parent, and other ones could be child_off or follows_from. ( See on https://github.com/jaegertracing/jaeger-ui/pull/477/files#diff-847e772b786d5a6cdf1b72741721b570051516ac87338ad18bb6dc08472e9f56R143)

cg110 commented 3 years ago

I'm not sure if this is also the same issue I'm having, if a span is has a Follows_From reference then it gets a link etc to the span it follows from, which is good.

However, that followed span doesn't seem have any indication that it's been followed. So if you look at that span there's nothing to link it to the spans that follows. (I don't know if this is a backend limitation or UI issue)

It'd be great to have a link so you can find the "followers", or even better be able to have the multiple traces so the followed and followers can be on one.

In our case we've some async calls going on, and we get a callback once complete, in which we know the original span, and we either make that callback be a child (so all on one view) or follow_from the original span. Follow_from feels the right thing, as the callback should be it's own trace, but it looks better in the ui as a child.

Sushisource commented 2 years ago

Any update on this? I ran into this today and traces that are linked together are pretty much useless because there's no way to see which spans follow from the span you're looking at, only backlinks are represented in the UI.

Having a unified view of all spans that followed (ideally transitively as well) from some given span is I would suspect a use case that many, many people would care about.

ndrwrbgs commented 2 years ago

@yurishkuro what conditions make this experience surface?

+1 for the Links section - I thought we already implemented that. cc @rubenvp8510

However, there is another visual indication when you have a foreign SpanReference:

image

yurishkuro commented 2 years ago

When a span has span reference pointing to another trace.

jkowall commented 2 years ago

Should we close this out now @yurishkuro ?

yurishkuro commented 2 years ago

Yes, if OP has no further feedback

ndrwrbgs commented 2 years ago

I think there's enough context and +1 provided by others its still an open concern.

It turns out the link ui only shows when the span has more than one link, so in the case of follows from, you'd have to navigate to the child span manually and then it wouldn't have the pictured UI, but would have link inside the expanded view.

I believe OPs point was that there's no link back. I had to manually change how OpenTelemetry was emitting data, take independent control of the SDK and emit extra spans so that I could make a normal follows from, then a fake tie-between span that parented up to the follows from and the parent to get it to show in the UI.

Basically, right now, a follows_from span does not appear in the trace that it followed from (the causal span)

arun0009 commented 2 months ago

Is there a way to connect followsfrom together for viewing? Basically if I search for parent Trace Id I want to get results from anything that has been linked with followsfrom?

e.g. : Lambda sending something to SQS (first flow) - I see a trace here with few spans. Lambda consuming from SQS (second flow) - I see a trace here with few spans but also a link followsfrom "first flow".

How can I get both of them to show me so I can look at the complete flow? (using opentelemetry auto instrumentation js).

1 image