Registro y métricas paraAWS Lambda - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Registro y métricas paraAWS Lambda

Lambdaelimina la necesidad de gestionar y supervisar los servidores para sus cargas de trabajo y funciona automáticamente con CloudWatchMétricas y CloudWatch Registra sin necesidad de configurar o instrumentar el código de la aplicación. Esta sección le ayuda a comprender las características de rendimiento de los sistemas utilizados por Lambda y cómo sus elecciones de configuración influyen en el rendimiento. También le ayuda a registrar y supervisar las funciones de Lambda para optimizar el rendimiento y diagnosticar problemas a nivel de aplicación.

Registro de funciones lambda

Lambda transmite automáticamente la salida estándar y los mensajes de error estándar de una función de Lambda a CloudWatch Registra, sin necesidad de registrar controladores. Lambda también aprovisiona automáticamente los contenedores en los que se ejecuta la función de Lambda y los configura para que generen los mensajes de registro en flujos de registro independientes.

Las invocaciones posteriores de la función de Lambda pueden reutilizar el mismo contenedor y generar resultados en el mismo flujo de registro. Lambda también puede aprovisionar un nuevo contenedor y enviar la invocación a un nuevo flujo de registro.

Lambda crea automáticamente un grupo de registros cuando se invoca la función de Lambda por primera vez. Las funciones de Lambda pueden tener varias versiones y usted puede elegir la versión que desee ejecutar. Todos los registros de las invocaciones de la función de Lambda se almacenan en el mismo grupo de registros. El nombre no se puede cambiar y está en el/aws/lambda/<YourLambdaFunctionName>formato. Se crea un flujo de registro independiente en el grupo de registros para cada instancia de función de Lambda. Lambda tiene una convención de nomenclatura estándar para los flujos de registro que utiliza unYYYY/MM/DD/[<FunctionVersion>]<InstanceId>formato. ElInstanceIdes generado porAWSpara identificar la instancia de la función Lambda.

Le recomendamos que formatee los mensajes de registro en formato JSON, ya que puede consultarlos más fácilmente con CloudWatch Registra Insights. También se pueden filtrar y exportar más fácilmente. Puede usar una biblioteca de registro para simplificar este proceso o escribir sus propias funciones de manejo de registros. Le recomendamos que utilice una biblioteca de registro para ayudar a formatear y clasificar los mensajes de registro. Por ejemplo, si la función Lambda está escrita en Python, puede usar laMódulo de registro de Pythonpara registrar los mensajes y controlar el formato de salida. Lambda utiliza de forma nativa la biblioteca de registro de Python para las funciones de Lambda escritas en Python, y usted puede recuperar y personalizar el registrador dentro de su función de Lambda.AWS Labs ha creado elAWSLambda Powertools para Pythonkit de herramientas para desarrolladores que facilita el enriquecimiento de los mensajes de registro con datos clave, como los arranques en frío. El kit de herramientas está disponible para Python, Java, TypeScript y.NET.

Otra práctica recomendada es establecer el nivel de salida del registro mediante una variable y ajustarlo en función del entorno y sus requisitos. El código de la función Lambda, además de las bibliotecas utilizadas, podría generar una gran cantidad de datos de registro en función del nivel de salida del registro. Esto puede afectar a los costes de registro y al rendimiento.

Lambda le permite configurar variables de entorno para su entorno de ejecución de funciones de Lambda sin necesidad de actualizar el código. Por ejemplo, puede crear unLAMBDA_LOG_LEVELvariable de entorno que define el nivel de salida del registro que puede recuperar del código. En el siguiente ejemplo se intenta recuperar unLAMBDA_LOG_LEVELvariable de entorno y utilice el valor para definir el resultado del registro. Si la variable de entorno no está establecida, el valor predeterminado esINFOnivel.

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

Envío de registros a otros destinos desde CloudWatch

