Configuration du capteur d' Java

Une fois l'agent « Instana » installé, le capteur et le traceur « Java » sont automatiquement configurés. Ils fournissent des métriques et un traçage distribué sans aucune configuration supplémentaire. Vous pouvez toutefois personnaliser la configuration comme indiqué dans les sections suivantes.

Pour plus d'informations sur la surveillance d' JVM, consultez la page « Surveillance d'une machine virtuelle Java » ( JVM ).

Personnalisation du nom de l'application

Le nom de l'application identifie l'application « Java » sur Instana. Le nom de l'application peut être configuré de deux manières : automatiquement ou manuellement.

Nommage automatique

En règle générale, Instana récupère automatiquement le nom de l'application à partir des sources suivantes :

  • Fichier .jar d'application : dans ce .jar fichier, les attributs standard suivants sont disponibles META-INF/Manifest.MF:

    Implementation-Title=Demo App
    Implementation-Version=1.0.0
     

    En utilisant des outils de compilation, vous pouvez définir ces deux attributs lors de la compilation de l'application. Pour plus d'informations, consultez la documentation de Oracle.

  • Ligne de commande : si le nom n'est pas disponible, la ligne de commande est utilisée pour le rechercher, de la même manière que les outils d' Java ation affichent les JVM.

  • Propriétés système : si aucun nom n'est extrait du .jar fichier, Instana examine diverses propriétés système, par exemple -Dcatalina.home pour les conteneurs Tomcat.

Dénomination manuelle

Pour personnaliser le nom de l'application, utilisez l'une des options suivantes :

  • Configurer le nom lors de l'initialisation d' JVM : pour définir explicitement le nom de l'application, spécifiez -Dcom.instana.agent.jvm.name="My Custom Name" l'attribut lors du démarrage d' JVM.

  • Utiliser une propriété système existante : pour configurer l'agent afin qu'il utilise une propriété système personnalisée existante, indiquez une liste de propriétés dans le fichier de configuration.yaml l'agent. La première propriété existante s'appelle « JVM » :

com.instana.plugin.java:
  name-properties:
    - 'acme.app'
    - 'DEPLOYMENT'
 

Personnalisation de l'intervalle d'interrogation

Vous pouvez définir la fréquence à laquelle l' Instana interroge l' JVM pour collecter des données et des métriques en utilisant le paramètre `poll_rate` dans le fichier ` configuration.yaml ` de l'agent.

Configuration de la fréquence d'interrogation

com.instana.plugin.java:
   poll_rate: 1 # Value is in seconds. Default value is 1 second.
 

Configuration des indicateurs personnalisés d' JMX

Pour définir les indicateurs d' JMX s à surveiller, modifiez le fichier de configuration.yaml l'agent comme indiqué dans l'exemple suivant :

com.instana.plugin.java:
  jmx:
    # JMX is NOT hot-reloaded and needs to be set before a JVM is discovered.
    # Supported attribute types are Number and Boolean
    # delta calculation is only supported for Number
    - object_name: 'java.lang:type=Compilation'
      metrics:
        - attributes: 'TotalCompilationTime'
          type: 'delta' # delta will report the change to the previous second
    - object_name: 'java.lang:type=ClassLoading'
      metrics:
        - attributes: 'LoadedClassCount'
          type: 'absolute' # absolute will report the value as-is
 

L'exemple précédent spécifie les types de métriques suivants :

  • delta: Utilisé pour les valeurs qui augmentent au fil du temps, comme les compteurs, lorsque l'évolution relative présente un intérêt.
  • absolute: Permet d'afficher la valeur actuelle à chaque fois que l'on consulte l'indicateur.

L'attribut spécifié doit être soit un Number (ou l'une de ses sous-classes, comme Integer ou Double), soit un String représentant un nombre.

Configuration des métriques d' JMX s à l'aide de modèles génériques

Le object_name peut contenir des motifs avec caractères génériques, comme indiqué dans la documentation de l' Java ObjectName API.

L'exemple suivant illustre la configuration avec des motifs génériques :

com.instana.plugin.java:
  jmx:
    - object_name: 'kafka.*:type=*-metrics,client-id=*,*'
      metrics:
        - attributes: 'incoming-byte-rate'
          type: 'absolute'
        - attributes: 'incoming-byte-total'
          type: 'absolute'
        - attributes: 'outgoing-byte-rate'
          type: 'absolute'
        - attributes: 'outgoing-byte-total'
          type: 'absolute'
 

Affichage des indicateurs personnalisés d' JMX

Dans le tableau de bord d' JVM, les indicateurs d' JMX s s'affichent sous la rubrique « Indicateurs d' JMX s personnalisés ».

Configuration de l'instrumentation de trace d' Java

Une fois l'agent hôte Instana installé, l'instrumentation de trace par défaut (non-SDK) Java est activée par défaut, mais l'instrumentation OpenTracing et le SDK de trace Java ne sont pas activés.

Désactivation de l'instrumentation de trace d' Java

Par défaut, l'instrumentation de trace d' Java est activée pour tous les processus Java. Vous pouvez la désactiver pour tous les processus ou pour un seul processus.

Désactivation pour tous les processus de l' Java

Pour désactiver l'instrumentation par défaut de la trace d' Java pour tous les processus, configurez le fichier de configuration.yaml l'agent comme suit :

com.instana.plugin.javatrace:
   instrumentation:
     enabled: false
 
Remarque : redémarrez l'application « Java » pour vous assurer que l'instrumentation est désactivée.

Pour activer explicitement l'instrumentation de trace d' Java, définissez enabled: false sur true.

Désactivation pour un seul processus d' Java

Java L'instrumentation de trace est activée par défaut pour tous les processus d' Java.

