Skip to main content
Les namespaces sont un moyen de regrouper les incidents d’erreur, les incidents de performance et les métriques des actions. AppSignal utilise trois namespaces par défaut :
  • web pour les requêtes web
  • frontend pour le JavaScript front-end
  • background pour les jobs en arrière-plan
Les applications peuvent avoir un nombre quelconque de namespaces, par exemple, vous pouvez avoir un namespace distinct pour le panneau d’administration, l’API ou les tâches planifiées de votre application. Ce guide vous décrira les étapes nécessaires pour rapporter des actions dans des namespaces personnalisés.
Vous voulez en savoir plus sur l’utilisation des namespaces ? Consultez cette liste : Que pouvez-vous faire avec les espaces de noms ?
App Graphs Namespaces

L'image ci-dessus montre des exemples de graphiques avec plusieurs namespaces, en séparant une API GraphQL et le namespace Web.

Configurer les namespaces

Les namespaces sont définis par le code de votre application. Avec de petits assistants, vous pouvez personnaliser le namespace d’une action. Ce guide vous apprendra à diviser les requêtes en différents namespaces. Pour ce guide, nous créerons un namespace « admin » et un namespace « critical » pour les jobs en arrière-plan.
Les noms de namespaces ne peuvent contenir que des lettres (a-z) et des underscores
Nous ne recommandons pas d’avoir plus de 15 namespaces par application.

Configurations par langage

Ruby

Dans Rails, nous pouvons utiliser le callback before_action pour appeler une méthode avant qu’une requête ne soit traitée. Dans l’exemple de code ci-dessous, nous avons créé un before_action qui appelle la méthode set_appsignal_namespace. Dans cette méthode, nous appelons la méthode d’assistance Appsignal.set_namespace pour configurer « admin » comme namespace pour cette requête. Cela fonctionne également si d’autres contrôleurs sont des sous-classes du AdminController.
Ensuite, nous définirons le namespace du code exécuté par les workers d’arrière-plan Sidekiq de notre application. Pour correctement attribuer un namespace aux erreurs déclenchées dans notre worker d’arrière-plan, nous devons définir le namespace avant l’exécution de tout autre code. Dans l’exemple de code Sidekiq worker ci-dessous, nous le faisons immédiatement dans la méthode perform à la ligne 7.
Il est également possible de configurer le namespace lors de la création d’une transaction à l’aide de l’assistant Appsignal.monitor. Il accepte le namespace comme argument nommé.
Pour les transactions déjà créées, vous pouvez utiliser la méthode set_namespace pour configurer le namespace de la transaction, comme dans l’exemple ci-dessous :
Remarque sur l’emplacement des assistants
Les assistants set_namespace utilisés dans ce guide peuvent être appelés dans n’importe quelle action faisant partie d’un échantillon AppSignal. Nous recommandons de l’appeler aussi tôt que possible dans la requête ou le job en arrière-plan, afin que la transaction soit configurée avec le namespace donné avant qu’une erreur ne se produise. Sinon, si une erreur se produit, ou tout autre événement qui arrête le processus, la transaction est envoyée à AppSignal avant que l’assistant set_namespace ne soit appelé, et l’échantillon est rapporté sous le namespace par défaut à la place.

En savoir plus

Elixir

Dans les contrôleurs Phoenix, nous utilisons un plug pour appeler une fonction avant que la requête ne soit traitée par Phoenix. Dans l’exemple de code ci-dessous, nous utilisons plug pour appeler la fonction set_appsignal_namespace (ligne 5). Dans cette fonction, nous appelons l’assistant Appsignal.Span.set_namespace pour configurer le namespace pour cette requête (ligne 10).
Ensuite, nous configurerons le namespace pour un job en arrière-plan. Pour capturer toutes les erreurs du job dans le namespace souhaité, Appsignal.Span.set_namespace doit être appelé au début de la fonction avant tout autre code, comme à la ligne 4 de l’exemple de code ci-dessous :
Il est également possible de configurer le namespace lors de la création d’une transaction. Veuillez consulter la documentation des décorateurs ou des assistants d’instrumentation pour plus d’informations sur la configuration des namespaces.

Remarque sur l’emplacement des assistants

