Empezando con AWS Lambda Serverless Monitoring
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
- Inicia el stack de CloudFormation. Este enlace te lleva a la página Create stack (Crear stack) en CloudFormation.
- Introduce tu clave de API de Datadog y sitio de Datadog (
).
A continuación, identifica las funciones de IAM y haz clic en Create stack.
- Cuando hayas creado el stack, abre la pestaña Outputs (Salidas).
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.
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
:
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.')
Despliega este cambio e invoca tu aplicación de muestreo de nuevo para ver cómo puedes investigar el error en Datadog.
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.
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:
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.
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.
Puedes filtrar estos logs para ver solo los errores, o verlos en el Log Explorer.