Pour désactiver l'instrumentation de trace pour un processus de type « Java », utilisez l'une des options suivantes :

  • Ajoutez la propriété -Dinstana.java.tracer.enabled=false système en tant qu'argument de la machine virtuelle Java ( JVM ).
  • Ajoutez la variable d'environnement **INSTANA_JAVA_TRACER_ENABLED=false **.
Remarque : si les deux sont spécifiés, la propriété système a priorité sur la variable d'environnement système.

Activation de l'instrumentation d' OpenTracing

Pour activer la surveillance d' OpenTracing s de la trace d' Java, configurez le fichier de configuration.yaml l'agent comme suit :

com.instana.plugin.javatrace:
   instrumentation:
     opentracing: true
 

Pour désactiver l'instrumentation d' OpenTracing, définissez opentracing: false sur false.

Activation du SDK de traçage d' Java

Pour activer le SDK de traçage d' Java, configurez le fichier de configuration.yaml l'agent en fournissant une liste des paquets qui doivent être analysés pour l'annotation du SDK, comme suit. Par défaut, aucun package n'est analysé pour les annotations SDK.

com.instana.plugin.javatrace:
   instrumentation:
     sdk:
       packages:
         - 'com.instana.backend'
         - 'com.instana.frontend'
 

Pour désactiver le SDK de traçage d' Java, mettez en commentaire l'intégralité packages de la section.

Saisie des portées intermédiaires

Instana permet de capturer des intervalles intermédiaires pour les applications d' Java dans Kafka Streams et WebMethods Integration Server. Cependant, cette fonctionnalité est désactivée par défaut.

Remarque : l'activation des intervalles intermédiaires entraîne une augmentation considérable du nombre d'intervalles, ce qui multiplie le volume des données de traçage et peut nuire aux performances de l'application.

Pour activer cette fonctionnalité, consultez les sections suivantes :

Activation des portées intermédiaires pour les flux d' Kafka

Dans Kafka Streams, chaque opérateur de flux est capturé en tant qu'étendue intermédiaire. Cette fonction a un impact sur les performances de l'application si vous avez des flux de données importants. N'utilisez pas cette fonction dans les environnements de production.

Pour activer la capture des segments intermédiaires pour les flux d' Kafka, ajoutez les lignes suivantes à votre fichier configuration.yaml d'agent :

com.instana.plugin.javatrace:
   instrumentation:
    plugins:
     Kafka011StreamIntermediate: true
 

Activation des appels de service internes pour le serveur d'intégration d' WebMethods

Vous pouvez activer la fonctionnalité permettant d'enregistrer chaque appel de service dans le serveur d'intégration d' WebMethods sous forme de segment intermédiaire. Mais si le serveur gère des charges de travail importantes, cette fonctionnalité peut avoir un impact sur les performances de votre application.

Pour activer la capture des appels de service internes pour le serveur d'intégration d' WebMethods, ajoutez les lignes suivantes au fichier de configuration del'agent ( YAML ) :

com.instana.plugin.javatrace:
   instrumentation:
     plugins:
       WebmethodsIntermediate: true
 

Pour éviter toute baisse de performances due à la création de segments intermédiaires lors de la capture des appels de service internes sur le serveur d' webMethods Integration, veillez à ajouter les lignes suivantes à votre fichier de configuration de l'agent ( YAML ), en plus de la configuration permettant la capture des appels de service internes :

com.instana.plugin.javatrace:
   instrumentation:
     enableIntermediateSpanOpt: true
     plugins:
       WebmethodsIntermediate: true
       enableIntermediateSpanOpt: true
Remarque : une fois la configuration ajoutée, redémarrez le serveur d' webMethods Integration.

Désactivation de la capture de la trace de pile

Java Tracer enregistre les traces de pile pour les phases de sortie et les phases intermédiaires. Cependant, les traces de pile pour les intervalles d'entrée sont désactivées par défaut. Si une application présente une pile plus profonde ou si une requête génère plusieurs segments, la capture des traces de pile peut nuire aux performances de l'application. Si vous rencontrez des problèmes de performances, vous pouvez désactiver la trace de pile afin d'optimiser les performances.

Pour désactiver la capture de la trace de pile, lancez l' JVM e en spécifiant la propriété suivante :

-Dinstana.tracing.stack.exit=-1 -Dinstana.tracing.stack.log=-1
 

L'exemple suivant montre comment désactiver la capture de la trace de pile :

$ java -Dinstana.tracing.stack.exit=-1 -Dinstana.tracing.stack.log=-1 -jar application.jar
 
Remarque : cette configuration ne permet pas de désactiver les portées intermédiaires.

Configuration de la corrélation entre les segments

Par défaut, lorsque les consommateurs récupèrent des messages, un seul segment est généré pour représenter l'ensemble de l'opération de réception, regroupant tous les messages sous un seul segment. Pour améliorer la granularité des traces, une option de configuration permet d'activer la corrélation au niveau de chaque message.

Configuration de la corrélation des intervalles d' Kafka s pour une meilleure observabilité

Lorsque les consommateurs d' Kafka s récupèrent des messages, Instana génère généralement un seul élément « span » pour représenter l'ensemble de l'opération de sondage. Cela signifie que tous les messages récupérés au cours d'un même sondage sont regroupés sous une seule période de sondage, ce qui peut limiter la visibilité sur la manière dont chaque message est traité individuellement.

Pour améliorer la granularité de la traçabilité, l' Instana propose une option de configuration qui permet d'établir une corrélation pour chaque opération d'envoi et de réception, même lorsque les messages sont traités par lots. Cela permet de créer des intervalles distincts pour chaque message, offrant ainsi un aperçu plus détaillé du traitement au niveau des messages.

