Configuration des traceurs à l'aide du fichier de configuration de l'agent

Vous pouvez configurer les paramètres spécifiques au traceur à l'aide du fichier de configuration de l'agent (instanaAgentDir/etc/instana/configuration.yaml) si celui-ci est installé sur un hôte. Ces configurations déterminent la manière dont les traceurs d' Instana s capturent et traitent les données de traçage au sein de vos applications surveillées.

Pour une liste détaillée de tous les paramètres de configuration Instana, consultez le graphique Helm Instana.

Pour les déploiements d' Instana sur Kubernetes, consultez la section « Configuration de l'agent d' Kubernetes à l'aide du fichier de configuration ».

Pour connaître les options générales de configuration des agents, consultez la section « Configuration des agents hôtes à l'aide du fichier de configuration des agents ».

Remarque :
Le format du fichier de configuration de l'agent est le suivant : ` YAML `. Ce format est sensible aux espaces. Veillez donc à ne pas utiliser d'espaces superflus dans le fichier. Pour créer un retrait, n'utilisez que deux espaces.

Interception des en-têtes d' HTTP s personnalisés

Par défaut, Instana ne collecte pas les en-têtes d' HTTP s lorsqu'il trace les appels à HTTP.

Si nécessaire, vous pouvez activer cette fonctionnalité en appliquant la configuration suivante dans le fichier de configuration de l'agent :

com.instana.tracing:
  extra-http-headers:
    - 'x-request-id'
    - 'x-loadtest-id'
    - ...

Les valeurs ne sont pas sensibles à la casse. Les en-têtes enregistrés apparaissent dans les détails de l'appel (dans la section « Détails de l'appel » ). Vous pouvez également utiliser les noms des en-têtes et leurs valeurs pour rechercher des appels et des traces (dans l'interface utilisateur ou via l' API ) ainsi que pour la configuration des services.

Cette fonctionnalité est actuellement soumise aux restrictions suivantes :

  • Tous les traceurs enregistrent les en-têtes de requête au niveau des entrées « HTTP » (les appels HTTP s reçus par le processus instrumenté).
  • Certains traceurs peuvent enregistrer les en-têtes de réponse lors des requêtes sur HTTP. Pour plus d'informations, voir le tableau 1.
  • Certains traceurs peuvent enregistrer les en-têtes de requête et de réponse lors des sorties d' HTTP s (appels HTTP où le processus instrumenté joue le rôle du client). Pour plus d'informations, voir le tableau 1.
  • Si un même en-tête apparaît à la fois dans les en-têtes de requête et dans les en-têtes de réponse, il se peut que l'une des deux valeurs ne soit pas enregistrée par l'outil de traçage.
Tableau 1. Informations relatives aux en-têtes de requête et de réponse du traceur
Traceur En-têtes de requête sur les entrées d' HTTP En-têtes de réponse dans les entrées d' HTTP En-têtes de requête lors des sorties d' HTTP En-têtes de réponse lors des sorties d' HTTP
Go
Java ✅1
.NET
Node.js
PHP
NGINX
Python
Ruby
HTTPd

Configuration des en-têtes de corrélation des traces d' Kafka

Vous pouvez configurer le format des en-têtes de corrélation de trace d' Kafka, utilisés par les traceurs d' Instana, à l'aide du paramètre com.instana.tracing.kafka.header-format. Les valeurs valides sont binary, string, ou both. Voir l'exemple suivant :

com.instana.tracing:
  kafka:
    header-format: string # possible values: binary, both, string

Vous ne devez pas désactiver complètement la corrélation de trace d' Kafka. com.instana.tracing.kafka.trace-correlation: falseToutefois, si vous devez désactiver complètement la corrélation des traces d' Kafka, définissez alors. Voir l'exemple suivant :

com.instana.tracing:
  kafka:
    trace-correlation: false
Remarque :
De nombreux connecteurs « Kafka » utilisent SimpleHeaderConverter comme mécanisme par défaut pour la gestion des en-têtes de messages « Kafka ». Ce convertisseur peut rencontrer des problèmes lors du traitement des en-têtes de traçage « Instana », car il tente de désérialiser les valeurs des en-têtes en types natifs, ce qui peut provoquer des erreurs de débordement numérique. Pour résoudre ce problème, configurez le fichier « Kafka Connect » de manière à utiliser StringConverter:
header.converter=org.apache.kafka.connect.storage.StringConverter

