Monitoreando tu aplicación Python con AppSignal – CodesCode

Aprende cómo AppSignal hace que el monitoreo del rendimiento de la aplicación sea sencillo para tus proyectos de Ruby, Elixir, Node.js, JavaScript del frontend y Python.

AppSignal es una fácil de usar APM para tus proyectos de Ruby, Elixir, Node.js, JavaScript frontend y Python. En este artículo, te mostraremos cómo puedes usar AppSignal para mejorar tu aplicación de Python con nuestro último esfuerzo de programación, Nesstr, la aplicación de citas para serpientes.

AppSignal ayuda a miles de desarrolladores, desde principiantes hasta expertos, a comprender mejor cómo y por qué su aplicación se está desempeñando de la manera en que lo está haciendo. En resumen: AppSignal recoge todos los datos de rendimiento complejos de tu aplicación y los traduce en información comprensible y acciones

Este artículo fue creado en colaboración con AppSignal. Gracias por apoyar a los socios que hacen posible CodesCode.

¿Qué es un APM y cómo puede ayudarte?

Las herramientas de monitoreo de rendimiento de aplicaciones (APM) ayudan a transformar los datos de monitoreo de tu aplicación, conocidos como métricas, en información práctica que te ayuda a mejorar el rendimiento de tu aplicación.

AppSignal ofrece herramientas que detectan excepciones, problemas de rendimiento y anomalías tales como tiempos de respuesta altos y colas lentas de trabajos en segundo plano.

En otras palabras, si imaginas que una aplicación es un auto, AppSignal es una herramienta de diagnóstico. Te proporcionamos información rápida sobre el rendimiento y la salud de tu aplicación, ayudándote a saber cuándo tomar medidas antes de que se enciendan luces de advertencia.

Solución de errores con AppSignal

A veces, a pesar de las pruebas manuales y automatizadas, los errores se escapan a producción. Cuando esto sucede, puede ser frustrante y llevar mucho tiempo encontrar la causa raíz de un problema.

Imaginemos un escenario en el que los usuarios de Nesstr informan que no reciben notificaciones cuando a alguien le gusta su perfil. La simple acción de “dar like” a un perfil involucra varios componentes. Las aplicaciones dificultan determinar dónde podría residir la raíz del problema. Por ejemplo, ¿es un componente de React, una función de API o una tarea en segundo plano de Celery?

Aquí es donde AppSignal puede ayudarnos, eliminando las conjeturas e identificando dónde ocurre una excepción en nuestra aplicación. En el caso de Nesstr, hemos configurado AppSignal para notificarnos a través de Slack cada vez que surge un problema en nuestra aplicación.

Error en Slack de AppSignal

Una vez que hemos sido alertados sobre esta excepción, podemos profundizar en AppSignal para comprender más a fondo el incidente. AppSignal nos proporciona un contexto detallado para cada ocurrencia de excepción registrada.

Incidente de error

Gracias a los datos detallados de excepción proporcionados por AppSignal, podemos identificar rápidamente la causa raíz del problema en nuestro código. Al mirar el mensaje de error registrado en AppSignal, podemos ver que nuestra aplicación está intentando obtener el atributo name de un objeto de tipo noneType en la tarea de Celery send_like_notification:

@app.taskdef like_profile(profile, user):    profile.add_like_from(user)user = User.get(user_id) # Esto devuelve none porque nuestro user_id es nil.profile = Profile.get(profile_id)like_profile(post, user)

En lugar de reproducir manualmente todo el flujo de “likes” para encontrar este error, podemos resolverlo de inmediato asegurándonos de que el objeto de tipo noneType esté definido. ¡Genial!

Monitoreo de rendimiento con AppSignal

Habiendo solucionado nuestro notificador de “me gusta”, AppSignal ha notado que nuestro punto final fetch_matches está respondiendo lentamente. Gracias a las ideas de AppSignal, no necesitamos esperar a que un usuario se queje, ni tenemos que pasar por la molestia de descargar un clon de la base de datos sanitizada para intentar reproducir el problema localmente. Podemos revisar la línea de tiempo de eventos de las muestras de rendimiento de fetch_profiles que AppSignal ha registrado.