Cet instana.kafka.correlate.send.receive indicateur permet de visualiser les opérations effectuées lors du traitement individuel des enregistrements.

Quand ce drapeau est utile

Traitement des enregistrements individuels :

@KafkaListener(topics = "topicName", containerFactory = "kafkaListenerContainerFactory")
public void listen(ConsumerRecord<?, ?> record)
{
    // Process single record
    // DB operations, Kafka sends, etc.
}

Dans ce cas, cet indicateur permet de suivre les opérations d'enregistrement dans la base de données et les opérations d'envoi d' Kafka s qui ont lieu lors du traitement des enregistrements individuels.

Quand il n'est PAS recommandé d'utiliser ce drapeau

Traitement par lots avec des opérations groupées :

@KafkaListener(topics = "topicName")
public void receive(List<ConsumerRecord<?, ?>> consumerRecords) {
    // Direct bulk operations without iterating through individual records
}

Lorsque les enregistrements sont traités par lots et que des opérations en masse sont effectuées directement (comme les écritures en masse dans la base de données), cet indicateur n'apporte aucune valeur ajoutée et peut masquer les appels en aval dans la séquence POLL.

Recommandation pour le traitement par lots

Pour les cas d'utilisation impliquant un traitement par lots, vous pouvez désactiver cet indicateur en définissant une propriété système afin d'exclure l' JVM s en question au démarrage de l'application. Cette configuration garantit que les appels en aval restent visibles.

java -jar -Dcom.instana.kafka.correlate.send.receive=false app.jar

Considération importante concernant les modèles de traitement mixtes

Si votre application utilise à la fois des écouteurs par lots (traitement par lots) Kafka et des écouteurs standard (traitement enregistrement par enregistrement) Kafka, veuillez noter la restriction suivante concernant le instana.kafka.correlate.send.receive drapeau.

Lorsque l'indicateur est désactivé, les écouteurs d' Kafka s à enregistrement unique n'affichent plus le traitement sous forme de segments POLL individuels. Au lieu de cela, elles apparaissent sous la forme d'un seul segment POLL, tous les appels en aval étant regroupés sous ce segment, même si l'application traite les enregistrements individuellement.

Remarque : ce paramètre ne pouvant pas prendre entièrement en charge les deux modèles de traitement simultanément, les applications qui utilisent à la fois des écouteurs de type « batch » et « single-record » pour l' Kafka devront peut-être faire des concessions quant à la visibilité au niveau des messages dans le cadre du traitement « single-record ».
Remarque : la corrélation des intervalles de temps dans Kafka est désactivée par défaut (valeurs définies sur « false »).

Pour activer la corrélation inter- Kafka s, utilisez l'une des configurations suivantes :

  • Configuration de l'agent : configurez le fichier de configuration.yaml l'agent.
    com.instana.tracing:  
      kafka:  
        correlateEverySendReceive: true # possible values: true or false
    Remarque :

    Redémarrez l'agent ou l'application après avoir modifié le fichier de configuration.yaml l'agent.

  • Configuration des variables d'environnement : définissez la variable d'environnement comme indiqué dans l'exemple suivant :
    INSTANA_KAFKA_CORRELATE_SEND_RECEIVE=true # possible values: true or false
  • Configuration des propriétés système : définissez la propriété suivante au démarrage de l' JVM :
    -Dcom.instana.kafka.correlate.send.receive=true # possible values: true or false 

Les images suivantes montrent comment se comporte la corrélation de portée lorsque cette configuration est activée ou désactivée.

Figure 1. Corrélation de portée sans configuration activée
Corrélation de portée sans configuration activée

Figure 2. Corrélation de portée avec la configuration activée
Corrélation de portée avec la configuration activée

Pour désactiver complètement la corrélation de plage d' Kafka s dans Instana, utilisez l'une des configurations suivantes :

  • Configuration de l'agent:
    com.instana.tracing: 
      kafka: 
        correlateEverySendReceive: false 
  • Configuration des variables d'environnement : définissez la variable d'environnement.
    INSTANA_KAFKA_CORRELATE_SEND_RECEIVE=false
  • Configuration des propriétés du système : Indiquez cette option -Dcom.instana.kafka.correlate.send.receive=false lors du démarrage de l' JVM.

Ce instana.kafka.correlate.send.receive paramètre est désactivé par défaut afin d'éviter toute collecte inutile de données.

Configuration de la corrélation des traces

Instana La corrélation des traces est désactivée par défaut pour les technologies telles que IBM Db2, WebLogic, T3, IBM MQ et Kafka, qui utilisent Java Tracer pour le traçage. Pour activer la corrélation des traces pour ces technologies, consultez les sections suivantes :

Configuration de la corrélation des traces d' IBM Db2

Pour configurer la corrélation des traces d' IBM Db2, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : configurez le fichier de configuration.yaml l'agent comme suit :

      com.instana.tracing:
        db2:
          trace-correlation: true
          db2CorrelationMode: dont-override
          db2CorrelationDelimiter: '|'
          db2CorrelationField: ClientHostname
     
  • Configuration des variables d'environnement : définissez les variables d'environnement suivantes :

     INSTANA_DB2_TRACE_CORRELATION=true
     INSTANA_DB2_TRACE_CORRELATION_MODE=dont-override
     INSTANA_DB2_TRACE_CORRELATION_DELIMITER='|'
     INSTANA_DB2_TRACE_CORRELATION_FIELD=ClientHostname
     
  • Configuration des propriétés système : définissez les propriétés système suivantes dans l' JVM instrumentée :

     -Djdbc.db2.correlation.enable=true
     -Djdbc.db2.correlation.mod=dont-override
     -Djdbc.db2.correlation.delimiter=|
     -Djdbc.db2.correlation.field=ClientHostname
     
