Optimisez l'ingestion des données dans l' Instana

Dans les pratiques modernes d'observabilité, la gestion efficace de l'ingestion des données est essentielle pour maintenir les performances des applications et la fiabilité de l'infrastructure. Vous pouvez optimiser l'ingestion de données dans Instana à partir de diverses sources de surveillance, notamment le traçage, l'infrastructure, la surveillance des utilisateurs finaux, les synthétiques, la journalisation et les environnements sans serveur. Cette stratégie fournit des techniques exploitables, telles que le filtrage des instruments, la configuration des capteurs, les ajustements du taux d'interrogation et la surveillance sélective afin de réduire le bruit, d'améliorer les performances et de maintenir l'efficacité de l'observabilité.

Gérer les données ingérées à partir du traçage

Une gestion efficace des données de traçabilité commence par une instrumentation bien pensée. En activant, désactivant ou filtrant de manière sélective les intervalles, les équipes peuvent réduire le volume d'ingestion, minimiser le bruit et ne conserver que les traces pertinentes, tout en conservant une visibilité sur les workflows essentiels.

Configuration des instruments et filtrage

Vous pouvez utiliser l'une des techniques suivantes pour configurer et filtrer les données de traçage.

  • Enregistrer les traces de pile uniquement pour les segments présentant des erreurs

    La capture des traces de pile uniquement pour les segments présentant des erreurs constitue une première étape d'optimisation recommandée, car elle réduit considérablement la taille des traces et le volume global des données ingérées, tout en conservant les informations de diagnostic essentielles pour les segments ayant échoué. Cette approche améliore également le rapport signal/bruit en évitant les traces de pile superflues pour les segments réussis, ce qui rend le dépannage plus efficace et plus ciblé.

    Pour plus de détails sur la configuration spécifique à chaque langue, consultez les ressources suivantes :

  • Désactiver la capture de la trace de la pile

    Si le fait de limiter la collecte des traces de pile aux segments présentant des erreurs ne permet pas de réduire suffisamment le volume de données, la capture des traces de pile peut être désactivée de manière plus générale. La désactivation de la collecte des traces de pile pour les segments de sortie et intermédiaires réduit encore davantage la taille des données de trace et le volume de données ingérées, peut diminuer la surcharge liée aux performances, et s'avère particulièrement utile pour les applications à haut débit ou les services présentant des piles d'appels profondes.

    Pour plus de détails sur la configuration spécifique à chaque langue, consultez les ressources suivantes :

  • Désactiver le traçage par technologie

    Vous pouvez désactiver complètement le traçage pour des technologies telles que Redis, DynamoDB, et Logging afin d'empêcher la création de segments et de réduire l'ingestion de données. L'exemple suivant illustre comment désactiver le traçage pour n'importe quelle technologie :

    com.instana.plugin.javatrace:
     instrumentation:
       plugins:
         Redis: false
         DynamoDB: false
         Logging: false
     
  • Désactiver le traçage par bibliothèque

    Vous pouvez désactiver certaines bibliothèques d'instrumentation, telles que Spring Couchbase, afin d'empêcher la génération de segments à partir de sources et de réduire l'ingestion de données. L'exemple suivant montre comment configurer cette fonction :

    com.instana.plugin.javatrace:
     instrumentation:
       plugins:
         CouchbaseExit: false
         Couchbase3Exit: false
     
    Remarque : redémarrez l'application « Java » pour vous assurer que l'instrumentation est désactivée.
  • Filtrage des points d'accès

    Instana visualise les interactions de service sous forme de points finaux, et leur filtrage permet de supprimer les opérations de faible valeur et de mettre en évidence les traces critiques pour l'entreprise. Cela réduit le bruit du tableau de bord et permet un contrôle précis des commandes ou des actions surveillées. Pour plus d'informations, consultez Ignorer les points de terminaison pour les agents hôtes et Ignorer les points de terminaison pour l' Node.js.

    Le tableau suivant répertorie les traceurs et les packages qui prennent 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
    connectivité JDBC

    Exemple : configuration de l'exclusion d'un terminal

    Pour configurer les points de terminaison à ignorer, vous devez spécifier les points de terminaison qui doivent être exclus de la surveillance dans la com.instana.tracing.ignore-endpoints section de votre fichier de configuration d'agent, comme indiqué dans 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
    
     

    Pour plus d'informations sur l'application des principes de la politique d'utilisation équitable (FUP) dans différents environnements d'exécution et bibliothèques, consultez les blogs suivants :

  • Filtrage basé sur les attributs Span pour les applications d' Java

    Vous pouvez réduire le volume de données de trace ingérées pour les applications d' Java s en filtrant certaines séquences (spans) en fonction de leurs attributs, grâce à la fonctionnalité de filtrage des séquences (spans) de l'outil de traçage Java. 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.

    Pour les applications Java, l'outil de traçage Java prend en charge le filtrage des segments HTTP et JDBC. Vous pouvez configurer des règles de filtrage via le fichier de configuration.yaml l'agent afin d'exclure des segments en fonction de certains attributs, tels que :

    • HTTP filtrage : URL, méthodes de l' HTTP, codes d'état, en-têtes, paramètres de requête et messages d'erreur
    • JDBC filtrage : instructions SQL, chaînes de connexion aux bases de données et messages d'erreur

    Exemple : Java Configuration du filtrage des intervalles pour Tracer HTTP et JDBC

    com.instana.tracing:
      filter:
        exclude:
          - name: exclude HTTP health check endpoints
            attributes:
              - key: http.url
                values: [/health, /ping, /ready]
                match_type: endswith
          - name: exclude JDBC queries for audit tables
            attributes:
              - key: jdbc.statement
                values: [audit_log, session_data]
                match_type: contains

    Lorsque les segments « HTTP » sont exclus, tous les segments enfants et le traçage en aval sont automatiquement supprimés. JDBC Le filtrage des segments exclut uniquement les segments de la base de données sans interrompre les opérations en aval.

    Pour plus d'informations sur la configuration du filtrage des segments d' Java, consultez la section « Configuration du filtrage ».

    Pour plus d'informations sur le filtrage basé sur les attributs de portée pour les applications d' Java, consultez l'article de blog suivant :

  • Modifier le mode de l'agent hôte

    Le passage en mode Infrastructure désactive tous les traceurs et permet d'optimiser l'ingestion des données lorsque cela est nécessaire. Pour plus d'informations, consultez la section Modification des modes d'agent.

  • Utilisation de l'en-tête X-INSTANA-S

    Vous pouvez inclure l 'en-tête X-INSTANA-S dans les flux d'applications en aval afin de supprimer de manière sélective certaines traces spécifiques. Cette configuration permet un contrôle précis des appels capturés, mais nécessite actuellement une implémentation programmatique.

  • Désactiver l'instrumentation automatique de trace

    Pour les applications d' Java, vous pouvez désactiver le traçage pour un processus spécifique à l'aide des options de ligne de commande du processus ou des variables d'environnement, ce qui permet un contrôle ciblé de l'instrumentation. Pour plus d'informations, consultez la section Désactivation de l'instrumentation de trace d' Java.