Pour plus d'informations, consultez la section Migration des en-têtes Kafka.

Désactiver le traçage

Vous pouvez désactiver le traçage pour un type de segment spécifique (frameworks, bibliothèques ou instruments) ou pour des groupes entiers de bibliothèques (catégorie de segments). Par exemple, pour exclure complètement le redis paquet du traçage ou désactiver le traçage pour toutes les bibliothèques liées à la journalisation, utilisez l'option disable de configuration.

Remarque :
Cette fonctionnalité n'est pas encore prise en charge par tous les traceurs.

Pour configurer ce paramètre, définissez les types ou catégories que vous souhaitez désactiver dans la com.instana.tracing.disable section de votre fichier de configuration d'agent, comme le montre l'exemple suivant :

com.instana.tracing:
  disable:
    redis: true         # Disable Redis
    console: false      # Keep console enabled
    logging: true       # Disable the entire logging category

où :

  • true: Désactive le traçage pour le type ou la catégorie spécifié(e).
  • false: Permet de maintenir explicitement le type ou la catégorie spécifié(e) activé(e).

Dans l'exemple précédent, la configuration désactive toutes les instrumentations de la logging catégorie, à l'exception de console, qui est explicitement activée. De plus, cette configuration exclut également toutes redis les sections associées du traçage. Aucune période n'est enregistrée ni communiquée pour les bibliothèques ou catégories désactivées.

Informations de support

Le tableau suivant répertorie les traceurs qui prennent en charge la désactivation des traces :

Tableau 2. Traceurs permettant de désactiver les traces
Traceur Permet de désactiver les traces
Node.js
Go
Java
Python
Ruby
PHP
.Net
NGINX

Désactivation d' W3C

Par défaut, les traceurs d' Instana traitent et propagent les en-têtes tracestate W3C traceparent et afin de permettre la corrélation des traces distribuées. Vous pouvez désactiver la corrélation, la propagation ou les deux à la fois dans « W3C » de manière indépendante à l'aide du fichier de configuration de l'agent.

Désactivation de la corrélation « W3C »

Désactive le traitement des en-têtes « W3C » ou traceparent des tracestate en-têtes sans affecter la propagation des messages sortants.

com.instana.tracing:
  global:
    disable-w3c-correlation: true

Désactivation de la propagation d' W3C

Désactive l'injection d' W3C s traceparentettracestate d'en-têtes dans les requêtes sortantes.

com.instana.tracing:
  global:
    disable-w3c-propagation: true

Désactiver complètement l' W3C

Désactive à la fois la corrélation et la propagation des « W3C s ».

com.instana.tracing:
  global:
    disable-w3c: true

Informations de support

Le tableau suivant répertorie les traceurs qui permettent de désactiver l' W3C ation via la configuration de l'agent :

Tableau 3. Traceurs permettant de désactiver l' W3C via la configuration de l'agent
Traceur Pris en charge
Node.js
Go
Java
Python
Ruby
PHP
.NET
NGINX

Capture des traces de pile

Vous pouvez configurer la capture de la trace de pile pour les segments de sortie dans l'ensemble de vos services. Par défaut, les traceurs enregistrent les 10 derniers points d'appel pour chaque intervalle de sortie capturé.

Remarque :
  • Cette fonctionnalité n'est pas encore prise en charge par tous les traceurs.
  • Les traces de pile des intervalles d'entrée d' HTTP s ne sont généralement pas collectées, car elles ne montrent que le code du framework ou le code de base du runtime.

Vous pouvez configurer deux aspects de la capture de la trace de pile :

  • Longueur de la trace de pile : nombre de points d'appel à capturer.
    • Valeurs prises en charge : 0 à 500
    • Valeur par défaut : 10
  • Mode trace de pile : comment les traces de pile sont capturées.
    • Valeurs prises en charge :
      • all: Récupère la trace de pile pour tous les segments de sortie (par défaut).
      • error: Ne recueille la trace de la pile que pour les segments présentant des erreurs.
      • none: Ne recueille pas la trace de la pile.