Remarque : par défaut, la corrélation (propagation TraceId et SpanId) est désactivée. La propagation s'effectue à l'aide des propriétés d'informations client de l' Db2. Le champ de corrélation prend par ClientHostname défaut le nom de champ. Le séparateur par défaut est |. Si le mode de corrélation est défini sur override (par défaut), les données de corrélation remplacent toute valeur existante. Toutefois, si cette option n'est pas activée override, les données de corrélation sont ajoutées à la valeur existante.

Configuration de la corrélation des traces dans l' WebLogicT3

Les appels aux composants EJB ( Java Bean) prennent en charge la corrélation entre les éléments d' WebLogic et T3.

Pour configurer la corrélation des traces d' WebLogics T3, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : configurez le fichier de configuration.yaml l'agent comme suit :

      # General Tracing Settings
      com.instana.tracing:
        weblogic:
          trace-correlation: true
     
  • Configuration des variables d'environnement : définissez la variable d'environnement suivante :

    INSTANA_WEBLOGIC_EJB_TRACE_CORRELATION=true
     
  • Configuration des propriétés système : définissez la propriété système suivante dans l' JVM instrumentée :

    -Dcom.instana.weblogic.ejb.trace.correlation=true
     

    Cette configuration ne fonctionne que si la communication « T3 » s'effectue entre des serveurs WebLogic. Toutefois, si le client WebLogic est utilisé en dehors du serveur WebLogic, la corrélation n'est pas possible.

  • WeblogicRpcIntermediate: Pour activer la portée d'appel intermédiaire « RPC » (appel de procédure à distance) dans la trace d'appel d' WebLogic RPC, vous devez configurer le fichier de configuration.yaml l'agent comme suit. Lorsque vous activez la portée d'appel intermédiaire d' RPC, vous pouvez consulter les appels d' RPC au sein du même serveur d' WebLogic.
     com.instana.plugin.javatrace:
       instrumentation:
         enableIntermediateSpanOpt: true
         plugins:
           WeblogicRpcIntermediate: true

    WeblogicRpcIntermediate est désactivée par défaut afin d'éviter toute ingestion inutile de données.

    Pour éviter les problèmes de baisse de performances qui surviennent lorsque le système crée des segments intermédiaires, vous pouvez activer enableIntermediateSpanOpt.

Activation de la corrélation des traces d' IBM MQ

Dans certains clients de consommation d' IBM MQ, la présence de données d'en-tête supplémentaires dans les messages d' IBM MQ peut entraîner des erreurs de traitement et le rejet des messages. Par conséquent, la corrélation des en-têtes de trace d' Instana n'est pas activée par défaut pour les applications IBM MQ Java.

Vous devez tester la corrélation des traces d' IBM MQ s dans un environnement hors production avant de l'activer dans un environnement de production. Si vous rencontrez des erreurs dans les applications client d' IBM MQ après avoir activé la corrélation des traces, procédez au dépannage comme suit :

  • Si vous pouvez modifier l'application, mettez-la à jour afin qu'elle ignore les données supplémentaires de l'en-tête « IBM MQ » ajoutées par Instana. Pour obtenir de l'aide concernant les modifications à apporter au client d' IBM MQ, veuillez contacter le service d'assistance d' IBM MQ.
  • Si vous ne pouvez pas modifier l'application, n 'activez pas la prise en charge de la corrélation des traces d' IBM MQ.

Pour activer la corrélation des traces pour l' IBM MQ, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : modifiez le fichier de configuration.yaml l'agent comme indiqué dans l'exemple suivant :

    # General Tracing Settings
    com.instana.tracing:
      ibm-mq:
        trace-correlation: true
        ibmmq-optin-queues-regexp: '^QueueName.*'
     

    Définissez la valeur de ibmmq-optin-queues-regexp l'expression régulière afin de filtrer les noms de files d'attente pour lesquels vous souhaitez activer la corrélation des traces. La valeur d'expression régulière est facultative et si elle est manquante, la corrélation de trace s'applique à toutes les files d'attente.

    Cette configuration est prise en compte dans l'un des scénarios suivants:

    • Au démarrage de la JVM
    • Lorsque le Tracer d' Java est mis à jour
    • Une fois que l'agent « Instana » a été arrêté pendant environ 15 minutes

    Il n'est pas rechargé à chaud lors de l'exécution. Un redémarrage rapide de l'agent peut ne pas prendre en compte ce changement de configuration car cette fonction est optimisée. Un changement de configuration nécessite une réinstrumentation complète.

  • Configuration des propriétés système : vous pouvez également définir une propriété système sur les machines virtuelles Java (JVMs) de l'application hébergeant les clients d' IBM MQ, comme le montre l'exemple suivant :

    -Dinstana.ibm.mq.trace.correlation.enable=true -Dcom.instana.ibm.mq.trace.optin.queues="^QueueName.*"
     

Le capteur « IBM MQ » offre également une fonctionnalité de traçage via des exits utilisateur (traçage côté serveur pour IBM MQ ). Pour plus d'informations sur le capteur « IBM MQ », consultez la page « IBM MQ ».

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

Pour activer le format d'en-tête des en-têtes de corrélation de trace d' Kafka, utilisés par l'outil Java Tracer, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : configurez le fichier de configuration.yaml l'agent. Pour plus d'informations, consultez la section consacrée à l'agent hôte « Instana ».

  • Configuration des variables d'environnement : définissez la variable d'environnement comme indiqué dans l'exemple suivant :

    INSTANA_KAFKA_HEADER_FORMAT= both # possible values: binary, both, string
     

    Les valeurs valides sont binary, string, ou both.

  • Configuration des propriétés système : définissez la propriété suivante au démarrage de l' JVM :

    -Dcom.instana.kafka.trace.header.format=binary # possible values: binary, both, string
     