Remarque : De plus, au niveau de l' MVS, vous pouvez exécuter le processus ignore pour réduire l'ingestion de données.

Gérer les données ingérées à partir de l'infrastructure

Par défaut, Instana active tous les capteurs via la détection automatique, mais vous pouvez les désactiver si nécessaire à l'aide du fichier de configuration. La plupart des capteurs permettent de configurer la fréquence d'interrogation, à l'exception des capteurs Azure. Les capteurs plus grands prennent également en charge des capacités de filtrage afin de limiter les entités surveillées, ce qui contribue à réduire l'ingestion de données inutiles. De plus, vous pouvez régler les intervalles d'interrogation dans le fichier de configuration afin d'ajuster la collecte de données et d'optimiser les performances. L'exemple suivant décrit la configuration de la section ibmmq plugin dans le fichier de configuration de l'agent :

com.instana.plugin.ibmmq:
  enabled: true
  poll_rate: 75
 

Pour plus d'informations, consultez la section « Configuration de la fréquence d'interrogation ».

Capteurs contribuant à une ingestion élevée de données

Le tableau suivant explique la raison de l'ingestion élevée pour certains types de capteurs :

Type de détecteur Exemples Raison d'une ingestion élevée
Capteurs du système de messagerie IBM MQ, TibcoEMS Génère des données substantielles en raison de leur rôle central dans les environnements et du grand nombre d'entités (files d'attente, sujets, etc.) ils surveillent.
Capteurs de plate-forme Kubernetes vSphere, PCF Des mises à jour fréquentes et des mesures détaillées contribuent à une ingestion importante de données.
Prometheus capteurs Prometheus Les intervalles d'interrogation configurables permettent d'ajuster l'ingestion. Pour plus d'informations, consultez la section « Configuration des environnements d' Kubernetes ».

