Surveillance de Go

Surveillez vos applications Go en installant Instana Go Collector (également appelé Go Tracer ou collecteur en cours d'exécution) après avoir configuré l'agent hôte Instana.

Pour plus d'informations, consultez la page « Agent hôte » sur Instana.

Go Collector offre des outils d'instrumentation pour les technologies prises en charge, une surveillance de l'état de santé sans configuration des services d' Go, ainsi que des traces de bout en bout des requêtes sur l'ensemble des systèmes. Vous pouvez consulter les métriques et les traces collectées dans l'interface utilisateur d' Instana.

Pour plus d'informations, voir les sections suivantes :

Installation

L'installation du collecteur Instana Go est un processus simple en deux étapes. Tout d'abord, ajoutez le module github.com/instana/go-sensor à votre fichier go.mod :

go get github.com/instana/go-sensor
 

Une fois le go-sensor module ajouté aux dépendances de votre application, vous pouvez go-sensor l'utiliser pour instrumenter le code de votre application. Pour plus d'informations, consultez la section Installation.

Remarque : à partir de la version 1.53.0, Go Collector utilise en interne le moteur fsm v1.0.1. Si vous utilisez une version de fsm antérieure à v1 dans vos projets, vous risquez de rencontrer des problèmes de compilation; vous devrez alors mettre à jour fsm vers la version v1.

Support

Le collecteur « Go » est compatible avec certaines versions d' Go, architectures de processeur et systèmes d'exploitation, et fournit des outils d'instrumentation pour diverses bibliothèques et plateformes. Il prend en charge Go, 1.25 et 1.26, tout en conservant la compatibilité avec les versions en fin de vie (EOL) de Go, à savoir 1.23 et Go 1.24. Le collecteur fonctionne sur plusieurs architectures, notamment x86_64, AArch64, IBM Power et IBM Z, sur divers systèmes d'exploitation.

Instana fournit des outils pour de nombreuses bibliothèques dans divers domaines, tels que l' HTTP, l' RPC, les bases de données, la messagerie, l' GraphQL,, et bien d'autres encore. Le collecteur prend également en charge les environnements sans serveur, notamment AWS Lambda, Azure Functions et Azure Container Apps.

Pour plus d'informations sur les environnements d'exécution et les environnements pris en charge, consultez la section « Informations sur la prise en charge ».

Pour obtenir la liste complète des bibliothèques et des plateformes prises en charge, consultez la section « Bibliothèques et plateformes prises en charge par l' Go ».

Configuration

Le collecteur « Go » prend en charge deux formats de configuration : au sein du code de l'application à l'aide d'un objet instana.Options de configuration, ou via des variables d'environnement. La configuration dans l'application est prioritaire par rapport aux variables d'environnement, sauf pour les paramètres suivants :

  • INSTANA_SERVICE_NAME: Permet de remplacer le nom du service défini dans le code.
  • INSTANA_PROCESS_NAME: Permet de remplacer le nom de l'entité d'infrastructure qui représente le processus d' Go.
  • INSTANA_DEBUG: Active les journaux de débogage même si la configuration du code de l'application définit un niveau de journalisation supérieur.
  • INSTANA_AUTO_PROFILE: Active le profilage continu avec AutoProfile™.
  • INSTANA_LOG_LEVEL: Permet de définir le niveau de journalisation. Les valeurs possibles sont debug, error, warn, et info. Si elle est définie, la variable INSTANA_DEBUG d'environnement a la priorité.
  • INSTANA_KAFKA_HEADER_FORMAT: Permet aux utilisateurs de définir le format des en-têtes « Kafka » transmis par Instana. Les valeurs possibles sont binary (ancien format), string (nouveau format) et both.
  • INSTANA_ALLOW_ROOT_EXIT_SPAN: Détermine si le traceur commence ou non une trace par un segment de sortie.
    • Si vous définissez cette valeur sur 1, le traceur enregistre les segments de sortie pour les appels sortants dans les instances ne comportant aucun segment d'entrée parent.
    • Si vous définissez 0 ou any other value, le traceur ne lance pas de trace avec une plage de sortie.
  • INSTANA_TRACING_DISABLE: Désactive la collecte des intervalles pour la catégorie indiquée (actuellement, seule la catégorie « journalisation » est prise en charge).
  • INSTANA_CONFIG_PATH: Permet à l'utilisateur de spécifier le chemin d'accès au fichier de configuration afin de désactiver la collecte des catégories de segments (actuellement, seule la catégorie « journalisation » est prise en charge).

Pour plus d'informations, consultez la section Configuration.

Fonctions

Métriques d'exécution

Les indicateurs suivants sont collectés et affichés sur le tableau de bord du processus « Go » :

  • Utilisation de la mémoire
  • Utilisation de segment de mémoire
  • Activité GC
  • Goroutines

Signatures d'intégrité

Les indicateurs clés suivants permettent d'évaluer l'état de santé des applications d' Go :

  • Appels
  • Temps de réponse
  • Mise à l'échelle

Journaux des traceurs

Le collecteur « Go » utilise un enregistreur à niveaux pour consigner les erreurs internes et les informations de diagnostic. Le logger.Logger par défaut utilise log.Logger configuré avec log.Lstdflags comme système de back end et écrit des messages dans os.Stderr. Par défaut, ce consignateur n'imprime que les messages de niveau ERROR sauf si la variable d'environnement INSTANA_DEBUG est définie.

Pour modifier le niveau de journalisation min dans l'environnement d'exécution, il est recommandé de configurer et d'injecter une instance de instana.LeveledLogger :

l := logger.New(log.New(os.Stderr, "", os.Lstdflags))
instana.SetLogger(l)

// ...

l.SetLevel(logger.WarnLevel)
 

Cette logger.LeveledLogger interface est implémentée par des bibliothèques de journalisation courantes telles que github.com/sirupsen/logrus et go.uber.org/zap , qui peuvent donc être utilisées à la place.

Sinon, depuis la version 1.39.0 du capteur « Go », la variable INSTANA_LOG_LEVEL d'environnement peut être utilisée pour définir le niveau de journalisation.

Remarque : la valeur de la variable d'environnement INSTANA_DEBUG n'affecte pas les consignateurs personnalisés. Vous devez vérifier explicitement si elle est définie et activer la consignation de débogage lors de la configuration de votre consignateur :

import (
        instana "github.com/instana/go-sensor"
        "github.com/sirupsen/logrus"
)

func main() {
        // initialize Instana sensor
        instana.InitSensor(&instana.Options{Service: SERVICE})

        // initialize and configure the logger
        logger := logrus.New()
        logger.Level = logrus.InfoLevel

        // check if INSTANA_DEBUG is set and set the log level to DEBUG if needed
        if _, ok := os.LookupEnv("INSTANA_DEBUG"); ok {
                logger.Level = logrus.DebugLevel
        }

        // use logrus to log the Instana Go Collector messages
        instana.SetLogger(logger)

        // ...
}
 

Désactivation des balises span

Le collecteur « Go » permet de désactiver la collecte des spans au niveau du traceur. Cette fonctionnalité permet de réduire le volume des données de portée collectées et traitées.

Remarque : pour l'instant, cette fonctionnalité permet uniquement de désactiver les segments de journal via la configuration.

Il existe quatre façons de désactiver la collecte des intervalles, qui s'appliquent selon l'ordre de priorité décroissant suivant :

  1. Fichier de configuration (INSTANA_CONFIG_PATH)
  2. Variable d'environnement (INSTANA_TRACING_DISABLE)
  3. Configuration au niveau du code
  4. Configuration de l'agent

Pour plus d'informations sur la désactivation des spans, consultez la section « Désactivation des spans ».

Instana AutoProfile™

Les profils sont essentiels pour localiser les problèmes de performances et les goulets d'étranglement au niveau du code. Ils contribuent à réduire la consommation de ressources et à améliorer les performances.

AutoProfile génère et signale les profils de processus à Instana. Contrairement aux profileurs de temps de développement et à la demande, où un utilisateur doit lancer manuellement le profilage, AutoProfile™ planifie automatiquement et exécute le profilage approprié en continu pour les environnements de production critiques.

Pour activer AutoProfile™, ajoutez l'option EnableAutoProfile: true dans instana.InitSensor(opt). Pour des instructions détaillées, voir github.com/instana/go-sensor. Si vous devez activer le profilage pour une application instrumentée avec Instana sans modifier la configuration instana.InitSensor(), définissez la variable d'environnement INSTANA_AUTO_PROFILE=true. Notez que cette valeur est prioritaire et remplace toute tentative de désactivation du profilage à l'intérieur du code de l'application.

Pour plus d'informations, consultez notre documentation sur l' Instana : AutoProfile™.

Traitement des incidents

Le collecteur d' Go s peut rencontrer des problèmes lors de son fonctionnement qui peuvent affecter ses capacités de surveillance. Parmi les problèmes courants, on peut citer les versions obsolètes du moteur d'exécution d' Go, ainsi que des problèmes de configuration.

Pour plus d'informations sur le diagnostic et la résolution des problèmes liés au collecteur « Go », consultez la section Dépannage.