Pour désactiver complètement la corrélation des traces d' Kafka, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : voir l'agent hôte Instana.
  • Configuration des variables d'environnement : définissez la variable d'environnement INSTANA_KAFKA_TRACE_CORRELATION=false, mais l'utilisation de cette option n'est pas recommandée.
  • Configuration des propriétés du système : Indiquez cette option -Dcom.instana.kafka.trace.correlation=false lors du démarrage de l' JVM.

Pour plus d'informations, voir Kafka Header Migration.

Configuration du regroupement des segments

Le regroupement de segments est une fonctionnalité qui permet de regrouper plusieurs segments et de les envoyer à l'agent par lots, plutôt que individuellement. Lorsque le regroupement des spans est activé, les spans portant le même nom, le même type et ayant la même durée (inférieure à 10 ms) sont regroupés. En général, les opérations à haute fréquence et de courte durée, telles que les requêtes vers la base de données, sont regroupées.

L'image suivante illustre la mise en œuvre du regroupement de balises span. Le tableau de bord met en évidence 5 sous-appels, dont 3 sont regroupés et répertoriés dans la section « Appels ».

Figure 3 Lot de portées
Lot de portées
Remarque : le regroupement par intervalle est activé par défaut. Pour activer explicitement le regroupement des balises span, définissez le INSTANA_SPANBATCHING_ENABLED paramètre sur true.

Le traitement par lots Span est activé automatiquement pour les applications suivantes : Aerospike, Amazon s3, Cassandra, Data Grid, DynamoDB, Elasticsearch, FTP, Google Cloud Bigtable, Google Cloud storage, HBase, Hazelcast, IMS, JavaMail, Kinesis, LDAP, Memcached, MongoDB, Neo4j et Redis.

Pour Data Grid et l' JDBC, des stratégies spécifiques de fusion des intervalles sont appliquées. Pour plus d'informations, consultez la section « Stratégies de regroupement des spans ».

Désactiver le regroupement des balises span

Si vous désactivez le regroupement des segments, le nombre de segments individuels envoyés augmente, ce qui entraîne un volume de données plus important.

Pour désactiver le regroupement des balises span, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : Configurez le fichier de configuration de l'agent comme suit :

      com.instana.plugin.javatrace:
        instrumentation:
          spanBatchingEnabled: false
     
  • Configuration des variables d'environnement : Définissez la variable d'environnement comme suit :

    INSTANA_SPANBATCHING_ENABLED=false
     
  • Configuration des propriétés système : Définissez la propriété système dans l' JVM e instrumentée comme suit :

    -DspanBatchingEnabled=false
     

Désactiver le regroupement des segments pour les segments intermédiaires WebLogic RPC

Le regroupement de segments intermédiaires entraîne la fusion du segment parent, ce qui rompt la relation parent-enfant et fait que les segments enfants apparaissent comme orphelins. La désactivation du traitement par lots pour les segments intermédiaires d' RPC permet d'éviter ce problème et de conserver une structure de trace correcte. Pour désactiver le regroupement des segments pour les segments intermédiaires WebLogic RPC, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : Configurez le fichier de configuration de l'agent (<agent_install_dir>/etc/instana/configuration.yaml) comme suit :

     com.instana.tracing:
       batching:
         disabled:
           - rpc-intermediate
  • Configuration des variables d'environnement : Définissez la variable d'environnement comme suit :

    INSTANA_TRACING_BATCHING_DISABLED=rpc-intermediate
Remarque : une fois la configuration ou la variable d'environnement ajoutée, redémarrez le serveur WebLogic.

Stratégies de regroupement des segments pour les segments de la grille de données et de l' JDBC

Des applications telles que Data Grid et JDBC mettent en œuvre les stratégies de regroupement personnalisées suivantes pour le regroupement par intervalle :

  • Grille de données : les intervalles ne sont fusionnés que si et datagrid.cacheNamedatagrid.operation ont la même valeur dans des intervalles consécutifs. Le regroupement par tranchée n'est activé que si cette condition est remplie.

  • JDBC : Les types de stratégies de regroupement de segments suivants sont pris en charge :

    • Traitement par lots par défaut (activé par défaut)

      Les intervalles sont fusionnés, quelle que soit la valeur des attributs d'intervalle de l'élément ` JDBC `.

    • Gestion personnalisée des lots (en option)

      Les intervalles ne sont fusionnés que si la valeur de JDBC.statement est identique dans les intervalles consécutifs.

Activation du regroupement personnalisé pour les segments d' JDBC

La taille des données ingérées augmente si vous activez le regroupement personnalisé pour les segments d' JDBC.

Pour activer le regroupement personnalisé des segments d' JDBC, utilisez l'une des options de configuration suivantes :

  • Configuration de l'agent : Configurez le fichier de configuration de l'agent comme suit :

      com.instana.plugin.javatrace:
        instrumentation:
          customJDBCSpanBatchingEnabled: true
     
  • Configuration des variables d'environnement : Définissez les variables d'environnement comme suit :

    INSTANA_CUSTOM_JDBC_SPANBATCHING_ENABLED=true
     
  • Configuration des propriétés système : Définissez la propriété système dans l' JVM e instrumentée comme suit :

    -DcustomJDBCSpanBatchingEnabled=true
     

Configuration de la suppression des intervalles

