Dépannage du suivi d'.NET s sur AWS Lambda

Si le traçage ne fonctionne pas comme prévu avec les fonctions d' AWS Lambda, commencez par suivre les étapes générales de dépannage avant de passer à des cas spécifiques.

identification et résolution des problèmes généraux

Procédez comme suit :

  1. Vérifier les conditions préalables :

    • Vérifiez la compatibilité des versions d'.NET :

      • .NET Environnements d'exécution : 8.0 ou version ultérieure
    • Vérifiez que la couche « Instana » est correctement associée à la fonction Lambda.
    • Vérifiez l'installation de Layer : lorsque la couche d' Instana s est correctement chargée, des messages d'initialisation doivent apparaître dans les journaux d' CloudWatch :

      • Recherchez les messages d'initialisation d' Instana.
      • Vérifiez s'il y a des messages d'erreur liés au chargement des calques.
      • Vérifiez que les variables d'environnement sont correctement lues.

      Si ces messages n'apparaissent pas :

      • Vérifiez que l'ARN de la couche est correct.
      • Vérifiez la compatibilité d'exécution de la fonction Lambda.
      • Assurez-vous que les variables d'environnement sont définies au niveau de la fonction.
  2. Vérifiez les variables d'environnement : si le traçage ne fonctionne pas, vérifiez que les variables d'environnement sont les suivantes :

    • Réglé correctement.
    • Écrit correctement.
    • Configurez ce paramètre en fonction de l'environnement dans lequel l'application est déployée.
    • Valide, accessible par le processus ou l'application, et correct.
  3. Vérifier la configuration de Lambda :

    • Assurez-vous que la fonction Lambda utilise le bon environnement d'exécution (.NET s 8 ou ultérieures).
    • Vérifiez que l'ARN de la couche d' Instana s correspond bien à la région AWS et à l'environnement d'exécution .NET.
    • Vérifiez que la fonction Lambda dispose d'une connexion Internet ou d'une configuration correcte du réseau privé virtuel (VPC) pour pouvoir accéder aux points de terminaison d' Instana.
  4. Vérifier la configuration de l' URL des terminaux :

    • SaaS Instana : utilisez le point de terminaison Serverless approprié de votre tenant Instana :

      • Format : https://serverless-<region>.instana.io
      • Exemple:https://serverless-blue-saas.instana.io
    • Instana en auto-hébergement :

      • Format : https://<instana-backend-ip>/serverless
      • Définissez la variable d'environnement : INSTANA_DISABLE_CA_CHECK=true ou 1
  5. Vérifiez que le délai d'expiration de la fonction Lambda est suffisant (un minimum de 30 secondes est recommandé pour les premiers démarrages à froid).
  6. Vérifiez les fichiers journaux d' CloudWatch s pour voir s'il y a des erreurs ou des avertissements liés à l' Instana.

Dépannage spécifique à chaque cas

Si les étapes de dépannage générales ne permettent pas de résoudre votre problème, consultez les scénarios de dépannage suivants :

Scénario 1 : Aucune trace n'apparaît dans l'interface utilisateur d' Instana

Symptômes : la fonction Lambda s'exécute correctement, mais aucune trace n'apparaît dans l'interface utilisateur d' Instana après la configuration.

Procédure de résolution des incidents :

  1. Vérifiez que le moteur d'exécution de la fonction Lambda est pris en charge (version 8 ou ultérieure de .NET ).
  2. Vérifiez que la couche « Instana » est correctement associée à la fonction Lambda :

    1. Dans la console d' AWS, accédez à Lambda > Fonctions > Votre fonction.
    2. Dans l'onglet « Configuration » de votre fonction Lambda, cliquez sur « Layers ».
    3. Vérifiez que la couche « Instana » figure dans la liste.
  3. Vérifiez que l'ARN de la couche correspond bien à la région et à la version d'exécution d'.NET :

    • Format ARN pour les régions d' AWS s standard : arn:aws:lambda:<region>:410797082306:layer:instana-dotnetcore:<layer-version>
    • Format ARN pour les régions d' AWS s en Chine : arn:aws:lambda:<region>:107998019096:layer:instana-dotnetcore:<layer-version>
  4. Vérifiez que les variables d'environnement sont correctement définies et que les chemins d'accès sont valides, accessibles par le processus ou l'application, et corrects :

    CORECLR_ENABLE_PROFILING=1
    CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
    CORECLR_PROFILER_PATH=/opt/instana_tracing/CoreProfiler.so
    DOTNET_STARTUP_HOOKS=/opt/Instana.Tracing.Core.dll
    INSTANA_AGENT_KEY=<your-agent-key>
    INSTANA_ENDPOINT_URL=<serverless_instana_endpoint>
    INSTANA_AWS_ACCOUNT_ID=<your_aws_account_id>
    LAMBDA_HANDLER=<Assembly::Namespace.ClassName::MethodName>
  5. Vérifiez que l'adresse du point de terminaison URL est correcte :

    • SaaS Instana : utilisez le point de terminaison Serverless approprié de votre tenant Instana :

      • Format : https://serverless-<region>.instana.io
      • Exemple:https://serverless-blue-saas.instana.io
    • Instana en auto-hébergement :

      • Format : https://<instana-backend-ip>/serverless
      • Définissez la variable INSTANA_DISABLE_CA_CHECK d'environnement sur true ou 1
  6. Vérifiez que la fonction Lambda dispose d'une connexion Internet ou d'une configuration VPC adéquate pour accéder aux points de terminaison d' Instana.
  7. Vérifiez que le rôle d'exécution de la fonction Lambda dispose des autorisations nécessaires.
  8. Vérifiez que le délai d'expiration de la fonction Lambda est suffisant (un minimum de 30 secondes est recommandé pour les premiers démarrages à froid).
  9. Vérifiez les fichiers journaux d' CloudWatch s pour voir s'il y a des erreurs ou des avertissements liés à l' Instana.

