Ajout d’attributs personnalisés
La vigie applicative CloudWatch utilise OpenTelemetry pour instrumenter automatiquement vos applications et collecter des portées à partir de bibliothèques populaires dans différents langages, tels que Java, Python, etc.
L’instrumentation automatique capture des informations telles que les requêtes de base de données, les requêtes HTTP, les accès au cache et les appels de services externes, ce qui vous permet de résoudre les problèmes de performances des applications.
Vous pouvez ajouter une instrumentation personnalisée pour enrichir les portées avec des données spécifiques à votre activité ou d’autres informations que vous souhaitez capturer. Ces données peuvent être enregistrées sous forme d’attribut personnalisé ou d’événement de portée, fournissant ainsi des informations adaptées à vos besoins en matière de dépannage.
Note
Pour plus d’informations sur l’ajout d’attributs personnalisés ou d’événements de portée dans un autre langage, consultez API et kits SDK de langage
Attributs personnalisés
Vous pouvez ajouter des attributs liés à l’activité ou tout autre attribut à vos portées dans tous les langages pris en charge par OpenTelemetry. Voici un extrait de code Java qui ajoute un identifiant de commande et les détails du client à une portée.
import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void processOrder() { Span span = Span.current(); span.setAttribute("order.id", "123456"); span.setAttribute("customer.name", "John Doe"); span.setAttribute("customer.id", "4343dfdd"); // Your order processing logic here System.out.println("Order processed with custom attributes"); } }
Une fois ces attributs ajoutés à la portée, ils peuvent être recherchés et analysés dans l’éditeur visuel de recherche de transactions.
Événements de portée
Un événement de portée est généralement utilisé pour désigner un moment significatif et unique au cours d’une durée de portée. Les exceptions sont automatiquement capturées en tant qu’événements de portée grâce à l’instrumentation automatique, mais vous pouvez également ajouter des événements métier personnalisés, tels que le statut de paiement ou l’abandon du panier. Pour plus d’informations, consultez Événements de portée
Vous pouvez intégrer des événements de portée à vos portées dans tous les langages pris en charge par la vigie applicative CloudWatch et OpenTelemetry. Voici un extrait de code Java permettant d’ajouter un événement personnalisé à une portée.
import io.opentelemetry.api.trace.Span; public class OrderProcessor { public void bookOrder() { Span span = Span.current(); // Add a booking started event span.addEvent("booking started"); // Add a payment succeeded event or failed event span.addEvent("booking failed"); } }
Conditions préalables pour l’agent CloudWatch
Lorsque vous utilisez l’agent CloudWatch pour émettre des événements de portée vers X-Ray, vous devez activer l’indicateur `transit_spans_in_otlp_format` dans votre configuration.
{ "traces": { ... "transit_spans_in_otlp_format": true ... } }
Une fois ces événements ajoutés, ils deviennent disponibles dans l’éditeur visuel de recherche de transactions.
Requêtes CloudWatch Logs
Vous pouvez interroger les événements de portée dans CloudWatch Logs pour afficher des informations avancées. Les exemples de commandes de requête suivants montrent comment analyser les exceptions générées par votre application :
fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | display event.attributes.`exception.stacktrace`
fields jsonparse(@message) as js | unnest js.events into event | filter event.name = "exception" | stats count() by event.attributes.`exception.type`