Pour configurer la capture de la trace de pile, définissez les paramètres dans la com.instana.tracing.global section de votre fichier de configuration d'agent, comme le montre l'exemple suivant :

com.instana.tracing:
  global:
    stack-trace-length: 15
    stack-trace: 'error'

Dans l'exemple précédent, la configuration définit la profondeur de la trace de pile à 15 sites d'appel pour tous les intervalles de sortie et utilise le error mode.

Informations de support

Le tableau suivant répertorie les traceurs qui prennent en charge la configuration de la capture de traces de pile via la configuration de l'agent :

Tableau 4. Traceurs prenant en charge la configuration de la trace de pile
Traceur Prend en charge la configuration de la trace de pile Version minimale de Tracer ou Collector
Node.js Instana Node.js 5.2.0, modèle de collection et versions ultérieures
Go
Java Instana Java Tracer 2.0.20 et versions ultérieures
Python Instana Python 3.10.0, version et suivantes du paquet « sensor »
Ruby Instana Ruby gem/sensor 2.5.0 et versions ultérieures
PHP Instana PHP Tracer 5.9.0 et versions ultérieures
.Net
NGINX

Ignorer les points de terminaison

Vous pouvez exclure certains points de terminaison du traçage. Par exemple, si vous utilisez le redis paquet et que vous souhaitez désactiver le suivi des commandes telles que GET, TYPE, ou d'autres, vous pouvez utiliser l'option ignore-endpoints de configuration.

Remarque :
La fonctionnalité « Ignorer les points de terminaison » est actuellement soumise aux restrictions suivantes :
  • Seuls certains paquets sont pris en charge.
  • Tous les traceurs ne sont pas pris en charge.

Pour plus d'informations sur les paquets et les traceurs spécifiques prenant en charge cette fonctionnalité, consultez la section « Informations sur la prise en charge ».

Options de filtrage

Vous pouvez filtrer les traces à l'aide des options suivantes :

  • Filtrage par nom de méthode : cette option vous permet de filtrer les traces en fonction uniquement des noms de méthode. Cela s'avère utile lorsque vous souhaitez ignorer certaines opérations, telles que GET les appels dans Redis ou QUERY les appels dans DynamoDB.
  • Filtrage par nom de méthode et point de terminaison : cette option vous permet d'exclure des traces en fonction à la fois de la méthode et de points de terminaison spécifiques. topic2Cette option est particulièrement utile pour certaines technologies, telles que Kafka[...], où vous pouvez exclure les traces d'une méthode spécifique (par exemple, consume[...]) mais uniquement pour certains sujets (par exemple, [...], topic1 ou [...]).

Règles de filtrage

Les règles de filtrage des traces sont les suivantes :

  • Lorsqu'une trace est ignorée, toutes les traces suivantes sont également ignorées.
  • Utilisez * pour ignorer tous les points de terminaison ou toutes les méthodes.
  • Les valeurs des points de terminaison (telles que les noms de sujets « Kafka ») restent cohérentes d'un service à l'autre.
  • Les noms des méthodes peuvent varier en fonction du langage de programmation et de la technologie utilisés. Pour déterminer la méthode et le point de terminaison appropriés pour votre service, consultez l'interface utilisateur d' Instana.

La capture d'écran suivante de l'interface utilisateur d' Instana fournit une référence visuelle permettant d'identifier la méthode et le point de terminaison appropriés pour la configuration :

Figure 1. Méthodes et paramètres d'évaluation dans l'interface utilisateur
Instana Capture d'écran de l'interface utilisateur présentant la configuration des méthodes et des points de terminaison

Configuration des points de terminaison à exclure

Remarque :
Lorsque votre système utilise plusieurs services écrits dans différents langages de programmation, veillez à ce que tous les noms de méthodes nécessaires figurent dans le fichier de configuration de l'agent, car ils peuvent varier d'un langage à l'autre.

Pour configurer les points de terminaison à ignorer, indiquez ceux qui doivent être exclus de la surveillance dans la com.instana.tracing.ignore-endpoints section de votre fichier de configuration d'agent, comme le montre l'exemple suivant :