Le traceur Instana Java intègre un mécanisme permettant de limiter la durée des spans en cas de charge élevée afin d'éviter une consommation excessive de ressources. Par défaut, le traceur masque les segments de sortie et les segments intermédiaires lorsque leur fréquence dépasse 240 segments par seconde. Ce comportement contribue à maintenir la stabilité du système, mais peut entraîner les problèmes suivants :

  • Portées manquantes dans les tracés
  • Portées orphelines (portées sans parent)
    Figure 4 Portée orpheline
    Portée orpheline

Lorsqu'une suppression de plage se produit, l'agent enregistre un message comme indiqué dans l'exemple suivant :

Suppressed span(s) due to high number of short (< 4 ms) spans (SpanMonitor rate: 0.870 (last span: spring-rest 0-2486541141927097937:7078946718854091545:-2486541141927097937, duration: 3941 ms, erroneous: false, http.method: GET, http.host: example.com, http.url: http://example.com/api/testB, 
http.size: 11, http.status: 200)

Paramètres de contrôle de la suppression de portée

La suppression des intervalles peut être configurée à l'aide des paramètres de configuration suivants :

  • minspanduration: Ce paramètre définit la durée minimale d'un intervalle (par défaut : 4 ms). Toute longueur inférieure à cette valeur est ignorée.
    com.instana.plugin.javatrace:
      instrumentation:
        minspanduration: 1
  • span-suppression-start: Ce paramètre définit le seuil de fréquence de balayage à partir duquel la suppression commence. Si le taux est inférieur à cette valeur, aucune portée n'est supprimée. Cependant, la suppression s'intensifie progressivement dès que le débit dépasse cette valeur, jusqu'à un maximum de 5 000 cycles par seconde (à partir duquel tous les cycles sont supprimés). Par exemple, si ce paramètre est défini sur 3000, la suppression ne commence que lorsque la fréquence de balayage dépasse 3 000 balayages par seconde.
    com.instana.plugin.javatrace:
      instrumentation:
        span-suppression-start: 3000
Remarque : le fait de définir une valeur élevée span-suppression-start peut augmenter le volume de données traitées.

Configuration des niveaux de journalisation

Vous pouvez activer et désactiver les niveaux de journalisation dans « Instana ». Instana prend en charge les niveaux de journalisation suivants :

  • OFF
  • ERROR
  • WARN

Lorsqu'un niveau de journalisation est défini, tous les niveaux de journalisation de priorité supérieure sont inclus dans le traçage. Par exemple, si ERROR est configuré, les niveaux de ERROR journalisation et FATAL sont tracés.

Activation du niveau de journalisation défini par l'utilisateur

Pour configurer le niveau de journalisation, utilisez l'une des options de configuration suivantes :

  • Configuration des propriétés système : définissez instana_log_level_capture sur ERROR ou WARN.
  • Configuration des variables d'environnement : définissez-la INSTANA_LOG_LEVEL_CAPTURE sur ERROR ou WARN.

Si vous indiquez un niveau de journalisation non valide (par exemple, INFO ou TRACE), l'avertissement suivant est consigné dans les journaux de l'agent et le niveau de journalisation WARN par défaut est utilisé.

The value 'INFO' for 'INSTANA_LOG_LEVEL_CAPTURE' is not valid. Valid values are 'WARN', 'ERROR' and 'OFF'.
 

Désactivation des modules d'enregistrement

Pour désactiver la journalisation pour tous les modules de journalisation, vous pouvez utiliser l'une des options de configuration suivantes :

  • Configuration de l'agent : configurez le traçage d' Java s afin de désactiver tous les plug-ins de journalisation dans le fichier d' configuration.yaml de l'agent :

        com.instana.plugin.javatrace:
          instrumentation:
            plugins:
              Logging: false
     
  • Configuration des propriétés du système : Définir instana_log_level_capture="OFF".

  • Configuration des variables d'environnement : Définir INSTANA_LOG_LEVEL_CAPTURE="OFF".
    Remarque : vous devez redémarrer l'agent ou l'application après avoir modifié le fichier ` configuration.yaml ` de l'agent.

Configuration d' Java Tracer pour les JVM exécutant des agents incompatibles

L'agent « Instana » ne surveille pas automatiquement les JVM sur lesquelles l'un des agents suivants est également en cours d'exécution :

  • AppDynamics
  • DataDog
  • Dynatrace
  • Glowroot
  • Kanela, the Kamon Instrumentation Agent
  • ManageEngine APM Insight Java Agent
  • New Relic
  • Oracle Java Flight Recorder
  • Instrumentation OpenTelemetry pour Java
  • Riverbed AppInternals
  • Spring Loaded
  • Wily Introscope, également désigné par CA Application Performance Management (CA APM) et Broadcom DX Application Performance Management (DX APM)

Pour surveiller les JVM sur lesquelles l'un de ces agents est exécuté, configurez le fichier de configuration.yaml l'agent comme suit :

com.instana.plugin.javatrace:
  trace-jvms-with-problematic-agents: true
 

Ignorer les cours

Pour désactiver l'instrumentation d'une ou de plusieurs classes spécifiques d'un paquet, vous pouvez utiliser l'une des options de configuration suivantes :

  • Configuration de l'agent : pour configurer un capteur de traçage d' Java afin qu'il ignore l'instrumentation d'une ou de plusieurs classes d'un paquet, procédez comme suit dans le fichier de configuration.yaml l'agent :

        com.instana.plugin.javatrace:
          instrumentation:
             ignoredClass: "^ClassName or PackageName"
     

    Par exemple, utilisez la configuration suivante pour désactiver l'instrumentation de toutes les classes du org.apache.derby paquet :

           com.instana.plugin.javatrace:
             instrumentation:
                ignoredClass: org.apache.derby.
     
    Remarque : redémarrez l'agent ou l'application après avoir modifié le fichier de configuration.yaml l'agent.
  • Configuration des propriétés système : définissez-les ignoredClass="^ClassName or PackageName" comme indiqué dans l'exemple suivant :

    -DignoredClass=org.postgresql
     
  • Configuration des variables d'environnement : Définir IGNORED_CLASS_NAME="^ClassName or PackageName".

Ignorer les points de terminaison

Cette fonctionnalité permet de réduire l'ingestion de données superflues en excluant certaines traces ou certains appels. Cette méthode de filtrage permet d'affiner la collecte de traces. Pour désactiver les traces, définissez ce paramètre dans l'un des paramètres de configuration de Tracer d' Java suivants :

Cette fonctionnalité est disponible pour les technologies suivantes :

  • DynamoDB
  • Redis
  • Kafka

Éléments à prendre en compte pour ignorer les points de terminaison

Avant de configurer la fonctionnalité d'exclusion des points de terminaison, prenez connaissance des règles suivantes relatives au filtrage des segments :

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

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 5. Méthodes et critères d'évaluation dans l'interface utilisateur d' Instana
Méthodes et critères d'évaluation

La fonctionnalité permettant d'ignorer des points de terminaison ne fonctionne qu'avec des noms de méthode exacts. Assurez-vous d'utiliser le nom de méthode correct à filtrer.

Configuration de l'agent

Vous pouvez ignorer globalement les points de terminaison de tous vos services en les configurant via l'agent.

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

com.instana.tracing:
  ignore-endpoints:

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

    # Filtering by Method Name and Endpoint for Kafka
    kafka:
      - methods: ["consume"]
        endpoints: ["topic1", "topic2"]  # Exclude consume calls for topic1 and topic2
      - methods: ["consume", "publish"]
        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 et DynamoDB )

    • GET et TYPE les commandes dans Redis
    • QUERY commande dans l' DynamoDB
  • Filtrage par méthode et paramètre d'évaluation (uniquement pour Kafka )

    • CONSUME méthode pour topic1 et topic2 dans Kafka et toutes les traces en aval
    • CONSUME et PUBLISH les méthodes pour topic3 l'in Kafka, ainsi que toutes les traces en 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

