AppSignal prend en charge plusieurs intégrations de langages OpenTelemetry. Cependant, le modèle de données peut ne pas toujours s’aligner parfaitement, ce qui peut affecter la façon dont les données OpenTelemetry sont affichées dans l’interface AppSignal. En utilisant les attributs répertoriés sur cette page, vous pouvez personnaliser l’apparence des données de trace et de span.
🔐 N’envoyez pas d’informations personnelles identifiables (PII) à AppSignal. Filtrez les PII (par exemple, noms, e-mails) et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place.
Pour les entités couvertes par la HIPAA, plus d’informations sur la signature d’un Business Associate Agreement (BAA) sont disponibles dans notre documentation Business Add-Ons.
Accéder à un span
Lors de la personnalisation de la trace ou du span, importez d’abord le module trace OpenTelemetry dans le fichier où vous souhaitez personnaliser les données de trace rapportées.from opentelemetry import trace
À l’aide de ce module trace, créez un nouveau span :tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("Span name") as span:
# Set attribute values
span.set_attribute("attribute name", "attribute value")
Ou récupérez celui actuellement actif :span = trace.get_current_span()
# Set attribute values
span.set_attribute("attribute name", "attribute value")
Lors de la personnalisation de la trace ou du span, importez d’abord le module trace OpenTelemetry dans le fichier où vous souhaitez personnaliser les données de trace rapportées.import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
À l’aide de ce module trace, créez un nouveau span :var tracer = otel.Tracer("my-tracer-name")
func httpHandler(w http.ResponseWriter, r *http.Request) {
ctx, span := tracer.Start(r.Context(), "hello-span")
defer span.End()
// Set attributes
}
Remarque : dans ces exemples, nous nous appuyons sur le contexte de la requête HTTP, fourni par r.Context().
La récupération du contexte peut être différente dans votre application.Ou récupérez celui actuellement actif :func httpHandler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
span := trace.SpanFromContext(ctx)
// Set attributes
}
Attributs AppSignal
Namespace
Cet attribut s’applique à l’ensemble de la trace. Il peut être défini sur un span enfant et n’a pas besoin d’être défini sur le span parent le plus haut. Cet attribut ne peut être défini qu’une seule fois par trace. S’il est défini plusieurs fois, seul l’attribut d’un seul span de la trace est appliqué.
- Nom de l’attribut :
appsignal.namespace
- Type de valeur :
String
Regroupez les traces par namespace pour une meilleure organisation dans l’interface AppSignal.
Les namespaces sont regroupés par nom de service OpenTelemetry au format <Service name>/<Namespace>, par exemple « Web server/admin » ou « Background worker/billing ». Cet attribut vous permet de configurer uniquement la partie namespace. Le namespace par défaut pour toutes les traces est <Service name>/default.
span.set_attribute("appsignal.namespace", "admin")
Nom d’action racine
Cet attribut s’applique à l’ensemble de la trace. Il peut être défini sur un span enfant et n’a pas besoin d’être défini sur le span parent le plus haut. Cet attribut ne peut être défini qu’une seule fois par trace. S’il est défini plusieurs fois, seul l’attribut d’un seul span de la trace est appliqué.
- Nom de l’attribut :
appsignal.action_name
- Type de valeur :
String
Définissez le nom d’action de la trace qui sera utilisé pour créer des incidents et regrouper le tracing sur AppSignal.com. Cela écrasera tout mappage automatisé effectué par le support AppSignal pour une instrumentation spécifique. Cela est utile pour les traces qui ne sont pas créées par des bibliothèques prises en charge. Si votre trace est regroupée avec d’autres traces non nommées ou mal regroupées, il se peut que cet attribut soit manquant.
Nous visons à améliorer notre regroupement automatique au fil du temps, donc veuillez nous le faire savoir si vous constatez que cet attribut est nécessaire.
span.set_attribute("appsignal.action_name", "ControllerName#action")
- Nom de l’attribut :
appsignal.tag.<tag_name>
- Type de valeur :
String
Taguez les traces pour les faire ressortir sur les pages de détails de trace et filtrer les traces dans l’interface AppSignal. Plusieurs tags peuvent être définis sur les spans d’une trace. Des tags peuvent être ajoutés à n’importe quel span d’une trace à n’importe quel niveau de la trace.
Vous pouvez utiliser des link templates pour lier les tags à une URL spécifique, comme un profil utilisateur ou une page d’administration.
La clé de l’attribut de tag est composée de deux parties : le préfixe appsignal.tag et la clé du tag. Pour le tag user_id, cela devient appsignal.tag.user_id en tant que clé d’attribut.
span.set_attribute("appsignal.tag.<tag_name>", "string") # Example format
span.set_attribute("appsignal.tag.user_id", user.id)
Paramètres de fonction
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
appsignal.function.parameters
- Type de valeur : Objet sérialisé en JSON
Signalez les paramètres d’un appel de fonction à l’aide de cet attribut.
Utilisez-le pour définir les paramètres transmis à un background job, à une tâche ou à un appel de fonction que vous souhaitez suivre.
Les valeurs définies dans cet attribut de span peuvent être filtrées à l’aide de l’option de configuration appsignal.config.filter_function_parameters.
span.set_attribute("appsignal.function.parameters", json.dumps({
"param1": "value1",
"param2": "value2"
}))
En-têtes de réponse
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
http.response.header.<key>
- Type de valeur : Array of Strings
Signalez les en-têtes de la réponse à l’aide d’un attribut de span OpenTelemetry.
Cet attribut de span est également documenté dans la spécification OpenTelemetry des spans HTTP.
span.set_attribute("http.response.header.content-type", ["application/json"])
span.set_attribute("http.response.header.custom-header", ["abc", "def"])
En-têtes de requête
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
http.request.header.<key>
- Type de valeur : Array of Strings
Signalez les en-têtes de la requête à l’aide d’un attribut de span OpenTelemetry.
Cet attribut de span est également documenté dans la spécification OpenTelemetry des spans HTTP.
span.set_attribute("http.request.header.content-type", ["application/json"])
span.set_attribute("http.request.header.custom-header", ["abc", "def"])
Paramètres de requête de l’URL
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
appsignal.request.query_parameters
- Type de valeur : Objet sérialisé en JSON
Signalez les paramètres de requête d’une URL d’une requête HTTP entrante à l’aide de cet attribut.
Les valeurs définies dans cet attribut de span peuvent être filtrées à l’aide de l’option de configuration appsignal.config.filter_request_query_parameters.
span.set_attribute("appsignal.request.query_parameters", json.dumps({
"category": "shoes",
"filter": "color:blue"
}))
Charge utile de la requête
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
appsignal.request.payload
- Type de valeur : Objet sérialisé en JSON
Signalez la charge utile d’une requête HTTP entrante à l’aide de cet attribut.
Les valeurs définies dans cet attribut de span peuvent être filtrées à l’aide de l’option de configuration appsignal.config.filter_request_payload.
span.set_attribute("appsignal.request.payload", json.dumps({
"title": "My new blog post"
"body": "Lorem ipsum"
}))
Données de session de la requête
La valeur de cet attribut doit être sérialisée en chaîne JSON. Il ne prend pas en charge directement un Hash ou un objet du langage d’intégration et sera silencieusement ignoré.
- Nom de l’attribut :
appsignal.request.session_data
- Type de valeur : Objet sérialisé en JSON
Signalez les données de session d’une requête HTTP entrante à l’aide de cet attribut.
Les valeurs définies dans cet attribut de span peuvent être filtrées à l’aide de l’option de configuration appsignal.config.filter_request_session_data.
span.set_attribute("appsignal.request.session_data", json.dumps({
"user_id": 123
"theme": "dark"
}))