elastic / elastic/apm-agent-java

Allow adding transaction context fields via Public API

Ouverte
#433 9 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

agent-java
Langage dominant
Java
Étoiles
593
Forks
337
Merge moyen
1 j 13 h
PR mergées (30 j)
25

Description

**Describe the solution you'd like**
I would like for the Public API to support setting transaction context fields such as 'context.request.url.pathname' and 'context.user.user-agent' for transactions created via the Public API. Currently the Public API does not expose a way to set this information. This would be useful when integrating frameworks outside of the supported list (I'm currently in progress of trying to integrate Clojure's ring)

For me, the best solution would be to have a `Transaction#addContext` method in similar fashion as we have `Transaction#addTag`

```
Transaction tx = ElasticApm.startTransaction();
tx.addContext("request.url.pathname", "/hello");
tx.addContext("user.user-agent", "some-client");
```

Another option would be to add separate setters for each context field described here: https://www.elastic.co/guide/en/apm/server/current/exported-fields-apm.html#_context_fields but I feel having a single `addContext` would be the easiest to maintain over time.

**Describe alternatives you've considered**
I'm currently falling back to using `Transaction#addTag` to add this information to transactions. This works, but Kibana shows the information as a just flat list of key value pairs under "Tags". The Normally, `context.request.*` fields would be shown under "Request" tab with somewhat nicer presentation.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire la Public API autour de Transaction#addTag et comparez-la à la méthode Transaction#addContext demandée. Confirmez comment les champs de contexte de request et de user sont représentés et déterminez les tests nécessaires pour montrer que les valeurs définies via la Public API apparaissent dans les sections de contexte correspondantes, plutôt que sous Tags uniquement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api, backend
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.