línea de tiempo de eventos

Aquí, podemos ver fácilmente que psycopg2 está rezagado cuando se solicita el punto final request_match, lo que ralentiza nuestra aplicación.

AppSignal no solo ha eliminado toda la especulación para descubrir por qué el punto final es lento, sino que también nos ha ayudado a identificar de manera proactiva una posible futura restricción de rendimiento. Ahora podemos corregir nuestro punto final y escalar con confianza.

Alertas de Anomalías con AppSignal

Ahora que hemos utilizado AppSignal para solucionar algunos problemas más evidentes en nuestra aplicación, podemos utilizar AppSignal para ayudarnos a adoptar un enfoque más proactivo para el desarrollo y anticipar problemas incluso antes de que se presenten.

En AppSignal, llamamos a esto detección de anomalías. Esta función es un cambio de juego. Podemos usarla para detectar errores y detectar un rendimiento lento antes de que afecte a los usuarios finales o la disponibilidad de nuestra aplicación.

Con la detección de anomalías, podemos crear disparadores que nos notifiquen cuando una métrica deseada alcanza un umbral específico, como cuando nuestra tasa de error supera el 5%, o cuando un punto final tarda más de 200 ms en responder.

crear disparador

Lo genial de la detección de anomalías es que podemos configurarla de una manera que tenga sentido para nuestra aplicación y ser notificados de una manera que tenga sentido para nuestra organización. Con AppSignal, puedes integrarte con muchas herramientas de colaboración de terceros populares como Discord y Slack, lo que significa que AppSignal se integra en tu flujo de trabajo en lugar de obligarte a cambiar tu forma habitual de trabajar.

Mantener tu Monitoreo Observable con AppSignal

Los paneles de AppSignal te brindan información visual instantánea sobre las métricas de tu aplicación, lo que te permite rastrear y seguir rápidamente las métricas de rendimiento.

panel de métricas

Si ves algo que deseas investigar más a fondo, como una tasa de error en aumento rápido, haz clic en ese punto en el gráfico y verás el estado de tu aplicación en ese momento específico.

Puedes agregar marcadores personalizados para ayudar a tu equipo a comprender mejor el rendimiento de tu aplicación y, con soporte de pantalla completa, puedes monitorear tus métricas en cualquier lugar donde puedas instalar una pantalla.

Gestión de tus Registros con AppSignal

A veces, los registros nos brindan información valiosa sobre por qué nuestra aplicación está funcionando de manera inesperada. Con AppSignal, no necesitas acceder a servidores a través de SSH y rastrear tus registros. AppSignal puede ingresar los registros de tu aplicación, brindándote una vista en vivo, y puedes filtrar, consultar y compartir con tus compañeros.

Entonces, puedes pasar de ver un incidente de error en AppSignal a ver los registros en el momento del suceso en cuestión de segundos.

Lo bueno de los registros de AppSignal es que no importa dónde te encuentres en la aplicación de AppSignal, con nuestra increíble función “Time Detective”, estás a solo unos clics de tus registros.

Cuando investigas un error o incidente de rendimiento, puedes usar Time Detective para obtener una vista general del rendimiento de tu aplicación cuando ocurrió el problema y profundizar en tus registros para una depuración más detallada.

Empezando con AppSignal

Puedes hacer que tu aplicación Python envíe métricas a AppSignal en menos tiempo del que toma beber un café.

Regístrate para obtener una cuenta de AppSignal y sigue las instrucciones de nuestro asistente de instalación. El asistente de instalación te guiará a través de todos los pasos necesarios para enviar métricas desde tu aplicación Python a AppSignal.

Nuestra documentación de Python también te guiará a través de todos los pasos necesarios para obtener las métricas que necesitas, incluido cómo puedes instalar AppSignal manualmente.

Comparte Este Artículo


Leave a Reply

Your email address will not be published. Required fields are marked *