Si está empleando una función Lambda sin una capa, necesitará instrumentar New Relic según el tiempo de ejecución elegido. 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).
Las siguientes variables de entorno no son necesarias para que funcione el monitoreo de Lambda, pero sí si desea que su función Lambda se incluya en rastreo distribuido. Para habilitar rastreo distribuido, configure estas variables de entorno en la consola de AWS:
NEW_RELIC_ACCOUNT_ID
. Su ID de cuenta.NEW_RELIC_TRUSTED_ACCOUNT_KEY.
Este también es su ID de cuenta. Si su cuenta es una cuenta infantil, este es el ID de cuenta para la cuenta raíz/principal.
Opcionalmente, para configurar el logging, consulte al logging del agente Go.
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
.Las siguientes variables de entorno de la consola de AWS son necesarias si desea que su función Lambda se incluya en rastreo distribuido. Esto es recomendable.
NEW_RELIC_ACCOUNT_ID
. Su ID de cuenta.NEW_RELIC_PRIMARY_APPLICATION_ID
. Este también es su ID de cuenta.NEW_RELIC_TRUSTED_ACCOUNT_KEY
. Este también es su ID de cuenta. Si su cuenta es una cuenta secundaria, este debe ser el ID de la cuenta raíz/principal.
Opcional: en la consola de Lambda, habilite el logging de depuración agregando esta variable de entorno:
NEW_RELIC_DEBUG
estrue
.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, solicite el módulo de agente en la parte superior del archivo y ajuste la función del controlador. Por ejemplo:
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();});Opcional: también puede agregar un evento personalizado a su Lambda mediante la API
recordCustomEvent
. Por ejemplo:module.exports.handler = 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.
En la consola de AWS, configure estas variables de entorno:
NEW_RELIC_NO_CONFIG_FILE
. Establezca entrue
si no utiliza un archivo de configuración.NEW_RELIC_APP_NAME
: el nombre de su aplicación.NEW_RELIC_ACCOUNT_ID
. Su ID de cuenta.NEW_RELIC_TRUSTED_ACCOUNT_KEY
. Este también es su ID de cuenta. Si su cuenta es una cuenta infantil, este debe ser el ID de la cuenta raíz/principal.
Opcional: para ejecutar el agente en modo serverless fuera de AWS en un entorno local, establezca la variable de entorno
NEW_RELIC_SERVERLESS_MODE_ENABLED
entrue
. (Al ejecutar esto en un entorno AWS Lambda, el agente se ejecutará automáticamente en modo serverless. Do not use this variable if you're running in AWS.)Opcional: para habilitar el logging en modo serverless, configure estas variables de entorno:
- Establezca
NEW_RELIC_LOG_ENABLED
entrue
. - Establezca
NEW_RELIC_LOG
enstdout
para la salida a CloudWatch o configúrelo en cualquier ubicación de archivo que se pueda escribir. NEW_RELIC_LOG_LEVEL
está configurado eninfo
de forma predeterminada y solo se usa al enviar el registro de funciones en su Lambda. Ver otros niveles de logs.
- Establezca
Opcional: si su función Lambda utiliza módulos ES, establezca la variable de entorno
NEW_RELIC_USE_ESM
entrue
. Tenga en cuenta que si usa módulos ES, debe usar async/await o promesas para su función. Las funciones basadas en devolución de llamada no son compatibles.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.
Lea más sobre cómo enviar logs de funciones con Lambda.
Para instrumentar su Python Lambda:
Descargue nuestro paquete de agente Python y colóquelo en el mismo directorio que su función. Para hacer esto, use pip:
bash$pip install -t . newrelicImportante
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 el módulo del agente Python y decore la función del controlador utilizando el decorador New Relic. The New Relic package must be imported first in your code. A continuación se muestra un ejemplo:
import newrelic.agentnewrelic.agent.initialize()@newrelic.agent.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:@newrelic.agent.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.
En la consola de AWS, configure esta variable de entorno:
NEW_RELIC_SERVERLESS_MODE_ENABLED
. Ajustado atrue
Las siguientes variables de entorno no son necesarias para que funcione el monitoreo de Lambda, pero sí si desea que su función Lambda se incluya en rastreo distribuido. Para habilitar rastreo distribuido, configure estas variables de entorno en la consola de AWS:
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED
. Establecer en verdadero.NEW_RELIC_ACCOUNT_ID
. Su ID de cuenta.NEW_RELIC_TRUSTED_ACCOUNT_KEY
. Este también es su ID de cuenta. Si su cuenta es una cuenta infantil, este debe ser el ID de la cuenta raíz/principal.
Opcional: para configurar el logging, utilice las variables de entorno
NEW_RELIC_LOG
yNEW_RELIC_LOG_LEVEL
en la consola de AWS.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.
New Relic no tiene un método de instrumentación Ruby sin capas. Si está empleando capas, consulte nuestro documento Lambda de función no contenedora .
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.
- Agregue las variables de entorno necesarias a su proyecto.
NEW_RELIC_LICENSE_KEY
no es obligatorio ya que el agente no intentará contactar ni enviar datos directamente a New Relic. - Establezca las variables de entorno opcionales:
NEW_RELIC_APP_NAME
- Publique el proyecto en su cuenta de AWS Lambda.
- Configure la extensión New Relic Lambda o la lambda
newrelic-log-ingestion
. - Opcional: para configurar el registro, emplee las variables de entorno
NEWRELIC_LOG_CONSOLE
yNEWRELIC_LOG_LEVEL
en la consola de AWS. - Invoque Lambda al menos una vez para comprobar si hay errores y cerciorar de que los datos sean visibles en la New Relic UI.