Raisons expliquant l'ingestion élevée de données provenant de certains capteurs

Les systèmes de messagerie traitent généralement de grands volumes de transactions et d'entités, ce qui entraîne naturellement la génération d'une quantité importante de données. De même, les capteurs qui surveillent un large éventail d'entités et de mesures diverses contribuent à augmenter l'ingestion. Pour pallier cela, certains capteurs prennent en charge l'utilisation d'expressions régulières dans les fichiers de configuration, ce qui permet aux équipes de filtrer et de limiter le nombre d'entités surveillées.

Stratégies d'optimisation

  • Filtrage des entités

    Vous pouvez utiliser des expressions régulières dans les fichiers de configuration pour surveiller uniquement un sous-ensemble d'entités.

  • Ajustement du taux de sondage

    Pour les capteurs prenant en charge des intervalles d'interrogation configurables, vous pouvez ajuster la fréquence afin de réduire le volume de données. Pour plus d'informations sur la configuration de l'intervalle d'interrogation, consultez les sections de configuration suivantes :

  • Services gérés dans le cloud ( AWS, Azure, GCP )

    Vous pouvez utiliser des balises cloud pour inclure ou exclure de manière sélective des instances de services gérés de la surveillance. L'exemple suivant montre comment utiliser les balises cloud :

    com.instana.plugin.aws.rds:
     include_tags: # Comma separated list of tags in key:value format (For example, env:prod,env:staging)
     
    com.instana.plugin.aws.rds:
     exclude_tags: # Comma separated list of tags in key:value format (For example, env:dev,env:test)
     
  • Surveillance sélective

    Instana prend en charge des mécanismes d'activation et de désactivation permettant de contrôler quels processus et conteneurs sont surveillés. Par défaut, l'agent fonctionne en mode « opt-out ». Lorsque INSTANA_SELECTIVE_MONITORING n'est pas défini ou est défini sur OPT_OUT, l'agent surveille tous les processus, sauf si vous les excluez explicitement.

    • Contrôle au niveau des processus et des conteneurs

    Vous pouvez utiliser les paramètres de configuration pour inclure ou exclure des processus ou des conteneurs spécifiques de la surveillance. Pour plus d'informations, consultez la page Instana sur la surveillance sélective.

    Mode de surveillance Description Environnement de l'agent Environnement de traitement Résultat
    Refuser Tous les processus sont surveillés par défaut Non défini ouINSTANA_SELECTIVE_MONITORING=OPT_OUT Non défini Le processus est surveillé
    Refuser Tous les processus sont surveillés par défaut Non défini ouINSTANA_SELECTIVE_MONITORING=OPT_OUT INSTANA_MONITORING=false Le processus est ignoré
    Accepter Aucun processus surveillé par défaut INSTANA_SELECTIVE_MONITORING=OPT_IN Non défini Le processus est ignoré
    Accepter Aucun processus surveillé par défaut INSTANA_SELECTIVE_MONITORING=OPT_IN INSTANA_MONITORING=true Le processus est surveillé
    • Kubernetes étiquette d'espace de noms pour l'exclusion et l'inclusion d'espace de noms

    Instana vous permet de contrôler la surveillance de la charge de travail au niveau de l'espace de noms d' Kubernetes s à l'aide de instana-workload-monitoring l'étiquette. Cette balise détermine si un espace de noms est inclus ou exclu de la surveillance :

    • instana-workload-monitoring=false → Désactivation : la surveillance est désactivée pour toutes les charges de travail dans l'espace de noms.
    • instana-workload-monitoring=true → Activation : la surveillance est activée pour les charges de travail dans l'espace de noms.