Scénario 2 : Problèmes de délai d'expiration des fonctions Lambda

Symptômes : la fonction Lambda expire après l'ajout d'un tracé d' Instana, ou le temps d'exécution augmente considérablement.

Procédure de résolution des incidents :

  1. Vérifiez la configuration du délai d'expiration de la fonction Lambda (augmentez-le si nécessaire) :

    1. Dans la console d' AWS, accédez à Lambda > Fonctions > Votre fonction.
    2. Sélectionnez l'onglet « Configuration ».
    3. Cliquez sur « Configuration générale » > « Modifier ».
    4. Augmentez la valeur du délai d'expiration (30 secondes au minimum sont recommandées).
  2. Tenez compte du temps de démarrage à froid : le premier démarrage prend plus de temps.
  3. Vérifiez que la fonction Lambda dispose d'une allocation de mémoire suffisante (512 Mo minimum recommandés) :

    1. Dans la console d' AWS, accédez à Lambda > Fonctions > Votre fonction.
    2. Sélectionnez l'onglet « Configuration ».
    3. Cliquez sur « Configuration générale » > « Modifier ».
    4. Augmentez l'allocation de mémoire si nécessaire.
  4. Consultez les journaux d' CloudWatch s pour obtenir des indicateurs de performance.
  5. Vérifiez si les appels synchrones bloquent l'exécution de Lambda.
  6. Envisagez d'utiliser le traçage asynchrone s'il est disponible.
  7. Vérifiez la latence du réseau vers le point de terminaison Instana.

Scénario 3 : Portées manquantes ou tracés incomplets

Symptômes : certaines traces apparaissent, mais elles sont incomplètes, il manque des appels en aval ou elles présentent des lacunes.

Procédure de résolution des incidents :

  1. Vérifiez que toutes les bibliothèques prises en charge se situent dans les plages de versions compatibles :
  2. Vérifiez si une instrumentation personnalisée est nécessaire pour certaines bibliothèques.
  3. Vérifier le code de la fonction Lambda pour :

    • Modèles async/await qui risquent de ne pas être correctement tracés
    • Tâches en arrière-plan qui s'exécutent une fois que Lambda a renvoyé un résultat
    • Appels de service externes utilisant des clients non pris en charge
  4. Activez la journalisation de débogage pour voir quels segments sont créés.
  5. Vérifiez que la fonction Lambda est bien arrêtée avant d'envoyer tous les segments.
  6. Vérifiez que la propagation du contexte s'effectue correctement pour le traçage distribué.

Scénario 4 : Échecs de la fixation des couches

Symptômes : la couche « Instana » ne peut pas être associée à la fonction « AWS Lambda », ou bien, bien qu'elle soit associée, elle ne se charge pas correctement lors de l'exécution de la fonction.

Procédure de résolution des incidents :

  1. Vérifiez que l'ARN de la couche correspond :

    • Corriger la région d' AWS
    • Version correcte du runtime .NET ( .NET 8 ou version ultérieure)
    • Dernière version disponible de la couche
  2. Vérifiez que l'environnement d'exécution de la fonction Lambda est compatible avec la couche :

    • .NET version 8 ou ultérieure

    Si le runtime n'est pas pris en charge, mettez à jour le runtime Lambda avant d'associer la couche.

  3. Vérifiez que le compte AWS dispose des autorisations nécessaires pour accéder à la couche Instana.
  4. Vérifiez si la fonction Lambda a atteint la limite de 5 couches.
  5. Vérifiez les journaux d' CloudWatch s pour détecter d'éventuelles erreurs d'initialisation des couches.
  6. Vérifiez que la couche est compatible avec l'architecture des fonctions Lambda ( x86_64 ou arm64 ) :

    • Vérifiez la configuration de l'architecture de la fonction Lambda.
    • Assurez-vous que la couche d' Instana s prend en charge l'architecture sélectionnée.

Scénario 5 : Problèmes de configuration des variables d'environnement

