OpenTracing
Instana offre une grande souplesse quant à la manière de capturer les traces. Quelle que soit son origine, chaque trace est traitée de la même manière.
Si vous souhaitez bénéficier d'un contrôle et d'une flexibilité accrus quant aux éléments précis à tracer, « OpenTracing », une solution indépendante des fournisseurs ( API ) dédiée au traçage des applications, pourrait vous convenir.
Instana prend en charge l' OpenTracing, telle que définie dans la spécification OpenTracing, pour les langages suivants :
| Technologie | Informations |
|---|---|
| Crystal | Pour plus d'informations, consultez la page « Surveillance » Crystal |
| Go | Pour plus d'informations, consultez la page « Surveillance » Go |
| Java | Pour plus d'informations, consultez la page Java Trace SDK |
| Node.js | Pour plus d'informations, consultez les sites suivants : Instana, Node.js et API |
| PHP | Pour plus d'informations, consultez la page « Surveillance » PHP |
| Python | Pour plus d'informations, consultez la page « Prise en charge » : Instana, Python, 2.5.3 et versions antérieures |
| Ruby | Pour plus d'informations, consultez la page Ruby Tracing SDK |
Exemple - traçage des applications Node.js
L'exemple suivant montre comment utiliser Instana OpenTracing pour les applications Node.js :
const instana = require('@instana/collector');
// Always initialize the sensor as the first module inside the application.
instana({
tracing: {
enabled: true
}
});
const opentracing = require('opentracing');
// optionally use the opentracing provided singleton tracer wrapper
opentracing.initGlobalTracer(instana.opentracing.createTracer());
// retrieve the tracer instance from the opentracing tracer wrapper
const tracer = opentracing.globalTracer();
// start a new trace with an operation name
const span = tracer.startSpan('auth');
// mark operation as failed
span.setTag(opentracing.Tags.ERROR, true);
// finish the span and schedule it for transmission to instana
span.finish();
Meilleures pratiques OpenTracing
Lorsque vous utilisez OpenTracing,, vous pouvez consulter les bonnes pratiques suivantes sur OpenTracing pour tirer pleinement parti de votre tableau de bord Instana. Pour les étapes importantes indépendantes de la stratégie de traçage, consultez notre documentation sur les bonnes pratiques en matière de traçage personnalisé.
Balises pour un traitement amélioré
Instana effectue un traitement et une analyse avancés de toutes les données entrantes afin de surveiller, d'apprendre et d'alerter vos applications et votre infrastructure, y compris les segments d' OpenTracing.
Pour tirer parti des fonctionnalités d'analyse et de traitement, vous pouvez ajouter les balises OpenTracing appropriées à vos spans, ce qui permet à Instana d'analyser les spans reçus et d'y donner suite.
Par exemple, le code suivant, disponible à l'adresse PythonOpenTracing, fournit quelques informations :
import opentracing
with opentracing.tracer.start_active_span('vanilla') as pscope:
# ...
# do something that takes 50ms
# ...
pscope.span.log_kv({"foo": "bar"})
Ce code indique qu'il s'agit d'un élément « span » nommé vanilla qui a pris 50 ms. Le type de segment (par exemple, un segment « HTTP », « RPC » ou « Messaging ») est inconnu. Il manque des informations, notamment concernant la communication avec tout autre composant de votre infrastructure.
Par contre, si vous fournissez les balises contextuelles OpenTracing appropriées, Instana peut mieux analyser et extraire des informations de cette étendue pour pouvoir agir dessus.
import opentracing
import opentracing.ext.tags as ext
with opentracing.tracer.start_active_span('webserver') as pscope:
pscope.span.set_tag(ext.SPAN_KIND, "entry")
pscope.span.set_tag(ext.PEER_HOSTNAME, "localhost")
pscope.span.set_tag(ext.HTTP_URL, "/python/simple/two")
pscope.span.set_tag(ext.HTTP_METHOD, "POST")
pscope.span.log_kv({"foo": "bar"})
# ...
# work that took 50ms
# ...
pscope.span.set_tag(ext.HTTP_STATUS_CODE, 204)
Cette section annotée fournit à Instana des informations supplémentaires sur ce qui s'est passé dans le contexte de cette section. D'après les balises fournies, vous savez qu'il s'agit d'une requête entrante adressée au /python/simple/two serveur web et que le code d'état HTTP renvoyé était 204.
Une section annotée, telle que mentionnée précédemment, permet à Instana d'extraire des services, de surveiller les connexions (et leur état) et, globalement, d'offrir une expérience plus riche dans votre tableau de bord.
Pour plus d'informations, consultez la spécification « OpenTracing », qui définit la liste officielle de toutes les balises « OpenTracing » prises en charge.
La balise peer-service est facultative
Vous devez définir la peer.service balise si vous ne savez pas si le côté distant est instrumenté. En général, il n'est pas nécessaire de définir la peer.service balise si Instana surveille le côté distant. Dans ce cas, un nom de service est attribué automatiquement. Si la balise peer.service est définie dans l'appel client et que le serveur est instrumenté et possède un nom de service personnalisé, les résultats ne sont pas définis.
Pour plus d'informations, consultez le portail OpenTracing.