Alignment of span type/subtype
This is a meta-issue to describe all the known alignment issues/inconsistencies with span type / subtype
The current state of specification is stored in tests/agents/json-specs/span_types.json in JSON format.
For convenience, we will refer to span type & subtype as type/subtype.
This issue description will be modified when alignment progresses.
List of things that need improvement/simplification/alignment
- [ ] create a generic subtype in
appfor internal delegation that is not framework/library specific: we currently haveapp/mailer,app/controller,app/resourceandapp/graphql#513 - [ ] create a dedicated
external/emailfor spans that send emails (would replaceapp/mailer) - [ ] remove
json/parseandjson/generateas it's only used by ruby, span naming might be enough. deprecated in #513 - [ ] no strict specification for
template/*, thus any value will be accepted as subtype, listing all known values for each platform is required to replace this with an exhaustive list, or we could replace it with a generic subtype. - [ ] move
websockettoexternal/websocket - [ ] merge
db/sqllitewithdb/sqlite3deprecated in #513 - [ ] merge
db/sqlserveranddb/mssqldeprecated in #513 - [ ] remove fields deprecated in #513
Process
- https://github.com/elastic/apm/issues/555
| Agent | Add automated span type/subtype checking against shared spec |
|---|---|
| Java | |
| dot-net | |
| Go | |
| PHP | |
| Ruby | |
| NodeJS | |
| Python |
- add required type & subtypes the the JSON definition to make tests pass, open PRs (reviews optional)
- When merging spec PRs, add known inconsistencies to the list above (if required)
- discuss alignment through comments in this issue
- goto step 2
@elastic/apm-agent-ruby there could be a few quick wins here:
- use
external/emailinstead ofapp/mailer - merge
db/sqllitewithdb/sqlite3
For json/* I think we could use a generic subtype of app (the one we need to find a good name for), using span name should be enough for the end user to know it's about JSON read/write operations.
Completely agree, @SylvainJuge. Good ideas 👍
Proposal for internal delegation spans, simply call them app/internal (which would somehow align with Otel internal spans).
Adding app/internal for generic spans: https://github.com/elastic/apm/pull/513 + few other alignment changes.