Mappages de services liés à OpenTelemetry et corrélation d'infrastructure

Cette rubrique fournit des conseils aux clients qui envoient manuellement des données d' OpenTelemetry s à Instana.

Si vous utilisez la distribution « Instana » du collecteur « OpenTelemetry » ( IDOT ), vous n'avez pas besoin de suivre la procédure de configuration manuelle, car « IDOT » gère automatiquement les mappages de services et la corrélation de l'infrastructure par défaut.

Vous pouvez suivre les instructions fournies dans ce document pour intégrer OpenTelemetry à Instana et activer des mappages de services complets ainsi que la corrélation de l'infrastructure lorsque vous envoyez manuellement des données de télémétrie. Ce document explique comment utiliser certains attributs de ressources d' OpenTelemetry s afin d'optimiser la liaison et la visibilité des données au sein d' Instana, en particulier dans les environnements Kubernetes et le middleware IBM.

OpenTelemetry cartographie des services

Instana s'aligne sur les conventions sémantiques d' OpenTelemetry pour associer les métriques, les intervalles et les journaux aux services. Ces conventions définissent des noms d'attributs et des modèles d'utilisation normalisés, favorisant ainsi la cohérence et l'interopérabilité entre les outils d'observabilité. En se conformant à ces normes, Instana garantit une intégration transparente des données de télémétrie dans sa plateforme de surveillance et d'observabilité.

Voici les principaux attributs utilisés dans la cartographie des services :

  • attribut de ressource service.name
  • Attribut « trace span » peer.service

attribut de ressource service.name

L'attribut service.name identifie de manière unique un service dans OpenTelemetry. Chaque application, microservice ou composant dispose d'un identifiant unique et logique service.name afin de permettre un filtrage, une analyse et une visualisation efficaces des données de télémétrie. Instana associe ces données service.name à ses services, en reliant les traces, les métriques et les journaux à l'application qui les a générés. Une nomenclature cohérente service.name et descriptive permet de garantir un regroupement précis et une meilleure observabilité au sein d' Instana.

Dans l' OpenTelemetry,, vous pouvez définir service.name l'attribut à différents niveaux de votre application, en fonction des besoins spécifiques de votre configuration d'observabilité. Dans le tableau ci-dessous, vous pouvez voir les différentes façons dont service.name peut être configuré :

Niveau Méthode de définition Exemple Cas d'utilisation
Code de l'application Directement dans l'application lors de l'instrumentation manuelle service.name="orders-service" Lorsque le service.name est codé en dur ou configuré dans l'application elle-même
Variable d'environnement En utilisant la variable OTEL_SERVICE_NAME d'environnement OTEL_SERVICE_NAME=payments-service Courant dans les environnements qui utilisent l'auto-instrumentation sur plusieurs services
Attributs de ressource En utilisant OTEL_RESOURCE_ATTRIBUTES des paires clé-valeur OTEL_RESOURCE_ATTRIBUTES=service.name=inventory-service Utile pour combiner service.name avec d'autres attributs tels que host.id
Configuration du collecteur Dans OpenTelemetry Collector, à l'aide du resource processeur service.name: shipping-service Contrôle centralisé des données de télémétrie avant leur transmission au serveur

Attribut « trace span » peer.service

Dans ` OpenTelemetry, `, peer.service l'attribut spécifie le nom du service distant auquel un span se connecte, ce qui permet d'identifier les dépendances externes telles que les bases de données, les intermédiaires de messagerie ou d'autres microservices. Instana se connecte peer.service à un service d' Instana, permettant ainsi de visualiser les dépendances et les interactions entre les services.

  • Bibliothèques d'instrumentation : certaines bibliothèques s'initialisent automatiquement peer.service lorsqu'elles sont correctement configurées. Par exemple :
    • JDBC : L'instrumentation d' OpenTelemetry JDBC peut déduire les informations peer.service de connexion à la base de données.
    • HTTP Clients : les bibliothèques de la bibliothèque « HTTP », telles que Apache et HttpClient, peuvent être dérivées peer.service à partir du nom d'hôte du service distant.

Dans le tableau ci-dessous, vous pouvez voir les différentes façons dont peer.service peut être défini ou configuré dans OpenTelemetry:

Niveau Description Exemple Cas d'utilisation
Code de l'application Définissez directement peer.service l'attribut dans votre code à l'aide de la balise OpenTelemetry API span.setAttribute("peer.service", "backend-service") Lorsque vous disposez de connaissances spécifiques sur le service concerné et que vous souhaitez lui attribuer un nom personnalisé
Fichiers de configuration (propriété système) Définissez la peer.service valeur dans les propriétés système utilisées par l'agent ou le SDK d' OpenTelemetry otel.instrumentation.common.peer-service-mapping: "api.example.com=example-api-service,1.2.3.4=cats-service" Lorsque vous souhaitez associer des noms d'hôte, des adresses IP ou une combinaison des deux à des noms de service dans un fichier de configuration
Variables d'environnement Définissez cette peer.service valeur en tant que variable d'environnement accessible à votre application OTEL_INSTRUMENTATION_COMMON_PEER_SERVICE_MAPPING="api.example.com=example-api-service,1.2.3.4=cats-service" Lorsque vous devez définir dynamiquement la peer.service valeur en fonction des conditions d'exécution ou de l'environnement de déploiement (à l'instar des propriétés système, mais en utilisant des variables d'environnement)
Bibliothèque d'instruments Définis automatiquement par les bibliothèques d' OpenTelemetry peer.service="postgresql" C'est courant pour les bibliothèques courantes telles que les clients de bases de données et d' HTTP, qui s'initialisent peer.service automatiquement

