elastic / elastic/apm

Spec: enhance dependencies granularity for other backends/dependencies

Open
#646 14 comments 0 reactions 0 assignees View on GitHub
8.4-candidate
Dominant language
Gherkin
Stars
427
Forks
125
PR merge metrics
No merged PRs in 30d

Description

This is a follow-up task of #621 that was focused on relational databases.

For other types of dependencies, we need to define the values for following fields:
- `span.destination.service.resource` (existing, kept for compatibility)
- `span.service.target.type` (introduced in #621)
- `span.service.target.name` (introduced in #621)

The specification will likely rely on the [tests/agents/json-specs/span_types.json](https://github.com/elastic/apm/blob/main/tests/agents/json-specs/span_types.json) file that defines the types and sub-types for each kind of backend service which appears in the map or dependencies.

The goal of this specification would be to fill the gaps and remove the question marks in this table :

For each row, we will have `service.target.type` = `subtype`.

| `type` | `subtype` | `destination.service.resource` | `service.target.name` | related PR/issue |
|:------------|:---------------------|---------------------------------------------|:----------------------|:------------------|
| `db` | `cassandra` | `casandra`, `casandra/${cluster}` | `${cluster}` | #654 |
| `db` | `cosmosdb` | ? | ? | #661 |
| `db` | `dynamodb` | `dynamodb`, `dynamodb/${cloud.region.name}` | `${cloud.region.name}` | #654 |
| `db` | `elasticsearch` | `elasticsearch`, `elasticsearch/${cluster}` | `${cluster}` | #654 |
| `db` | `graphql` | ? | ? | |
| `db` | `mongodb` | `mongodb`, `mongodb/${db.instance}` | `${db.instance}` | #654 |
| `db` | `memcached` | `memcached`, ? | ? | |
| `db` | `redis` | `redis`, ? | ? | |
| `external` | `dubbo` | `${host}:${port}` | `${host}:${port}` | |
| `external` | `grpc` | `${host}:${port}` | `${host}:${port}` | |
| `external` | `http` | `${host}:${port}` | `${host}:${port}` | |
| `external` | `ldap` | `ldap` | ? | |
| `messaging` | `azurequeue` | `azurequeue`, `azurequeue/${queue.name}` | | #655 |
| `messaging` | `azureservicebus` | `azureservicebus`, `azureservicebus/${queue.name}` (or `topic`). | | #655 |
| `messaging` | `jms` | `jms`, `jms/${queue.name}` | `${queue.name}` | #655 |
| `messaging` | `kafka` | `kafka`, `kafka/${queue.name}` | `${queue.name}` | #655 |
| `messaging` | `rabbitmq` | `rabbitmq`, `rabbitmq/${queue.name}` | `${queue.name}` | #655 |
| `messaging` | `sns` | | | #655 |
| `messaging` | `sqs` | | | #655 |
| `storage` | `azureblob` | | | |
| `storage` | `azurefile` | | | |
| `storage` | `azuretable` | | | |
| `storage` | `s3` | | ? | |

Given there is quite a lot to define, we might split it into smaller issues / PRs.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.