Datadog genera automáticamente sugerencias para resolver errores y problemas de rendimiento y optimiza el coste de las aplicaciones serverless.

Además de la información que facilita Watchdog for Serverless, Datadog Serverless Monitoring detecta una serie de problemas relacionados con las funciones y crea advertencias.

Configuración

Datadog utiliza métricas de AWS CloudWatch, métricas de AWS Lambda mejoradas para Datadog y líneas de logs REPORT de Lambda para sugerir advertencias. Si quieres configurarlas, haz lo siguiente:

  1. Configura la integración de Amazon Web Services.
  2. Configura el Datadog Forwarder y asegúrate de que tus logs REPORT de Lambda estén indexados en Datadog.
  3. Habilita las Métricas de Lambda mejoradas para tus funciones.

Nota: Datadog genera las advertencias Errores graves, Duración prolongada, Limitaciones y Duración prolongada del iterador de forma inmediata una vez que se configura la integración de AWS. Todas las demás advertencias, incluidas las que se generan en invocaciones individuales, requieren el Datadog Forwarder y las Métricas de Lambda mejoradas.

Las advertencias que se generan

Errores

Más del 1 % de las invocaciones de la función fueron errores en el intervalo seleccionado.

Solución: examina los logs de la función, comprueba si hay cambios recientes en el código o en la configuración con el Seguimiento del despliegue o busca errores en los microservicios con el rastreo distribuido.

Errores graves

Más del 10 % de las invocaciones de la función fueron errores en el intervalo seleccionado.

Solución: examina los logs de la función, comprueba si hay cambios recientes en el código o en la configuración con el Seguimiento del despliegue o busca errores en los microservicios con el rastreo distribuido.

Uso elevado de memoria

Al menos una invocación en el intervalo seleccionado utilizó más del 95 % de la memoria asignada.

El rastreo distribuido puede ayudarte a localizar las funciones de Lambda con límites de memoria bajos y las partes de tu aplicación que utilizan cantidades excesivas de memoria.

Solución: las funciones de Lambda que utilizan cerca de su máximo de memoria configurado corren el riesgo de ser detenidas por el tiempo de ejecución de Lambda, lo que genera errores para el usuario. Considera aumentar la cantidad de memoria configurada en tu función. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Duración prolongada

Al menos una invocación en el intervalo seleccionado superó el 95 % del tiempo de espera configurado.

El rastreo distribuido puede ayudarte a localizar las llamadas lentas a la API en tu aplicación.

Solución: las funciones de Lambda que se ejecutan cerca de su tiempo de espera configurado corren el riesgo de ser eliminadas por el tiempo de ejecución de Lambda. Esto puede provocar respuestas lentas o fallidas a las solicitudes entrantes. Considera aumentar el tiempo de espera configurado si crees que tu función necesita más tiempo de ejecución. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Arranques en frío

Más del 1 % de las invocaciones de la función fueron arranques en frío en el intervalo seleccionado.

Las métricas mejoradas y el rastreo distribuido de Datadog pueden ayudarte a entender el impacto que los arranques en frío tienen en tus aplicaciones hoy.

Solución: los arranques en frío se producen cuando las aplicaciones serverless reciben aumentos repentinos de tráfico, y pueden ocurrir si una función estaba previamente inactiva o si recibía un número relativamente constante de solicitudes. Los usuarios pueden notar los arranques en frío como tiempos de respuesta lentos o latencia. Para anticiparte a los arranques en frío, considera habilitar la simultaneidad aprovisionada en las funciones de Lambda afectadas. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Sin memoria

Al menos una invocación en el intervalo seleccionado se quedó sin memoria.

Solución: las funciones de Lambda que utilizan más de la cantidad de memoria asignada pueden ser eliminadas por el tiempo de ejecución de Lambda. Para los usuarios, esto se ve como envíos de solicitudes a la aplicación fallidos. El rastreo distribuido puede ayudarte a localizar las partes de tu aplicación que utilizan cantidades excesivas de memoria. Considera aumentar la cantidad de memoria que tu función de Lambda puede utilizar.

Tiempos de espera

Al menos una invocación en el intervalo seleccionado caducó. Esto ocurre cuando tu función se ejecuta durante más tiempo que el tiempo de espera configurado o el tiempo de espera global de Lambda.

Solución: el rastreo distribuido puede ayudarte a localizar las solicitudes lentas a las API y otros microservicios. También puedes considerar aumentar el tiempo de espera de tu función. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Limitaciones

Más del 10 % de las invocaciones en el intervalo seleccionado estuvieron limitadas. Las limitaciones se producen cuando las aplicaciones serverless de Lambda reciben altos niveles de tráfico sin la simultaneidad adecuada.

Solución: comprueba las métricas de simultaneidad de Lambda y confirma si aws.lambda.concurrent_executions.maximum se está acercando al nivel de simultaneidad de tu cuenta de AWS. Si es así, considera configurar la simultaneidad reservada o solicita un aumento de la cuota de servicio a AWS. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Duración prolongada del iterador

El iterador de la función tenía una duración de más de dos horas. La duración del iterador mide la duración del último registro de cada lote de registros procesados en un flujo (stream). Cuando este valor aumenta, significa que tu función no puede procesar datos lo suficientemente rápido.

Solución: habilita el rastreo distribuido para aislar el motivo por el cual tu función recibe tantos datos. También puedes considerar aumentar el número de fragmentos y el tamaño de lotes en el flujo del que lee tu función.

Exceso de aprovisionamiento

Ninguna invocación en el intervalo seleccionado utilizó más del 10 % de la memoria asignada. Esto significa que tu función tiene asignados más recursos facturables de los necesarios.

Solución: considera disminuir la cantidad de memoria asignada en tu función de Lambda. Ten en cuenta que esto puede verse reflejado en tu factura de AWS.

Amenazas detectadas

Se detectaron intentos de ataque dirigidos a la aplicación serverless.

Solución: investiga los intentos de ataque en ASM haciendo clic en el botón Security Signals (Señales de seguridad) para determinar cómo responder. Si es necesaria una acción inmediata, puedes bloquear la IP del ataque en WAF a través de la integración de flujos de trabajo.

Referencias adicionales

Más enlaces, artículos y documentación útiles: