Comments (8)
hi @joshskeen, we'll look into this. Could you please provide a code sample of how you are performing initialisation?
from dd-sdk-android.
AndroidTracer.Builder()
.setSampleRate(sampleRate)
.setBundleWithRumEnabled(true)
.build()
from dd-sdk-android.
Hi @joshskeen , I am following up on this thread. Indeed the device, env, geo and os information is not provided into the traces as we do it for RUM events and we do not plan to offer this by default due to performance reasons. On the other hand regarding the RUM context or session you do have this information in the Span info tab: view.id
, application_id
, session_id
.
For all the other information you could add it manually by using the global addTag
method in AndroidTracer
or the local method setTag
at the Span object level. For more information: https://docs.datadoghq.com/tracing/trace_collection/dd_libraries/android/?tab=kotlin
from dd-sdk-android.
@joshskeen one small note on what I stated above, if you use the RUM2APM feature, RUM will automatically create traces for each resource request in your application. Those traces will have by default the Geo, Os and Device information generated by us. For all the other traces created manually with our API the above statement can be applied.
from dd-sdk-android.
Thanks for the reply @mariusc83 . A few follow-up questions:
2. what is the RUM2APM feature? Can you link to the documentation for this please?
3. it appears that network traces collect context, device, env, geo, os, and session. If we omit these for performance reasons, why do we include them with these particular traces?
4. Rather than manually passing in these parameters to each manual trace, it would be ideal to specify which rum parameters would be included in each trace. Is there any mechanism to do this?
5. It appears that manually collected traces do not reference the RUM session they are collected within in the flame graph as a UI option, though setBundleWithRumEnabled is true. What additional details are required to enable this behavior in the trace flamegraph display?
Thanks!
from dd-sdk-android.
Hi John, let me chime in here .
- what is the RUM2APM feature? Can you link to the documentation for this please?
Sorry about the lingo, RUM2APM is our internal way of talking about the full tracing of network requests. This is due to the fact that the tracing originate through RUM instrumenting network requests via our browser and mobile SDK, and connecting it to the APM traces tracked in the backend to give a full picture. From a RUM session, one can dig into an APM trace and e.g.: understand what caused a 500 response. You can find more information about that on this page
- it appears that network traces collect context, device, env, geo, os, and session. If we omit these for performance reasons, why do we include them with these particular traces?
In the case of RUM2APM, the root span is generated from the RUM resource, meaning it uses the aggregation of all the attributes available in the backend ingesting the RUM session event, which is then duplicating all the attributes into the span, and then is forwarded to the APM processors.
When generating non-network spans in the mobile, the span doesn't go through the RUM processors, and is sent directly to the APM processors. Getting all of the informations available in RUM would require to also go through both stacks for all spans and not just the network ones.
- Rather than manually passing in these parameters to each manual trace, it would be ideal to specify which rum parameters would be included in each trace. Is there any mechanism to do this?
There's no mechanism to specify which parameters should be copied from RUM as of know, but if this is something important to you, feel free to open a feature request via our support channel.
- It appears that manually collected traces do not reference the RUM session they are collected within in the flame graph as a UI option, though setBundleWithRumEnabled is true. What additional details are required to enable this behavior in the trace flamegraph display?
This is an issue that we identified (we discussed this on slack) and is in our roadmap, we plan on fixing that as soon as possible
from dd-sdk-android.
Hello @joshskeen!
Version 2.5.0
should now have a better integration of manually collected traces with RUM, you should see a link between them in Dashboard. In the meantime we are working on improving this integration for data collected by the older SDKs.
from dd-sdk-android.
Hi @joshskeen! Following up on this: do you still need to get the device information at the span level? If yes, would you mind submitting a feature request so we can properly track this need plase? Cheers!
from dd-sdk-android.
Related Issues (20)
- integration issue HOT 1
- Lower than expected startup times since 2.6.0 HOT 2
- Logging: setNetworkInfoEnabled(false) doesn't seem to take effect HOT 5
- ANR on `Rum.enable()` HOT 6
- Rum works but logger don't send logs HOT 6
- Remove a default attribute HOT 2
- Crash generated by DrawableUtils HOT 2
- JankStatsActivityLifecycleListener.onActivityStopped - HOT 4
- setTelemetrySampleRate, explanation HOT 3
- Security vulnerability introduced with SDK v2.7.1 (okio) HOT 2
- Unable to log custom actions HOT 1
- Memory Leak : AggregatingVitalMonitor listeners are never unregistered HOT 3
- Missing DataDog events caused by UnknownError HOT 9
- Cannot implementation com.datadoghq:dd-sdk-android-logs HOT 4
- ./gradlew uploadMappingRelease crashes trying to upload mapping.txt file after release build HOT 2
- How to group views as Service? HOT 1
- Fragment views stopped getting registered HOT 1
- Crash gets assigned to wrong view HOT 1
- Fatal Exception: java.lang.IllegalStateException Recording currently in progress - missing #endRecording() call? HOT 3
- What's the preferred `DataDogInterceptor` sampling rate? HOT 1
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 dd-sdk-android.