Muchas veces, cuando creamos una función Lambda en AWS, podemos encontrarnos la necesidad de crear una alarma en caso de que obtengamos algún mensaje de Warning o Error en nuestro log de CloudWatch logs.

A continuación, realizaremos la configuración necesaria para crear una métrica a partir de un mensaje en concreto de una Lambda de prueba.

Configuración de la función Lambda de Prueba:

En este caso, partimos de una Lambda en Python 3.11 muy simple, que muestra un mensaje de Warning en caso de que el evento pasado a la función venga vacío o con el valor None.

El código es el siguiente:

Ahora, ejecutaremos la Lambda unas cuantas veces con el evento vacío para que nos genere en los logs el mensaje de Warning indicado.

Al ejecutar la función Lambda con este evento, si vamos a CloudWatch Logs, veremos que ha generado el mensaje de Warning que esperábamos.

Creación del Metric Filter en CloudWatch Logs:

Ahora que ya tenemos unos cuantos mensajes de Warning, podemos crear nuestra métrica personalizada. Para ello, vamos a las opciones del Log Group > Metric Filters > Create Metric Filter

Al seleccionar esta opción, se nos abrirá un menú para configurar nuestra nueva métrica.

En el primer paso, definimos el patrón a buscar en los logs para generar la métrica. En nuestro caso, buscamos la cadena “WARNING:”

En la misma pantalla, podemos seleccionar un Log Stream existente, para ver si el patrón definido anteriormente da coincidencias.

En el segundo paso de la configuración, procedemos a configurar el nombre de la métrica, el namespace, etc.

Por último, revisamos la configuración del metric filter y aceptamos.

El resultado final debería ser igual o parecido a este:

Creación de Alarma en CloudWatch con la métrica recién creada:

El primer paso es crear una nueva alarma en CloudWatch. Para ello, vamos al menú correspondiente y vamos a la opción de crear nueva alarma.

Ahora ha llegado el momento de seleccionar la métrica recién creada. Es posible que necesitemos ejecutar la Lambda de prueba un par de veces para que genere la métrica y podamos seleccionarla.

Al hacer click en “select metric”, se abrirá el buscador de métricas de AWS y ya deberíamos poder visualizar nuestra métrica.

El resto de la configuración de la alarma, depende ya de nosotros.

En este caso, al ser un ejemplo, indicamos que la alarma salta cuando detecte 1 data point de 1 en un tiempo de 5 minutos, y que notifique a un SNS de prueba que tenemos configurado para que nos llegue un mensaje por correo.

El nombre de la alarma también puede ser a nuestra elección.

La configuración final queda así:

Ahora, ejecutamos la Lambda de prueba unas cuantas veces, y vemos que, efectivamente, el mensaje de Warning se está monitorizando en CloudWatch y la alarma va cambiando de estado al detectar el mensaje:

Con esto, ya podemos monitorizar nuestras Lambdas según el mensaje que obtengamos en los logs, para mantener nuestras ejecuciones más controladas de una forma sencilla.

Esperemos que el post te haya sido de utilidad y contacta con nuestro equipo si necesitas ayuda.