Options de méthode

Pour les méthodes d' Kafka, vous pouvez utiliser les options suivantes :

  • Consommateur : consume et poll
  • Producteur : publish et send

Le nombre de points de terminaison pour Kafka n'est pas limité. Par conséquent, un grand nombre de points de terminaison peut potentiellement nuire aux performances. Il convient donc de bien réfléchir à l'utilisation de la taille des points de terminaison pour l' Kafka. Redis et la taille de la liste des points de terminaison DynamoDB est limitée à 10.

Kafka La fonction « Ignorer les points de terminaison » présente une caractéristique importante qui permet de fusionner les configurations en fonction de l'utilisation de *. L'exemple suivant illustre cette caractéristique :

  ignore-endpoints:
    kafka:
      - methods: [ "consume", "publish" ]
        endpoints: [ "topic1", "topic2" ]
      - methods: [ "consume" ]
        endpoints: [ "topic3" ]
      - methods: [ "*" ] # Applied to all methods
        endpoints: [ "topic4" ]
      - methods: [ "consume", "publish" ]
        endpoints: [ "*" ] # Applied to all topics

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

  • Tous les sujets sont ignorés en raison de la dernière entrée, où * est appliqué aux méthodes consume publish et. Dans ce cas, toutes les autres entrées sont remplacées.
  • Aucune des entrées précédentes n'est prise en compte.

Variables d'environnement

Vous pouvez configurer les points de terminaison à ignorer en utilisant la variable INSTANA_IGNORE_ENDPOINTS d'environnement pour filtrer les points de terminaison par service.

Grâce à cette variable d'environnement, vous pouvez exclure des traces en fonction des méthodes et des points de terminaison.

INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:publish,consume

Cette configuration filtre les traces suivantes :

  • GET et TYPE les commandes dans Redis
  • QUERY et SCAN les commandes dans DynamoDB
  • PUBLISH et CONSUME les méthodes de l'interface « Kafka » pour tous les points de terminaison

Dans le fichier ` Kafka `, vous pouvez définir des variables d'environnement pour ignorer certains points de terminaison, mais vous ne pouvez spécifier qu'un seul point de terminaison et une seule méthode à la fois.

INSTANA_IGNORE_ENDPOINTS=kafka:topic1,topic2,topic3,topic4,topic5,topic6,topic7,topic8,topic9,topic10,topic11

Pour Kafka, contrairement à Redis et DynamoDB,, la liste des points de terminaison n'est pas limitée à 10. Vous devez donc bien réfléchir à la taille de la liste, car cela peut avoir une incidence sur les performances.

En utilisant les options de méthode pour ` Kafka `, configurez la variable d'environnement comme suit :

INSTANA_IGNORE_ENDPOINTS=kafka:consume,publish
OR
INSTANA_IGNORE_ENDPOINTS=kafka:poll,send
OR
INSTANA_IGNORE_ENDPOINTS=kafka:*

Propriétés système

Vous pouvez également utiliser la propriété système ` Java ` pour configurer les points de terminaison à ignorer. L'exemple suivant montre comment configurer des points de terminaison à ignorer à l'aide des propriétés système :

java -Dinstana.ignore-endpoints="redis:get,type;dynamodb:query,scan;kafka:publish,consume" -jar application-jar

Pour l' Kafka e, vous pouvez utiliser la propriété système permettant d'ignorer des points de terminaison, mais une seule méthode et un seul point de terminaison peuvent être spécifiés à la fois.

java -Dinstana.ignore-endpoints="kafka:topic1,topic2,topic3,topic4,topic5,topic6,topic7,topic8,topic9,topic10,topic11" -jar application-jar

