La instrumentación basada en SDK requiere que habilite el agente New Relic como SDK para el entorno de ejecución elegido. Además, debe configurar la extensión New Relic o lambda newrelic-log-ingestion
para enviar datos a New Relic.
Seleccione su tiempo de ejecución a continuación y siga las instrucciones de configuración.
Para instrumentar su Lambda en lenguaje Go:
Descargue nuestro paquete de agente Go y colóquelo en el mismo directorio que su función.
Instale el agente ejecutando:
bash$go get -u github.com/newrelic/go-agent/v3/newrelicInstale la integración
nrlambda
ejecutando:bash$go get -u github.com/newrelic/go-agent/v3/integrations/nrlambda
En su código Lambda, importe nuestros componentes, cree una aplicación y actualice cómo inicia su Lambda. Vea nuestros ejemplos de instrumentación:
Opcionalmente, agregue un evento personalizado que se asociará con su invocación de Lambda mediante la API
RecordCustomEvent
. Por ejemplo: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!")}Cree y comprima su función Lambda y cárguela en AWS.
Aquí hay sugerencias para comprimir y cargar Lambda:
Compile el binario para su ejecución en Linux. Esto produce un archivo binario llamado
main
. Puedes usar:bash$GOOS=linux go build -o mainComprima el binario en un paquete desplegable usando:
bash$zip deployment.zip mainCargue el archivo zip en AWS mediante la consola de AWS Lambda o la CLI de AWS. Nombra el controlador
main
(para que coincida con el nombre dado durante la compilación binaria).
Para habilitar el rastreo distribuido y configurar las variables ambientales, consulte la documentación de variables ambientales .
Invoque Lambda al menos una vez. Esto crea un grupo log de CloudWatch, que debe estar presente para que funcione el siguiente paso.
Nuestro contenedor recopila datos sobre la ejecución de Lambda, genera un mensaje JSON y lo registra en el log de CloudWatch. A continuación, configurará CloudWatch para enviar esos logs a New Relic.
El monitoreo para AWS Lambda en Java no utiliza nuestro APM agente de Java. En su lugar, utiliza estas dos dependencias de OpenTracing:
AWS Lambda OpenTracing Java SDK: instrumentación de OpenTracing para AWS Lambda RequestHandler y RequestStreamHandler.
Nuestro rastreador AWS Lambda OpenTracing: una implementación de rastreador OpenTracing diseñada para monitor AWS Lambda. Genera spans, evento de error, evento de transacción, error traza y brinda soporte de rastreo distribuido.
Sugerencia
Supported OpenTracing Versions
OpenTracing 0.31.0:
- Lambda rastreador: com.newrelic.opentracing:newrelic-java-lambda:1.1.1
- SDK de Lambda: com.newrelic.opentracing:java-aws-lambda:1.0.0
OpenTracing 0.32.0, 0.33.0:
- Lambda rastreador: com.newrelic.opentracing:newrelic-java-lambda:2.2.3
- Lambda SDK: com.newrelic.opentracing:java-AWS Lambda:2.1.1
Para instrumentar su Java Lambda:
En el archivo
build.gradle
de su proyecto, incluya nuestro rastreador OpenTracing AWS Lambda y la dependencia del SDK de AWS Lambda OpenTracing: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")}Implemente la interfaz AWS Lambda
RequestHandler
como se muestra en el ejemplo de Java Lambda y anule el métododoHandleRequest
.En el método
doHandleRequest
, llame a la APILambdaTracing.instrument(...)
para crear un intervalo de raíz para trazar la ejecución de la función Lambda. Aquí también es donde definirá su lógica de negocios para la función Lambda.Registre un
LambdaTracer.INSTANCE
como rastreador de OpenTracing Global, como se muestra en el ejemplo de Java Lambda.Cree un paquete ZIP desplegable y cárguelo en AWS Lambda. O desplegarlo por otros medios.
En la consola de AWS Lambda, configure el controlador. Para el ejemplo Java Lambda, el controlador sería
com.handler.example.MyLambdaHandler::handleRequest
. Como se suponehandleRequest
, también puedes usarcom.handler.example.MyLambdaHandler
.Para habilitar el rastreo distribuido y configurar las variables ambientales, consulte la documentación de variables ambientales .
Invoque Lambda al menos una vez. Esto crea un grupo log de CloudWatch, que debe estar presente para que funcione el siguiente paso.
Nuestro contenedor recopila datos sobre la ejecución de Lambda, genera un mensaje JSON y lo registra en el log de CloudWatch. A continuación, configurará CloudWatch para enviar esos logs a New Relic.
Consulte el ejemplo de rastreo distribuido de AWS Lambda para ver un proyecto completo que ilustra casos de uso comunes como:
- Rastreo distribuido entre función Lambda
- Creación manual de tramos (también conocida como instrumentación personalizada)
- Seguimiento de llamadas externas
- Agregar atributo personalizado (también conocido como etiqueta) a los tramos
Para instrumentar su Lambda Node.js:
Descargue nuestro paquete de agente Node.js y colóquelo en el mismo directorio que su función, asegurándose de que el agente esté instalado como una dependencia en el directorio
node_modules
. Utilice el Nodo administrador de paquetes:bash$npm install newrelic --saveEn su código Lambda, requiera el módulo del agente en la parte superior del archivo y envuelva la función del controlador con newrelic
setLambdaHandler
. Por ejemplo:- Código de muestra para 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();});- Código de muestra para el módulo 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();});Opcional: también puede agregar un evento personalizado a su Lambda mediante la API
recordCustomEvent
. Por ejemplo:- Código de muestra para CommonJS:
module.exports.handler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});- Código de muestra para el módulo ES:
export const lambdaHandler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});Comprima su función Lambda y la carpeta del agente Node.js juntas. Requisitos y recomendaciones:
- No es necesario incluir los archivos de New Relic fuera de la carpeta del agente de New Relic.
- Si el nombre de su archivo de función Lambda es, por ejemplo,
lambda_function.node
, le recomendamos nombrar su archivo ziplambda_function.zip
. No utilice un tarball. - Su Lambda y sus módulos asociados deben estar en el directorio raíz del archivo zip. Esto significa que si comprime una carpeta que contiene los archivos, no funcionará.
Cargue el archivo comprimido en su cuenta de AWS Lambda.
Para habilitar el rastreo distribuido y configurar las variables ambientales, consulte la documentación de variables ambientales .
Para completar la instrumentación, siga uno de los siguientes pasos para enviar los telemetry data a New Relic:
- Emplee la New Relic Lambda
Extension layer
. Puede obtener la última capa arn (NewRelicLambdaExtension) . Puede emplear AWS CLI para instalar la capa o agregarla manualmente a su Lambda.
bash$aws lambda update-function-configuration --function-name <your-lambda-function-name> --layers arn:aws:lambda:<aws-region>:451483290750:layer:NewRelicLambdaExtension:<version>- Emplee la New Relic Lambda
- Emplee el
newrelic-log-ingestion
. Puede consultar la solución alternativa de CloudWatch para conocer los pasos detallados.
Para instrumentar su Python Lambda:
Descargue los paquetes del agente Python y del contenedor Python lambda y colóquelos en el mismo directorio que su código de función. Para hacer esto, emplea pip:
bash$pip install -t . newrelic newrelic-lambdaImportante
Si utiliza Homebrew, puede recibir este error:
DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both
. Para obtener más información, consulte la publicación de Homebrew en GitHub.En su código Lambda, importe tanto el módulo del agente de Python como el módulo contenedor de Lambda de Python.
Decora la función del controlador empleando el decorador New Relic. El paquete New Relic debe importar primero en su código. He aquí un ejemplo:
import newrelic.agentfrom newrelic_lambda.lambda_handler import lambda_handlernewrelic.agent.initialize()@lambda_handler()def handler(event, context):...Opcional: también puede agregar un evento personalizado a su Lambda mediante la API
record_custom_event
. He aquí un ejemplo:@lambda_handler()def handler(event, context):newrelic.agent.record_custom_event('CustomEvent', {'foo': 'bar'})...Comprima sus carpetas
lambda_function.py
ynewrelic/
juntas siguiendo estas pautas:- No es necesario incluir los archivos New Relic fuera de la carpeta
newrelic/
. - Si el nombre de su archivo de función Lambda es, por ejemplo,
lambda_function.py
, asigne a su archivo zip el nombrelambda_function.zip
. No utilice un tarball. - Su Lambda y sus módulos asociados deben estar en el directorio raíz del archivo zip. Esto significa que si comprime una carpeta que contiene los archivos, no funcionará.
- No es necesario incluir los archivos New Relic fuera de la carpeta
Cargue el archivo comprimido en su cuenta de AWS Lambda.
Para habilitar el rastreo distribuido y configurar las variables ambientales, consulte la documentación de variables ambientales .
Invoque Lambda al menos una vez. Esto crea un grupo log de CloudWatch, que debe estar presente para que funcione el siguiente paso.
El decorador de New Relic recopila datos sobre la ejecución de Lambda, genera un mensaje JSON y lo registra en el log de CloudWatch. A continuación, configure CloudWatch para enviar esos logs a New Relic.
En la mayoría de los casos, el agente .NET activará automáticamente su función Lambda AWS y cambiará a un "modo sin servidor" que deshabilitará el envío de datos directamente a New Relic , así como alguna otra característica. Debe emplear la extensión Lambda de New Relic o el método lambda newrelic-log-ingestion
para enviar datos a New Relic.
Para instrumentar su .NET Lambda:
- Agregue el paquete nuget NewRelic.Agente a su proyecto AWS Lambda . Para obtener más información, consulte nuestra guía de instalación.
- Para habilitar el rastreo distribuido y configurar las variables ambientales, consulte la documentación de variables ambientales .
- Publique el proyecto en su cuenta de AWS Lambda.
- Configure la extensión New Relic Lambda o la lambda
newrelic-log-ingestion
. - Invoque Lambda al menos una vez para comprobar si hay errores y cerciorar de que los datos sean visibles en la New Relic UI.