Symptômes : les variables d'environnement « Instana » sont définies, mais ne sont pas reconnues par la fonction Lambda.

Procédure de résolution des incidents :

  1. Assurez-vous que les variables d'environnement sont définies au niveau de la fonction Lambda, et pas seulement dans le code :

    1. Dans la console d' AWS, accédez à Lambda > Fonctions > Votre fonction.
    2. Sélectionnez l'onglet « Configuration ».
    3. Cliquez sur « Variables d'environnement ».
    4. Vérifiez que toutes les variables requises sont présentes.
  2. Vérifiez qu'il n'y a pas de fautes de frappe dans les noms des variables d'environnement (sensibles à la casse).
  3. Vérifiez que INSTANA_AGENT_KEY est valide et n'a pas expiré.
  4. Vérifiez que INSTANA_ENDPOINT_URL est accessible depuis l'environnement d'exécution Lambda.
  5. Vérifiez si les variables d'environnement sont remplacées par :

    • Code de la fonction Lambda
    • Paramètres de l'image de conteneur (pour Lambda en conteneur)
    • Infrastructure as Code ( Terraform ou CloudFormation )
  6. Consultez les fichiers journaux d' CloudWatch s pour vérifier les messages relatifs au chargement des variables d'environnement.

Scénario 7 : Problèmes de configuration du VPC

Symptômes : la fonction Lambda dans le VPC ne parvient pas à envoyer des traces à Instana.

Procédure de résolution des incidents :

  1. Vérifiez que la fonction Lambda dispose d'un accès à Internet via :

    • Passerelle NAT (pour les points de terminaison d' Instana s publiques)
    • Points de terminaison VPC (pour les services d' AWS )
    • Passerelle Internet (si le réseau est public)
  2. Vérifiez que les groupes de sécurité autorisent le trafic sortant vers HTTPS (port 443) :

    1. Dans la console d' AWS, accédez à Lambda > Fonctions > Votre fonction.
    2. Sélectionnez l'onglet « Configuration ».
    3. Cliquez sur VPC.
    4. Vérifiez les groupes de sécurité associés.
    5. Vérifiez que les règles de sortie autorisent l'accès à HTTPS (port 443).
  3. Vérifiez que les listes de contrôle d'accès réseau (ACL) ne bloquent pas le trafic sortant :

    1. Dans la console d' AWS, accédez à VPC > Listes de contrôle d'accès réseau.
    2. Recherchez l' Network ACL s associées aux sous-réseaux de votre fonction Lambda.
    3. Vérifiez que les règles de sortie autorisent le trafic vers HTTPS.
  4. Testez la connectivité à l'aide d'une fonction Lambda de test avec curl ou wget:

    Créez une fonction Lambda simple pour tester la connectivité :

    using System.Net.Http;
    
    public async Task<string> TestConnectivity()
    {
        using var client = new HttpClient();
        var response = await client.GetAsync("https://serverless-<region>.instana.io");
        return $"Status: {response.StatusCode}";
    }
  5. Pour les instances auto-hébergées d' Instana :

    • Vérifiez la configuration du peering VPC ou de l' Transit Gateway.
    • Vérifiez les tables de routage pour vous assurer que le routage est correct.
    • Vérifiez que la résolution d'adresse DNS fonctionne pour le backend Instana.

Collecte des journaux

AWS Lambda ne prend pas en charge la collecte automatique des journaux. Vous devez donc collecter les journaux manuellement.

Collecte manuelle des journaux

Procédez comme suit :

  1. Activez la journalisation de débogage en ajoutant des variables d'environnement à la fonction Lambda :

    INSTANA_DEBUG=true
    INSTANA_LOG_LEVEL=DEBUG
  2. Accéder aux journaux d' CloudWatch :

    1. Go Accédez à la console d' AWS > CloudWatch > Groupes de journaux.
    2. Rechercher le groupe de journaux : /aws/lambda/<function-name>.
    3. Consultez les flux de journaux récents pour rechercher les messages liés à l' Instana.
  3. Récupérer la configuration de la fonction Lambda :

    aws lambda get-function-configuration --function-name <function-name>
  4. Récupérer les détails de la fonction Lambda :

    aws lambda get-function --function-name <function-name>
  5. Test de l'appel d'une fonction Lambda :

    aws lambda invoke --function-name <function-name> --payload '{}' response.json
  6. Consulter les informations sur le calque :

    aws lambda list-layers
    aws lambda get-layer-version --layer-name instana-dotnet --version-number <version>

Ouverture d'un ticket de demande de service

Si le problème persiste après avoir suivi ces étapes de dépannage, veuillez recueillir les données d' MustGather s avant d'ouvrir un ticket d'assistance. MustGather Ces données permettent au service d'assistance d' IBM de diagnostiquer votre problème plus efficacement.

Pour plus d'informations, consultez MustGather:, Instana, .NET, .NET Core et Tracer - AWS Lambda.