Gérer l'ingestion des données provenant de la surveillance des utilisateurs finaux (EUM)

Il existe des limites prédéfinies concernant la quantité de données collectées par onglet de navigateur (il s'agit des paramètres par défaut d' Instana, et vous ne pouvez pas les modifier). Pour gérer l'ingestion de données depuis EUM, vous pouvez choisir d'activer ou de désactiver certaines des fonctionnalités facultatives suivantes :

Gérer l'ingestion de données provenant de sources synthétiques

Pour minimiser l'ingestion de données provenant de tests synthétiques dans Instana, envisagez les approches suivantes :

  • Désactiver l'enregistrement vidéo dans les tests de navigateur, qui est le paramètre par défaut
  • Limiter la capture d'écran, car les captures d'écran ne sont généralement prises que lorsqu'un test échoue
  • Augmentation de la fréquence des tests en diminuant le nombre de tests exécutés grâce à l'augmentation de la taille de l'intervalle (appelée fréquence de planification (en minutes) dans Instana )
  • Arrêter l'exécution du test lorsque la surveillance synthétique n'est pas nécessaire

Gérer l'ingestion des données provenant des sources de journalisation

Instana fournit des options permettant de contrôler l'ingestion des données provenant des sources de journalisation :

  • OpenTelemetry journaux

Vous pouvez gérer le volume des journaux en limitant le nombre de sources d' OpenTelemetry s contribuant à la journalisation. Cela permet de réduire l'ingestion inutile de données et d'améliorer l'efficacité globale.

  • Journaux de trace

Instana Les traceurs offrent la possibilité de désactiver l'instrumentation de journalisation pour toutes les technologies prises en charge. La configuration suivante est appliquée au niveau du traceur pour Java, Node.js, Go, PHP et Ruby.

Gérer les données ingérées à partir de la surveillance sans serveur dans l' Instana

Instana offre actuellement une prise en charge limitée des technologies sans serveur, en se concentrant principalement sur les fonctions d' AWS Lambda. Pour optimiser l'ingestion des données et gérer efficacement les coûts associés, vous pouvez envisager les stratégies suivantes :

  • Gérer les versions des fonctions lambda

Par défaut, Instana surveille les cinq versions les plus récentes de chaque fonction Lambda. Vous pouvez réduire ce nombre afin de diminuer les coûts de surveillance. Instana prend en charge la surveillance de 20 versions maximum, mais un nombre réduit de versions signifie généralement une diminution du volume de données et des coûts. Pour plus d'informations, consultez la section Désactivation de la récupération des versions et des métriques Lambda.

  • Réglage des intervalles de sondage

L'intervalle d'interrogation par défaut pour les métriques Lambda est de 5 minutes (300 secondes). L'augmentation de cet intervalle réduit la fréquence de collecte des données, ce qui peut contribuer à minimiser les coûts d'ingestion. Pour plus d'informations, consultez la section Modification de la fréquence d'interrogation.

Conclusion

Pour les utilisateurs qui souhaitent contrôler entièrement l'instrumentation, Instana offre la possibilité d'utiliser OpenTelemetry à la place de son instrumentation native. Cela permet une collecte et une gestion plus personnalisables des données d'observabilité. Pour plus d'informations, consultez le site OpenTelemetry.

Ces stratégies aident les organisations à optimiser l'ingestion de données dans l' Instana, améliorant ainsi l'efficacité tout en mettant l'accent sur l'observabilité. Cela permet une approche plus rationalisée et plus efficace de la gestion des données d'observabilité.