Puede enviar registros a otros destinos (por ejemplo, Amazon OpenSearch Servicio (o una función de Lambda) mediante filtros de suscripción. Si no utilizas Amazon OpenSearch Servicio, puede utilizar una función de Lambda para procesar los registros y enviarlos a unAWSservicio de su elección mediante elAWSSDK.

También puede utilizar los SDK para destinos de registro ajenos alAWSIntegre su función de Lambda para enviar directamente las declaraciones de registro al destino que elija. Si elige esta opción, le recomendamos que considere el impacto de la latencia, el tiempo de procesamiento adicional, la gestión de errores y reintentos y la vinculación de la lógica operativa a la función de Lambda.

Métricas de función de Lambda

Lambda le permite ejecutar su código sin administrar ni escalar los servidores, lo que prácticamente elimina la carga de realizar auditorías y diagnósticos a nivel del sistema. Sin embargo, sigue siendo importante comprender las métricas de rendimiento e invocación a nivel del sistema para las funciones de Lambda. Esto le ayuda a optimizar la configuración de los recursos y a mejorar el rendimiento del código. La supervisión y la medición eficaces del rendimiento pueden mejorar la experiencia del usuario y reducir los costes al dimensionar adecuadamente las funciones de Lambda. Por lo general, las cargas de trabajo que se ejecutan como funciones de Lambda también tienen métricas a nivel de aplicación que deben capturarse y analizarse. Lambda admite directamente el formato métrico integrado para que la captura se realice a nivel de aplicación CloudWatch las métricas son más fáciles.

Métricas a nivel de sistema

Lambda se integra automáticamente con CloudWatch Métrica y proporciona un conjunto demétricas estándar para sus funciones de Lambda. Lambda también proporciona un panel de supervisión independiente para cada función de Lambda con estas métricas. Dos métricas importantes que debe supervisar son los errores y los errores de invocación. Comprender las diferencias entre los errores de invocación y otros tipos de errores le ayuda a diagnosticar y respaldar las implementaciones de Lambda.

Errores de invocaciónimpiden que la función Lambda se ejecute. Estos errores se producen antes de que se ejecute el código, por lo que no puede implementar la gestión de errores en el código para identificarlos. En su lugar, debe configurar alarmas para las funciones de Lambda que detecten estos errores y notifiquen a los propietarios de las operaciones y la carga de trabajo. Estos errores suelen estar relacionados con un error de configuración o permiso y pueden producirse debido a un cambio en la configuración o los permisos. Los errores de invocación pueden iniciar un reintento, lo que provoca varias invocaciones de la función.

Una función de Lambda que se invoca correctamente devuelve una respuesta HTTP 200 incluso si la función lanza una excepción. Sus funciones de Lambda deben implementar la gestión de errores y generar excepciones para queErrorsla métrica captura e identifica las ejecuciones fallidas de la función de Lambda. Debe devolver una respuesta formateada a las invocaciones de la función de Lambda que incluya información para determinar si la ejecución ha fallado total, parcialmente o se ha realizado correctamente.

CloudWatch proveeCloudWatch Lambda Insightsque puede habilitar para una función Lambda individual. Lambda Insights recopila, agrega y resume las métricas a nivel del sistema (por ejemplo, el tiempo de CPU, la memoria, el disco y el uso de la red). Lambda Insights también recopila, agrega y resume la información de diagnóstico (por ejemplo, arranques en frío y paradas de trabajo de Lambda) para ayudarlo a aislar los problemas y resolverlos rápidamente.

Lambda Insights utiliza el formato métrico integrado para emitir automáticamente la información de rendimiento al/aws/lambda-insights/grupo de registros con un prefijo de nombre de flujo de registro basado en el nombre de la función de Lambda. Estos eventos del registro de rendimiento crean CloudWatch métricas que son la base de la automatización CloudWatch cuadros de mando. Le recomendamos que habilite Lambda Insights para las pruebas de rendimiento y los entornos de producción. Entre las métricas adicionales creadas por Lambda Insights se incluyenmemory_utilizationesto ayuda a dimensionar correctamente las funciones de Lambda para evitar tener que pagar por una capacidad innecesaria.

Métricas de aplicación

También puede crear y capturar las métricas de sus propias aplicaciones en CloudWatch utilizando el formato métrico integrado. Puede aprovecharAWS proporcionó bibliotecas para el formato métrico integradopara crear y emitir declaraciones de formato métrico integradas a CloudWatch. La Lambda integrada CloudWatch La función de registro está configurada para procesar y extraer sentencias de formato métrico integradas con el formato adecuado.