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 hace uso de una aplicación de ejemplo serverless que puedes lanzar utilizando un lenguaje de programación e infraestructura como una herramienta de código (IaC) con la que estés familiarizado. Esta aplicación tiene la monitorización serverless preconfigurada. Sigue esta guía para ver cómo podrías solucionar un problema en tu aplicación de ejemplo, y qué tipos de visibilidad puede proporcionar la monitorización serverless.
Despliegue de la aplicación de ejemplo
- Clona el repositorio de aplicaciones de ejemplo en tu máquina local.
- Elige el tiempo de ejecución y la herramienta de IaC que prefieras y sigue el enlace a las instrucciones específicas de despliegue
- Busca tu clave de API de Datadog y sitio de Datadog (
). Los necesitarás para el siguiente paso. - Sigue las instrucciones específicas de tiempo de ejecución e IaC para desplegar la aplicación de ejemplo.
- Una vez completado el despliegue, puedes utilizar la colección de Postman en la raíz del repositorio o ejecutar la prueba de carga.
Puedes ver las funciones de tu aplicación de ejemplo 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.
La Vista serverless agrupa tus recursos por el SERVICE_NAME
. Si has invocado tus funciones al menos una vez, verás un grupo de servicios separado para cada uno de los servicios de backend individuales.
En la vista serverless, la columna situada más a la derecha se titula Insights (Información). Datadog destaca automáticamente los problemas potenciales de tus aplicaciones serverless, como picos de errores y duración elevada; estos problemas aparecen en la columna Insights (Información).
Para tu aplicación serverless de ejemplo, es probable que Datadog haya detectado un arranque en frío. Los arranques en frío se producen cuando la aplicación serverless recibe un aumento repentino de tráfico. Esto puede ocurrir si la función antes estaba recibiendo un número relativamente constante de solicitudes y de repente empieza a recibir más o, como en este caso, cuando la función estaba previamente inactiva y ha sido invocada por primera vez.
Investigar errores
La aplicación de ejemplo genera errores periódicamente y tiene una respuesta lenta. Esto provoca tiempos de inactividad de Lambda en el servicio de fijación de precios de los productos.
Observa que ambos servicios bajo product-pricing-service
tienen errores. La sección Issues & Insights (Problemas e información) en la parte superior también identifica que uno de tus servicios tiene problemas con los tiempos de inactividad.
Detalles de la función
Haz clic en tu función para ver más detalles sobre las invocaciones y despliegues recientes.
La vista detallada, como se muestra arriba, contiene tres gráficos. Puedes configurarlos para que muestren cualquier métrica disponible; por defecto, muestran tres métricas mejoradas de Lambda: invocaciones, errores y duración.
Datadog genera métricas de Lambda mejoradas predefinidas con baja latencia, granularidad de varios segundos y metadatos detallados para arranques en frío y etiquetas personalizadas. También puedes consultar el dashboard de métricas mejoradas de Lambda.
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áfica de llamas) muestra exactamente lo que ocurrió durante la duración de esta invocación, incluyendo cuáles servicios tuvieron el mayor porcentaje del tiempo total de ejecución. La gráfica de llamas muestra la solicitud a medida que se mueve desde APIGateway, a través de tu create-product-function
.
Si amplías la imagen, también podrás ver toda la traza de extremo a extremo a través de todos los servicios descendentes.
La pestaña Trace Map (Mapa de trazas) representa el flujo de tus servicios y cómo están conectados entre sí.
Si estás viendo una traza con un error, la mitad inferior de la vista detallada de la traza muestra los detalles:
Error: Failure generating prices
at PricingService.calculate (/var/task/index.js:94382:13)
at ProductUpdatedEventHandler.handle (/var/task/index.js:95826:51)
at handler (/var/task/index.js:95854:34)
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 sólo los errores, o verlos en el Log Explorer.