Configuration du traçage pour les fonctions Lambda d' Ruby

Activez le traçage d' Instana AWS Lambda pour surveiller les performances, détecter les problèmes et obtenir une visibilité sur les exécutions d' AWS Lambda basées sur Ruby.

Pour plus d'informations, consultez la page AWS Lambda tracing.

Environnements d'exécution pris en charge

  • Ruby 3.3
  • Ruby 3.2
  • Ruby 3.1
Remarque : à compter du 7 janvier 2024, AWS Lambda ne prendra plus en charge le moteur d'exécution Ruby 2.7.

Prérequis

Configurez l 'agent AWS pour la surveillance Lambda afin de garantir la collecte des informations nécessaires concernant les versions et certaines métriques d'exécution qu' Instana ne peut pas collecter depuis l'environnement d'exécution AWS Lambda.

Configuration des fonctions d' AWS Lambda

Vous pouvez activer le traçage des fonctions Lambda en utilisant l'une des options de configuration suivantes :

Activation du traçage pour les fonctions Lambda d' Ruby

Vous pouvez activer le traçage des fonctions Lambda via la console Web d' AWS ou l'un des outils de gestion d' AWS suivants :

Activer le traçage à l'aide de la console Web d' AWS

Pour activer le traçage des fonctions Lambda d' Ruby s via la console Web d' AWS, procédez comme suit :

  1. Ajoutez la couche Lambda « Instana » à votre fonction :

    1. Sur la page de configuration de votre fonction Lambda, cliquez sur « Layers ».

      Figure 1. Couches Lambda
      Couches Lambda
    2. Dans la zone « Calques », cliquez sur « Ajouter un calque ».

      Figure 2. Ajouter une couche
      Ajouter une couche
    3. Sur la page « Ajouter un calque », sélectionnez l'option « Spécifier un ARN » comme source du calque.

    4. Dans le champ « Spécifier un ARN », copiez-collez l'ARN de la couche Lambda « Instana » correspondant à votre région. Vous trouverez l'ARN correspondant à la couche Lambda « Instana » dans la section « Couches Lambda » du site Instana.

    5. Cliquez sur Ajouter.

      Figure 3 Ajouter une couche « Instana » Ruby
      Ajouter une couche « Instana » Ruby
  2. Implémentez la fonction de gestion :

    Enveloppez votre fonction lambda « Ruby » dans un Instana.serverless.wrap_aws bloc, en transmettant l'événement et le contexte en tant qu'arguments, comme le montre l'exemple suivant. Cet wrapper crée automatiquement des balises `span` pour votre invocation Lambda et gère le contexte de traçage.

    require 'bundler/setup'
    
    require 'json'
    require 'instana'
    
    def lambda_handler(event:, context:)
      Instana.serverless.wrap_aws(event, context) do
        # Your original Lambda function code goes here
        {
          statusCode: 200,
          body: {
            message: "Hello World!",
          }.to_json
        }
      end
    end
     

    Grâce à l'approche par wrapper, vous pouvez conserver le nom de votre fonction de gestionnaire existante tout en ajoutant des fonctionnalités de traçage d' Instana. Vous n'avez pas besoin de modifier la configuration de votre gestionnaire Lambda dans la console d' AWS.

  3. Définissez les variables d'environnement :

    Ajoutez les variables d'environnement suivantes :

    • INSTANA_ENDPOINT_URL: Votre point de terminaison de surveillance sans serveur. Veillez à utiliser la valeur correcte pour votre région qui commence par https://serverless-.
    • INSTANA_AGENT_KEY: Votre clé d'agent.
    • LAMBDA_HANDLER: Votre gestionnaire personnalisé, si vous n'utilisez pas le gestionnaire par défaut lambda_function.lambda_handler.

    Vous pouvez également obtenir les valeurs correctes de ces variables d'environnement depuis l'interface utilisateur d' Instana. Pour obtenir les valeurs correctes de ces variables d'environnement, cliquez sur Sources de données > Installer des agents > AWS Lambda.

Activer le traçage à l'aide de l'interface CLI d' AWS

