L'instrumentation basée sur le SDK nécessite que vous activiez l'agent New Relic en tant que SDK pour l'environnement d'exécution choisi. De plus, vous devez configurer l’extension New Relic ou le lambda newrelic-log-ingestion
pour envoyer des données à New Relic.
Sélectionnez votre runtime ci-dessous et suivez les instructions de configuration.
Pour instrumenter votre Lambda en langage Go :
Téléchargez notre package d'agent Go et placez-le dans le même répertoire que votre fonction.
Installez l’agent en exécutant :
bash$go get -u github.com/newrelic/go-agent/v3/newrelicInstallez l'intégration
nrlambda
en exécutant :bash$go get -u github.com/newrelic/go-agent/v3/integrations/nrlambda
Dans votre code Lambda, importez nos composants, créez une application et mettez à jour la façon dont vous démarrez votre Lambda. Découvrez nos exemples d'instrumentation :
En option, ajoutez un événement personnalisé qui sera associé à votre invocation Lambda en utilisant l'API
RecordCustomEvent
. Par exemple:func handler(ctx context.Context) {if txn := newrelic.FromContext(ctx); nil != txn {txn.Application().RecordCustomEvent("MyEvent", map[string]interface{}{"zip": "zap",})}fmt.Println("hello world!")}Créez et compressez votre fonction Lambda et téléchargez-la sur AWS.
Voici quelques suggestions pour compresser et télécharger le Lambda :
Construisez le binaire pour l'exécution sur Linux. Cela produit un fichier binaire appelé
main
. Vous pouvez utiliser :bash$GOOS=linux go build -o mainCompressez le binaire dans un package de déploiement en utilisant :
bash$zip deployment.zip mainTéléchargez le fichier zip sur AWS à l’aide de la console AWS Lambda ou de l’AWS CLI. Nommez le gestionnaire
main
(pour correspondre au nom donné lors de la construction binaire).
Pour activer le tracing distribué et configurer les variables d'environnement, reportez-vous à la documentation des variables d'environnement .
Invoquez le Lambda au moins une fois. Cela crée un CloudWatch log groupe , qui doit être présent pour que l’étape suivante fonctionne.
Notre wrapper collecte des données sur l'exécution Lambda , génère un message JSON et l'enregistre dans les logs CloudWatch . Ensuite, vous configurerez CloudWatch pour envoyer ces logs à New Relic.
Monitoring d'AWS Lambda en Java n'utilise pas notre agent Java APM. Au lieu de cela, il utilise ces deux dépendances OpenTracing :
AWS Lambda OpenTracing Java SDK : instrumentation OpenTracing pour AWS Lambda RequestHandler et RequestStreamHandler.
Notre traceur AWS Lambda OpenTracing : une implémentation de traceur OpenTracing conçue pour monitorer AWS Lambda. Il génère des étendues, des événements d'erreur, des événements de transaction, des traces d'erreurs et fournit un support de tracing distribué.
Conseil
Supported OpenTracing Versions
OpenTracing 0.31.0:
- Traceur Lambda : com.newrelic.opentracing:newrelic-java-lambda:1.1.1
- SDK Lambda : com.newrelic.opentracing:java-aws-lambda:1.0.0
OpenTracing 0.32.0, 0.33.0:
- Traceur Lambda : com.newrelic.opentracing:newrelic-java-lambda:2.2.3
- SDK Lambda : com.newrelic.opentracing:java-aws-lambda:2.1.1
Pour instrumenter votre Lambda en langage Java :
Dans le fichier
build.gradle
de votre projet, incluez notre traceur AWS Lambda OpenTracing et la dépendance AWS Lambda OpenTracing SDK :dependencies {compile("com.newrelic.opentracing:java-aws-lambda:2.1.1")compile("com.newrelic.opentracing:newrelic-java-lambda:2.2.3")compile("io.opentracing:opentracing-util:0.33.0")}Implémentez l’interface AWS Lambda
RequestHandler
comme indiqué dans l’ exemple Java Lambda et remplacez la méthodedoHandleRequest
.Dans la méthode
doHandleRequest
, appelez l'APILambdaTracing.instrument(...)
pour créer une étendue racine afin de trace l'exécution de la fonction Lambda. C'est également ici que vous définirez votre logique métier pour la fonction Lambda.Enregistrez un
LambdaTracer.INSTANCE
comme traceur global OpenTracing, comme indiqué dans l'exemple Java Lambda.Créez un package de déploiement ZIP et téléchargez-le sur AWS Lambda. Ou le déployer par d’autres moyens.
Dans la console AWS Lambda, définissez le gestionnaire. Pour l'exemple Java Lambda, le gestionnaire serait
com.handler.example.MyLambdaHandler::handleRequest
. Étant donné quehandleRequest
est supposé, vous pouvez également utilisercom.handler.example.MyLambdaHandler
.Pour activer le tracing distribué et configurer les variables d'environnement, reportez-vous à la documentation des variables d'environnement .
Invoquez le Lambda au moins une fois. Cela crée un CloudWatch log groupe , qui doit être présent pour que l’étape suivante fonctionne.
Notre wrapper collecte des données sur l'exécution Lambda , génère un message JSON et l'enregistre dans les logs CloudWatch . Ensuite, vous configurerez CloudWatch pour envoyer ces logs à New Relic.
Veuillez consulter l'exemple de tracing distribuéAWS Lambda pour un projet complet qui illustre des cas d'utilisation courants tels que :
- Tracing distribué entre fonctions Lambda
- Création manuelle de portées (également appelée instrumentation personnalisée)
- Suivi des appels externes
- Ajout de l'attribut personnalisé (aka tag) aux spans
Pour instrumenter votre Lambda en langage Node.js :
Téléchargez notre package d'agent Node.js et placez-le dans le même répertoire que votre fonction, en vous assurant que l'agent est installé en tant que dépendance dans le répertoire
node_modules
. Utilisez le Node gestionnaire de paquets :bash$npm install newrelic --saveDans votre code Lambda, exigez le module agent en haut du fichier et encapsulez la fonction gestionnaire avec le nouveau
setLambdaHandler
. Par exemple:- Exemple de code pour CommonJS :
const newrelic = require('newrelic');// Other module loads go under the require statement abovemodule.exports.handler = newrelic.setLambdaHandler((event, context, callback) => {// This is your handler function codeconsole.log('Lambda executed');callback();});- Exemple de code pour le module ES :
import newrelic from 'newrelic';// Other module loads go under the require statement aboveexport const handler = newrelic.setLambdaHandler((event, context, callback) => {// This is your handler function codeconsole.log('Lambda executed');callback();});Facultatif : vous pouvez également ajouter un événement personnalisé à votre Lambda à l'aide de l'API
recordCustomEvent
. Par exemple:- Exemple de code pour CommonJS :
module.exports.handler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});- Exemple de code pour le module ES :
export const lambdaHandler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});Compressez votre fonction Lambda et le dossier de l'agent Node.js ensemble. Exigences et recommandations :
- Les fichiers New Relic en dehors du dossier de l'agent New Relic n'ont pas besoin d'être inclus.
- Si le nom de votre fichier de fonction Lambda est, par exemple,
lambda_function.node
, nous vous recommandons de nommer votre fichier ziplambda_function.zip
. N'utilisez pas tarball. - Votre Lambda et ses modules associés doivent tous se trouver dans le répertoire racine du fichier zip. Cela signifie que si vous zippez un dossier contenant les fichiers, cela ne fonctionnera pas.
Téléchargez le fichier zippé sur votre compte AWS Lambda.
Pour activer le tracing distribué et configurer les variables d'environnement, reportez-vous à la documentation des variables d'environnement .
Pour compléter l'instrumentation, suivez l'une des étapes suivantes pour envoyer les données télémétriques à New Relic :
- Utilisez le New Relic Lambda
Extension layer
. Vous pouvez obtenir la dernière couche arn (NewRelicLambdaExtension) . Vous pouvez soit utiliser AWS CLI pour installer la couche, soit l'ajouter manuellement à votre Lambda.
bash$aws lambda update-function-configuration --function-name <your-lambda-function-name> --layers arn:aws:lambda:<aws-region>:451483290750:layer:NewRelicLambdaExtension:<version>- Utilisez le New Relic Lambda
- Utilisez le
newrelic-log-ingestion
. Vous pouvez vous référer à la solution de secours CloudWatch pour connaître les étapes détaillées.
Pour instrumenter votre Lambda en langage Python :
Téléchargez à la fois l'agent Python et le package wrapper Python lambda et placez-les dans le même répertoire que votre code de fonction. Pour ce faire, utilisez pip :
bash$pip install -t . newrelic newrelic-lambdaImportant
Si vous utilisez Homebrew, vous pouvez obtenir cette erreur :
DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both
. Pour plus de détails, consultez la publication GitHub de Homebrew.Dans votre code Lambda, importez à la fois le module agent Python et le module wrapper lambda Python.
Décorez la fonction gestionnaire à l'aide du décorateur New Relic. Le package New Relic doit d'abord être importé dans votre code. Voici un exemple :
import newrelic.agentfrom newrelic_lambda.lambda_handler import lambda_handlernewrelic.agent.initialize()@lambda_handler()def handler(event, context):...Facultatif : vous pouvez également ajouter un événement personnalisé à votre Lambda à l'aide de l'API
record_custom_event
. Voici un exemple :@lambda_handler()def handler(event, context):newrelic.agent.record_custom_event('CustomEvent', {'foo': 'bar'})...Compressez vos dossiers
lambda_function.py
etnewrelic/
ensemble en suivant ces instructions :- Les fichiers New Relic en dehors du dossier
newrelic/
n'ont pas besoin d'être inclus. - Si le nom de votre fichier de fonction Lambda est, par exemple,
lambda_function.py
, nommez votre fichier ziplambda_function.zip
. N'utilisez pas tarball. - Votre Lambda et ses modules associés doivent tous se trouver dans le répertoire racine du fichier zip. Cela signifie que si vous zippez un dossier contenant les fichiers, cela ne fonctionnera pas.
- Les fichiers New Relic en dehors du dossier
Téléchargez le fichier zippé sur votre compte AWS Lambda.
Pour activer le tracing distribué et configurer les variables d'environnement, reportez-vous à la documentation des variables d'environnement .
Invoquez le Lambda au moins une fois. Cela crée un CloudWatch log groupe , qui doit être présent pour que l’étape suivante fonctionne.
Le décorateur New Relic collecte des données sur l'exécution Lambda , génère un message JSON et l'enregistre dans les logs CloudWatch . Ensuite, configurez CloudWatch pour envoyer ces logs à New Relic.
Dans la plupart des cas, l'agent .NET instrumente automatiquement votre fonction AWS Lambda et passera en « mode sans serveur » qui désactivera l'envoi de données directement à New Relic ainsi que d'autres fonctionnalités. Vous devez utiliser l'extension Lambda New Relic ou la méthode lambda newrelic-log-ingestion
pour envoyer des données à New Relic.
Pour instrumenter votre Lambda en langage .NET :
- Ajoutez le package nuget NewRelic.Agent à votre projet AWS Lambda. Pour plus d'informations, consultez notre guide d'installation.
- Pour activer le tracing distribué et configurer les variables d'environnement, reportez-vous à la documentation des variables d'environnement .
- Publiez le projet sur votre compte AWS Lambda.
- Configurez soit l’extension New Relic Lambda, soit le lambda
newrelic-log-ingestion
. - Appelez le Lambda au moins une fois pour vérifier les erreurs et vous assurer que les données sont visibles dans l'interface utilisateur de New Relic.