Empezando con AWS Lambda Serverless Monitoring

Información general

Serverless es un modelo en el que los desarrolladores crean y ejecutan aplicaciones y servicios mediante un proveedor de soluciones en la nube en lugar de gestionar la infraestructura ellos mismos. La monitorización serverless de Datadog recopila métricas, logs y trazas (traces) de tu infraestructura serverless, lo que te permite supervisar el estado y el rendimiento de tu aplicación.

Esta guía utiliza una aplicación de muestreo serverless que puedes iniciar con un solo clic. Esta aplicación tiene monitorización serverless preconfigurada. Sigue esta guía para entender cómo puedes solucionar problemas en tu aplicación de muestreo y qué tipo de visibilidad te ofrece la monitorización serverless.

Instala la aplicación de muestreo

  1. Inicia el stack de CloudFormation. Este enlace te lleva a la página Create stack (Crear stack) en CloudFormation.
  2. Introduce tu clave de API de Datadog y sitio de Datadog ().
Primer plano de dos funciones

A continuación, identifica las funciones de IAM y haz clic en Create stack.

  1. Cuando hayas creado el stack, abre la pestaña Outputs (Salidas).
Primer plano de dos funciones

Invoca tu aplicación de muestreo varias veces visitando ApiGatewayInvokeURL. Se mostrará el mensaje “Sent message to SNS” (Mensaje enviado a SNS).

Cada invocación ejecuta lo siguiente:

import boto3, os

def handler(event, context):
    sns = boto3.client('sns')

    sns.publish(
        TopicArn=os.environ.get("SNS_TOPIC_ARN"),
        Message='Message sent to SNS'
        )

    return {
        "body": "Sent message to SNS",
        "statusCode": 200
    }

Puedes ver tus funciones de la aplicación de muestreo en la vista Serverless.

Monitorización serverless: vista serverless, una página del explorador

Vista Serverless

La vista Serverless muestra la telemetría de todos los recursos sin servidor en tu entorno de AWS. Puedes usar esta página como punto de partida para monitorizar, depurar y optimizar tus aplicaciones.

Si has invocado tu aplicación de muestreo al menos una vez, verás datadog-sample-entry-function y datadog-sample-sqs-consumer-function:

Primer plano de dos funciones

Información sobre Serverless

En la vista Serverless, la última columna a la derecha se llama Insights (Información). Datadog resalta automáticamente los posibles problemas de tus aplicaciones serverless, como errores importantes y largas duraciones, y estos problemas aparecen en la columna Insights.

Es probable que Datadog haya detectado un arranque en frío en tu aplicación de muestreo serverless. Los arranques en frío ocurren cuando la aplicación serverless recibe un aumento repentino del tráfico. Esto puede ocurrir si la función recibía anteriormente una cantidad relativamente constante de solicitudes y de repente empieza a recibir más o, como sucede en este caso, si se invoca por primera vez una función que estaba previamente inactiva.

Crea un error para investigarlo

Puedes causar un error intencionadamente al editar la datadog-sample-entry-function en el stack de la aplicación de muestreo.

  # Introducción del código de función lambda
  def handler(event, context):

    raise Exception('Genera un error.')
Primer plano de dos funciones

Despliega este cambio e invoca tu aplicación de muestreo de nuevo para ver cómo puedes investigar el error en Datadog.

Primer plano de dos funciones

Si te fijas, datadog-sample-entry-function tiene cinco errores.

Detalles de la función

Haz clic en tu función para ver más detalles sobre las invocaciones y despliegues recientes.

Primer plano de dos funciones

Como se muestra arriba, la vista detallada incluye tres gráficos. Puedes configurarlos para que muestren cualquier métrica disponible. De forma predeterminada, muestran tres métricas Lambda mejoradas: invocaciones, errores y duración.

Datadog genera métricas Lambda mejoradas y predefinidas con baja latencia, precisión de varios segundos y metadatos detallados para los arranques en frío y las etiquetas (tags) personalizadas. También puedes ver el dashboard de métricas Lambda mejoradas de manera predeterminada.

Invocaciones

La pestaña Invocations (Invocaciones) muestra las invocaciones recientes de tu función.

Cada invocación está asociada a una traza. Haz clic en Open Trace (Abrir traza) para ver la traza correspondiente a cada invocación:

Primer plano de dos funciones

La pestaña Flame Graph (Gráfico tipo llama) muestra exactamente lo que ha sucedido durante el tiempo de esta invocación, así como los servicios que ocuparon el mayor porcentaje del tiempo total de ejecución. Este gráfico muestra el recorrido de la solicitud desde APIGateway hasta tu datadog-sample-sqs-function, pasando por tu datadog-sample-entry-function, SNS y SQS.

Primer plano de dos funciones

La pestaña Trace Map (Mapa de trazas) representa el flujo de tus servicios y cómo están conectados entre sí.

La mitad inferior de la vista detallada de trazas muestra un stack trace, que informa sobre la línea de código que genera el error:

Traceback (most recent call last):
  File /opt/python/lib/python3.9/site-packages/datadog_lambda/wrapper.py, line 142, in __call__
    self.response = self.func(event, context, **kwargs)
File /var/task/index.py, line 17, in handler
    raise Exception('Genera un error.')
Exception: Genera un error.

Debajo, también podrás examinar las cargas útiles de solicitud y respuesta de Lambda. Datadog recopila las cargas útiles de eventos en cada invocación de Lambda.

Logs

La aplicación de muestreo serverless tiene los logs activados por defecto. Puedes consultar los logs de cada función en la pestaña Logs.

Primer plano de dos funciones

Puedes filtrar estos logs para ver solo los errores, o verlos en el Log Explorer.