Cartographie des services pour les protocoles courants

Outre les attributs généraux tels que service.name et peer.service, le document « OpenTelemetry » définit un ensemble complet de conventions sémantiques pour des protocoles bien connus, notamment HTTP, RPC, les bases de données, les systèmes de messagerie, etc.

Pour obtenir la liste complète des protocoles, consultez les conventions sémantiques de Trace.

HTTP attributs de balise span

OpenTelemetry fournit des conventions sémantiques pour les segments d' HTTP, afin d'assurer la cohérence entre les différents systèmes de traçage, notamment des attributs qui permettent de mieux comprendre les requêtes et les réponses d' HTTP.

Dans le tableau ci-dessous, vous pouvez voir les différentes façons dont les attributs de http balise `span` peuvent être définis ou configurés dans OpenTelemetry:

Attribut Description Exemple
http.method HTTP méthode (GET, POST ) http.method="GET"
http.route Chemin d'accès de la requête HTTP http.route="/webshop/articles/:id"
url.path Composante du chemin d'accès de l' URL complète url.path="/webshop/articles/4"
http.host Nom d'hôte du serveur http.host="api.example.com"
http.target URL s de destination de la requête http.target="/users"

Bien que http.host et http.target permettent souvent de déduire le service, le routage dynamique ou la découverte de services peuvent nécessiter des informations supplémentaires provenant de fichiers de configuration ou de registres de services pour assurer un mappage précis.

Les appels de procédure à distance couvrent les attributs

OpenTelemetry fournit des conventions sémantiques pour les segments de RPC (RPC) afin d'assurer la cohérence entre les systèmes de traçage, y compris des attributs qui fournissent des informations utiles. Les principaux attributs de portée d' RPC s utilisés pour le mappage des services dans OpenTelemetry sont les suivants :

  • rpc.method : Spécifie la méthode ou la fonction appelée, en fournissant des informations détaillées sur l'opération.
  • rpc.service : identifie le nom du service appelé, ce qui est essentiel pour associer les appels de type « RPC » à des services spécifiques.
Attribut Description Exemple
rpc.service Nom du service distant rpc.service="user-service"
rpc.method Une méthode ou une fonction qui est appelée rpc.method="GetUserInfo"

En combinant rpc.service et rpc.method avec d'autres attributs tels que peer.service, les appels vers RPC peuvent être mappés vers les services correspondants.

Attributs de portée de la base de données

OpenTelemetry fournit des conventions sémantiques pour les segments de base de données afin d'assurer la cohérence entre les systèmes de traçage, en proposant des attributs clés qui apportent des informations précieuses sur les opérations et les interactions au sein de la base de données. Ces informations sont essentielles pour comprendre les performances et le comportement des systèmes de bases de données au sein d'une application distribuée.

Le tableau ci-dessous présente les principaux attributs de plage de bases de données utilisés pour le mappage des services dans l' OpenTelemetry.

Attribut Description Exemple
db.system Système de base de données (par exemple, MySQL et PostgreSQL ) db.system="mysql"
db.instance Nom ou identifiant de l'instance de base de données db.instance="my_database"
db.name Le nom de la base de données à laquelle on accède db.name="users_db"
db.statement Requête SQL ou commande de base de données exécutée db.statement="SELECT * FROM users"
db.operation Type d'opération sur la base de données (par exemple, SELECT et INSERT) db.operation="SELECT"

Bien que ces caractéristiques décrivent principalement les interactions avec la base de données, elles peuvent contribuer indirectement à la cartographie des services. Par exemple, db.instance l'attribut pourrait permettre d'identifier le service qui interagit avec une instance de base de données spécifique.

Attributs de portée des messages

OpenTelemetry fournit des conventions sémantiques pour les segments de messagerie afin d'assurer la cohérence entre les systèmes de traçage, y compris des attributs qui fournissent des informations utiles.

Les principaux attributs de la plage de messages utilisés pour le mappage des services dans l' OpenTelemetry. sont les suivants :

Attribut Description Exemple
messaging.system Système de messagerie utilisé (par exemple, Kafka, RabbitMQ, et AMQP) messaging.system="kafka"
messaging.destination Adresse de destination (par exemple, nom du sujet et nom de la file d'attente) messaging.destination="user-events"
messaging.operation Opération effectuée (par exemple, ENVOI, RÉCEPTION, PUBLICATION et ABONNEMENT) messaging.operation="SEND"

Ces attributs permettent de cartographier les services en fonction des systèmes de messagerie avec lesquels ils interagissent et des sujets ou files d'attente spécifiques qu'ils utilisent. Par exemple, si l'on sait qu'un service envoie des messages à un sujet Kafka spécifique, messaging.destination l'attribut peut aider à identifier ce service.