elastic / apm-agent-rum-js

https://www.elastic.co/guide/en/apm/agent/rum-js/current/index.html
MIT License
275 stars 133 forks source link

Support for transaction parentIds in Elastic Rum agent #1520

Open pedrogranja opened 1 month ago

pedrogranja commented 1 month ago

In the context of a web extension, we are using the Elastic RUM agent. We created an agent in both the "FE" of the web extension and in the service worker of the web extension and we would now like to relate the transaction from both processes.

In order to do this, I'm passing the parent id and trace id of the span that I wish to correlate my new transaction with in the service worker. in more concrete details, I'm doing the following:

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
...
transaction.parentId = message.parentId;
transaction.traceId = message.traceId;
...
}

This didn't work out of the box, and I found that it was due to the truncation happening in the performance-monitoring.js file discarding the parent ids, causing them to not be passed onto the APM Server. To allow for my scenario I added, the parentId mapping, in the file, as such:

id: transaction.id,
trace_id: transaction.traceId,
session: transaction.session,
name: transaction.name,
type: transaction.type,
duration: transaction.duration(),
spans: spans,
context: transaction.context,
marks: transaction.marks,
breakdown: transaction.breakdownTimings,
span_count: {
  started: spans.length
},
sampled: transaction.sampled,
sample_rate: transaction.sampleRate,
experience: transaction.experience,
outcome: transaction.outcome,
**parent_id: transaction.parentId** <- added this line

From your support, I see that there was a discussion around this subject in this issue: https://github.com/elastic/apm-agent-rum-js/issues/1267 and at the time, you didn't consider this change due to a lack of use cases. I believe that my use case is valid and from my experience it is possible to use your agent in the service workers using some polyfills. Could this change be considered now?

Thank you!

pedrogranja commented 1 month ago

Any idea on this?