Open Lms24 opened 1 month ago
Priority-wise this is rather low at the moment (as we discussed at our recent offsite event) but I figured I'd write down some ideas. We can revisit this whenever. Also curious on the performance team's perspective here.
I love this! I generally want as much telemetry as possible (within reason) and UI interactions are very important telemetry. I fully agree that sending a span for every click is impractical but I really like the suggested solutions!
Knowing which interaction started a network request, or a React render, or a custom span is really useful and good. SPAs do a lot of work after pageload/navigation, and I would love for this work to be instrumented, and sent. I want to know everything my app is doing, if possible, not just what happens after load.
IMO both the suggestions (heuristics around interactive elements, and only sending span trees if they have children) are acceptable! I'd love for a member of the EAP team to chime in about cardinality, because the EAP dataset has very strong support for high-cardinality data. Also we now have a Webpack plugin that annotates component names (lower cardinality), and we can try to do some ingest-side work to reduce cardinality if needed.
All I'm saying is that I really like this idea, I think it's really valuable, and I'd love to see it. I think it would be really good for the product and developers who use it!
Description
Our browser SDKs offer an experimental feature in
browserTracingIntegration
- interaction ~transactions~ spans.While the idea sounds great, in reality, they're currently a bit problematic and not yet robust enough to enable them by default:
Problems/Symptoms
ui.interaction
op. This is because we can't use the selector of the clicked element as a span name because it's high cardinality as, depending on the application, it can change very frequently.pageload
ornavigation
span.Solution Brainstorming
data-sentry-trace
attribute on the respective html element.ui.interaction.*
spans in the tree. Realistically, today, with our auto instrumentation, this would mean that we'd only send interaction spans if