com.instana.tracing:
  ignore-endpoints:

    # Filtering by Method Name
    redis:
      - 'get'
      - 'type'
    dynamodb:
      - 'query'
    kafka:
      - 'send'

    # Filtering by Method Name and Endpoint for Kafka
    kafka:
      - methods: ["consume"]
        endpoints: ["topic1", "topic2"]  # Exclude consume calls for topic1 and topic2

      - methods: ["consume", "send"]
        endpoints: ["topic3"]  # Exclude both consume and send calls for topic3

      - methods: ["*"]
        endpoints: ["topic4"]  # Exclude all methods for topic4

      - methods: ["consume"]
        endpoints: ["*"]  # Exclude consume method for all topics

Dans l'exemple précédent, les traces suivantes sont ignorées pour les options de filtrage indiquées :

  • Filtrer par méthode (Redis, DynamoDB, et Kafka)
    • GET et TYPE les commandes dans Redis
    • QUERY commande dans DynamoDB
    • SEND méthode dans Kafka et toutes les traces en aval
  • Filtrer par méthode et critère d'évaluation (Kafka uniquement)
    • CONSUME méthode pour topic1 et topic2 dans Kafka et toutes les traces en aval
    • CONSUME et SEND les méthodes pour topic3 toutes les traces en Kafka aval
    • Toutes les méthodes (*) pour topic4 dans Kafka et toutes les traces en aval
    • CONSUME méthode pour tous les sujets (*) et toutes les traces en aval

Informations de support

Le tableau suivant répertorie les traceurs et les paquets qui prennent en charge l'ignorance des points de terminaison :

Tableau 5. Traceurs et modules prenant en charge l'ignorance des points de terminaison
modules pris en charge Node.js Java Go PHP Python Ruby .NET NGINX
Redis
DynamoDB
Kafka
HTTP
Remarque :
Pour Node.js, le filtrage HTTP ne s'applique qu'aux requêtes entrantes. Les appels sortants ( HTTP ) ne peuvent pas être filtrés.

HTTP 4xx Signalement des erreurs via les codes d'état

Par défaut, Instana ne considère pas les réponses de type « HTTP » 4xx comme des erreurs lors des appels à HTTP. Vous pouvez activer cette fonctionnalité pour surveiller les erreurs côté client, telles que les réponses 403 Forbidden répétées ou 401 Unauthorized .

Remarque :
  • Ce paramètre s'applique uniquement aux appels sortants (de sortie) d' HTTP. Les appels entrants (d'entrée) de type « HTTP » ne sont jamais signalés comme des erreurs sur la base des codes de réponse « 4xx », quelle que soit cette configuration.
  • Tous les traceurs ne sont pas pris en charge.

Les options de configuration suivantes sont disponibles sous com.instana.tracing.http.exit:

  • classify-all-4xx-as-errors: Signale toutes les réponses de type « 4xx » comme des erreurs.
  • classify-as-errors: Ne signale comme erreurs que les codes d'état « 4xx » spécifiés.

Lorsque ces deux options sont activées, classify-as-errors a la priorité, et seuls les codes répertoriés sont considérés comme des erreurs. Les codes d'état pour classify-as-errors doivent se situer dans l'intervalle 400–499. Tout code ne se situant pas dans cette plage est ignoré.

Considérer toutes les réponses « 4xx » comme des erreurs

Pour traiter chaque réponse « 4xx » lors d'un appel sortant comme une erreur, ajoutez ce qui suit à votre fichier de configuration d'agent :

com.instana.tracing:
  http:
    exit:
      classify-all-4xx-as-errors: true

Considérer certaines réponses de l' 4xx e comme des erreurs

Pour ne considérer que certains codes d'état comme des erreurs, répertoriez-les sous classify-as-errors:

com.instana.tracing:
  http:
    exit:
      classify-as-errors:
        - 401
        - 403

Informations de support

Le tableau suivant répertorie les traceurs prenant en charge le signalement des erreurs via le code d'état « HTTP » 4xx :

Tableau 6. Traceurs prenant en charge la notification des erreurs via les codes d'état HTTP 4xx
Traceur Pris en charge
Node.js
Go
Java
Python
Ruby
PHP
.NET
NGINX
1 Les technologies prises en charge comprennent Servlet, Spring, Tomcat, et http4s.