L'exemple suivant présente une commande CLI d' AWS qui peut servir de point de départ si vous souhaitez automatiser l'intégration d' Instana à vos fonctions AWS Lambda :

# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
  --function-name $YOUR_LAMBDA_FUNCTION_NAME \
  --layers $INSTANA_LAYER_ARN \
  --environment ""Variables={INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , LAMBDA_HANDLER=...}""
 
Remarque : contrairement à certaines autres intégrations linguistiques, vous n'avez pas besoin de modifier la configuration du gestionnaire lorsque vous utilisez l'intégration « Ruby ». L'intégration d' Ruby s utilise une approche par wrapper qui conserve votre fonction de gestionnaire d'origine.

Installation manuelle du instana gem

Au lieu d'utiliser la couche Lambda de Instana, vous pouvez également choisir d'installer manuellement le gem Tracer disponible à l'adresse InstanaRuby. Cette option est préférable dans les environnements soumis à des restrictions, tels que les environnements « FedRAMP-compliant ».

Pour activer le traçage des fonctions Lambda d' Ruby, procédez comme suit :

  1. Ajoutez le gem Tracer de Instana Ruby en tant que dépendance à votre projet de fonction. [1]
  2. Enveloppez votre fonction lambda Ruby dans le Instana.serverless.wrap_aws bloc, en lui transmettant l'événement et le contexte en tant qu'arguments.
  3. Configurez les variables d'environnement suivantes pour la fonction Lambda :
    • INSTANA_ENDPOINT_URL : Votre point de terminaison de surveillance sans serveur. Veillez à utiliser la valeur correcte pour votre région qui commence par https://serverless-.
    • INSTANA_AGENT_KEY : Votre clé d'agent.
    • LAMBDA_HANDLER : Votre gestionnaire personnalisé, si vous n'utilisez pas le gestionnaire par défaut lambda_function.lambda_handler.

Traitement des incidents

Si vous rencontrez des problèmes avec l'intégration Lambda d' Ruby, procédez au dépannage comme suit :

  • Vérifiez que l'ARN de la couche appropriée est bien utilisé pour votre région.
  • Assurez-vous que toutes les variables d'environnement requises sont correctement définies.
  • Vérifiez les journaux d' CloudWatch s pour voir s'il y a des messages d'erreur liés à l'intégration d' Instana.
  • Vérifiez que votre fonction Lambda dispose d'un accès à Internet pour pouvoir communiquer avec le backend d' Instana.

Pour obtenir de l'aide supplémentaire, consultez le guide de dépannage de l' AWS Lambda ou contactez le service d'assistance d' Instana.

Couches Instana Lambda

Les ARN de la dernière version des couches « AWS Lambda » pour Ruby sont les suivants, par région :

Région ARN
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-ruby:8
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-ruby:8
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-ruby:8
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-ruby:8
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-ruby:8
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-ruby:8
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-ruby:8
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-ruby:8
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-ruby:8
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-ruby:8
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-ruby:8
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-ruby:8
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-ruby:8
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-ruby:8
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-ruby:8
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-ruby:8
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-ruby:8
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-ruby:8
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-ruby:8
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-ruby:8
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-ruby:8
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-ruby:8
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-ruby:8
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-ruby:8
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-ruby:8
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-ruby:8
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-ruby:null
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-ruby:null
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-ruby:8
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-ruby:8
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-ruby:8
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-ruby:8
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-ruby:8

La configuration pour les régions chinoises est arn:aws-cn:lambda:${region}:107998019096:layer:instana-ruby:${layer-version} et pour les autres régions, c'est arn:aws:lambda:${region}:410797082306:layer:instana-ruby:${layer-version}.

Veillez à toujours utiliser les dernières versions et à mettre à jour régulièrement la version du calque que vous utilisez afin de bénéficier des nouvelles fonctionnalités et des corrections apportées par la nouvelle version du calque.

  1. Suivez la documentation officielle d' AWS Lambda pour créer un package de déploiement.zip contenant les dépendances. ↩︎