Pour Kafka, contrairement à Redis et DynamoDB,, la liste des points de terminaison n'est pas limitée à 10. Vous devez donc bien réfléchir à la taille de la liste, car cela peut avoir une incidence sur les performances.

En utilisant les options de méthode pour ` Kafka `, configurez la propriété système comme suit :

java -Dinstana.ignore-endpoints="kafka:consume,publish" -jar application-jar
OR
java -Dinstana.ignore-endpoints="kafka:poll,send" -jar application-jar
OR
java -Dinstana.ignore-endpoints="kafka:*" -jar application-jar

Limite du nombre d'annotations

Par défaut, vous pouvez ajouter jusqu'à 10 annotations à un segment et les afficher dans l'interface utilisateur d' Instana.

Augmenter la limite d'annotations

Si vous devez ajouter davantage d'annotations à un Span lors de l'utilisation du SDK d' Instana, vous pouvez augmenter cette limite en définissant la propriété système suivante sur l' JVM surveillée :

-Dinstana.tracing.annotation.size=<desired_limit>

Par exemple, pour porter la limite à 20, vous pouvez lancer votre application avec :

java -Dinstana.tracing.annotation.size=20 -jar application.jar
Remarque :
  • L'augmentation de la limite d'annotation entraîne une augmentation de la consommation de mémoire de l'application surveillée. Ajustez cette valeur en fonction des ressources système disponibles
  • Une fois la propriété système définie, redémarrez l' JVM ur que la modification prenne effet.

Pour obtenir la liste complète de toutes les annotations enregistrées par l'outil Tracer d' Java, consultez la page Java trace annotations.

Capture des traces de pile erronées

Dans le cas d'applications traitant un volume élevé de transactions, la capture des traces de pile peut constituer une charge importante pour les performances, en particulier lorsque la majorité des opérations s'effectuent correctement et ne nécessitent pas ces informations. Dans ces cas-là, la capture des traces de pile erronées constitue une approche optimisée en termes de performances pour recueillir des traces de pile susceptibles de fournir des informations pertinentes.

Vous pouvez activer la capture des traces de pile uniquement pour les segments présentant des erreurs en utilisant l'une des options de configuration suivantes. La capture des traces de pile uniquement pour les segments présentant des erreurs améliore les performances et réduit le volume de données ingérées, car les traces de pile des segments réussis sont ignorées.

Configuration de l'agent

Définissez la configuration suivante dans le fichier de configuration de l'agent :

com.instana.tracing:
  stack.capture.timing: error
Remarque : les modifications apportées à la configuration de l'agent ne nécessitent pas de redémarrage de l'application.

Comportement : ne capture les traces de pile que pour les segments présentant des erreurs (c'est-à-dire ceux dont les métadonnées contiennent des erreurs), ce qui améliore les performances et réduit le volume de données ingérées en excluant les traces de pile des segments réussis.

Variables d'environnement

Définissez et exportez la variable d'environnement INSTANA_TRACING_STACK_CAPTURE_TIMING dans votre environnement comme suit :

export INSTANA_TRACING_STACK_CAPTURE_TIMING=error
Remarque :
  • Définissez cette variable dans l'environnement d'exécution de l'application.
  • Redémarrez l'application pour appliquer la modification.

Propriétés système

Définissez la propriété suivante :

-Dcom.instana.tracing.stack.capture.timing=error 

Pour utiliser cette propriété système, vous devez ajouter l'argument suivant lors du lancement de l'application :

java -Dcom.instana.tracing.stack.capture.timing=error -jar application.jar

Configuration du filtrage

Vous pouvez réduire le volume des données de trace en filtrant certaines séquences en fonction de leurs attributs. Cette fonctionnalité permet d'optimiser les coûts liés à l'ingestion des données et de se concentrer sur les traces les plus pertinentes pour vos besoins en matière de surveillance des applications.

La fonction de filtrage est disponible pour les segments de l' HTTP et de l' JDBC. Vous pouvez configurer des règles de filtrage via le fichier de configuration.yaml l'agent afin d'exclure des segments en fonction d'attributs tels que les URL, les requêtes SQL ou les méthodes de l' HTTP.

Fonctions clés :

  • HTTP Filtrage des points de terminaison : exclut les segments « HTTP » et supprime automatiquement les segments enfants ainsi que les traces en aval.
  • JDBC Filtrage des segments : exclut les segments de la base de données sans supprimer le traçage en aval.
  • Correspondance flexible : prend en charge la correspondance exacte, les motifs « commence par », « se termine par », « contient » et les caractères génériques ('*').
  • Configuration dynamique : les modifications sont appliquées sans qu'il soit nécessaire de redémarrer l'application après la configuration initiale.

Pour plus d'informations sur la configuration du filtrage, notamment la syntaxe de configuration, les attributs de plage, les exemples et les limitations, consultez la section « Configuration du filtrage ».

Activation de la capture de segments erronés d' Open Liberty

Dans le serveur d' Open Liberty, vous pouvez capturer les requêtes dont le contexte n'est pas valide en activant la capture des segments erronés. Cette fonctionnalité permet d'augmenter le débit d'ingestion des données provenant de l'application en cas de volume élevé de requêtes comportant un contexte non valide. Faites preuve de prudence lorsque vous activez cette fonctionnalité dans des environnements de production.

Pour permettre la capture des segments d'entrée de requête présentant un contexte non valide pour l' Open Liberty, ajoutez les lignes suivantes à votre fichier configuration.yaml d'agent (*instanaAgentDir*/etc/instana/configuration.yaml):

com.instana.plugin.javatrace:
   instrumentation:
    plugins:
      LibertyHttpChannelEntry: true