Les assistants set_namespace utilisés dans ce guide peuvent être appelés dans n’importe quelle action qui démarre une transaction AppSignal. Nous recommandons de l’appeler aussi tôt que possible dans la requête ou le job en arrière-plan, afin que la transaction soit configurée avec le namespace donné avant qu’une erreur ne se produise. Sinon, si une erreur se produit — ou tout autre événement qui arrête le processus — la transaction est envoyée à AppSignal avant que le code set_namespace ne soit appelé et elle est rapportée sous le namespace par défaut à la place.

En savoir plus

Node.js

Dans les applications Node.js, AppSignal fonctionne avec OpenTelemetry, qui utilise des spans pour suivre les métadonnées, telles que le namespace auquel un span appartient. Utilisez la fonction d’assistance setNamespace comme illustré ci-dessous pour définir le namespace pour la trace du span actif.
En savoir plus sur le fonctionnement des spans en Node.js.

PHP

Dans les applications PHP, AppSignal fonctionne avec OpenTelemetry, qui utilise des spans pour suivre les métadonnées, telles que le namespace auquel un span appartient. Utilisez la méthode d’assistance Appsignal::setNamespace pour définir le namespace pour la trace du span actif.
Si vous appelez cet assistant plusieurs fois dans une seule trace, AppSignal utilise l’appel dont le span a l’horodatage le plus récent. En savoir plus sur le fonctionnement de l’instrumentation personnalisée en PHP.

Python

Dans les applications Python, AppSignal fonctionne avec OpenTelemetry, qui utilise des spans pour suivre les métadonnées, telles que le namespace auquel un span appartient. Utilisez la fonction d’assistance set_namespace comme illustré ci-dessous pour définir le namespace pour la trace du span actif.
En savoir plus sur le fonctionnement des spans en Python.

JavaScript front-end

Dans les applications JavaScript front-end, AppSignal fonctionne avec des spans pour suivre les métadonnées telles que le namespace d’un span.
Contrairement à Ruby, Node.js, PHP et Python, l’API JavaScript front-end ne dispose pas d’un assistant global setNamespace / set_namespace. À la place, comme pour Elixir, Go et Java, vous définissez le namespace directement sur un span.
Lors de la création de ce span, appelez setNamespace avec une valeur de type String du nom de namespace souhaité, comme illustré dans l’exemple ci-dessous :
En savoir plus sur le fonctionnement des spans en JavaScript front-end.

Go

Dans les applications Go, AppSignal fonctionne avec OpenTelemetry, qui utilise des spans pour suivre les métadonnées, telles que le namespace auquel un span appartient. Sur n’importe quel span de la trace, définissez un attribut appsignal.namespace avec une valeur de type String du nouvel namespace.
Veuillez consulter la documentation sur l’instrumentation personnalisée Go pour savoir comment récupérer un span ou en créer un nouveau. Si plusieurs attributs avec l’attribut appsignal.namespace sont trouvés, le span avec l’horodatage le plus récent prévaut. En savoir plus sur le fonctionnement de l’instrumentation personnalisée en Go.

Java

Dans les applications Java, AppSignal fonctionne avec OpenTelemetry, qui utilise des spans pour suivre les métadonnées, telles que le namespace auquel un span appartient. Sur n’importe quel span de la trace, définissez un attribut appsignal.namespace avec une valeur de type String du nouvel namespace.
Veuillez consulter la documentation sur l’instrumentation personnalisée Java pour savoir comment récupérer un span ou en créer un nouveau. Si plusieurs attributs avec l’attribut appsignal.namespace sont trouvés, le span avec l’horodatage le plus récent prévaut. En savoir plus sur le fonctionnement de l’instrumentation personnalisée en Java.

Déployer

Lorsque votre application est configurée avec ses nouveaux assistants de namespace, validez vos modifications et déployez l’application. Au démarrage/redémarrage de l’application, AppSignal rapportera les actions sous leur nouvel namespace 🥳 !
Les données des anciens déploiements resteront regroupées par leur espace de noms d’origine. Seules les actions nouvellement rapportées seront regroupées par leurs nouveaux namespaces.
Les namespaces ne sont pas rapportés correctement ? Pas de panique, contactez-nous et nous vous aiderons !

Pour aller plus loin