Improve Granularity for SQL Databases
There are two parts to improving the granularity for SQL Databases:
- adding new fields to agent-server protocol, for now it's mostly to future-proof the captured data as we have to keep existing fields for compatibility with UI.
- capture values for those new fields on SQL Databases, which is actually providing better granularity to the end-user.
Each step can be completed independently, but this task will be considered complete when both parts are completed.
First step : add new service fields
- Add and capture values for
span.context.service.target.typeandspan.context.service.target.namefor exit spans. - Infer from those new fields the value of
span.destination.service.resourceand keep sending it. - Add
service_target_*fields to dropped spans metrics: addservice_target_typeandservice_target_namenext todestination_service_resourceintransaction.dropped_spans_statsarray, the related metrics documents should includespan.service.target.typeandspan.service.target.namefields. - Handle span compression with new fields (stop relying on
resourceinternally)
Second step : capture values for new fields
Spec issue
- [x] https://github.com/elastic/apm/issues/622
Agent issues
- [x] https://github.com/elastic/apm-agent-java/issues/2541
- [x] https://github.com/elastic/apm-agent-dotnet/issues/1664
- [x] https://github.com/elastic/apm-agent-go/issues/1233
- [x] https://github.com/elastic/apm-agent-nodejs/issues/2621
- [x] https://github.com/elastic/apm-agent-python/issues/1497
- [ ] https://github.com/elastic/apm-agent-ruby/issues/1244
- [x] https://github.com/elastic/apm-agent-php/issues/647
@AlexanderWert What if the agent doesn't detect the apm server version, how can it know which field to send?
I think agents should default to sending all three fields and if they detect that the APM Server they're connected to is new, they MAY drop the old field. But it's also totally fine to always send all fields, IMO.
Thanks, @felixbarny. @AlexanderWert if you agree, I'll update the description to reflect Felix's input.
Ideally, I think the description and this discussion should happen on the spec PR. Otherwise, it may get out-of-sync.