¿Te has visto alguna vez en la tesitura de que se caiga una aplicación?
¿Le ha notificado su cliente la caída de los servicios?
Debe de ser una situación difícil. A lo largo de los años, NodeJS se ha convertido en un popularmente utilizado Marco JavaScript para el desarrollo rápido de microservicios y API. Con las cargas de trabajo que se ejecutan en NodeJS, resulta crucial disponer de la supervisión adecuada para las métricas esenciales.
Exploremos las siguientes herramientas de monitorización de Node.JS que le ayudarán a monitorizar el rendimiento de la aplicación y el servidor y otras métricas.
PM2

PM2 ha sido la herramienta más famosa utilizada por desarrolladores novatos y expertos para asegurar que sus aplicaciones estén siempre en vivo. PM2 se utiliza para ejecutar cargas de trabajo de producción en vivo y monitorizarlas desde CLI o interfaz web. Puedes instalarlo como un módulo NPM.
PM2 es una solución preparada para la empresa, que ofrece las siguientes funciones listas para usar.
- Gestión de múltiples aplicaciones NodeJS en un único servidor
- Aplicación y error gestión de registros
- Integración de una interfaz web para supervisar el estado y las métricas de las aplicaciones
- Auto-clustering para aplicaciones NodeJS
- Recarga en caliente de la aplicación.
- Soporte para guiones de arranque
- Transmisión de logs a una interfaz web
Primeros pasos con PM2
Para instalar PM2, asegúrese de que dispone de MNP instalado. Para validar la instalación y la versión de NPM, utilice el siguiente comando.
npm --version
Este comando debería mostrarle la versión de NPM si está instalada.
Además, instale PM2 utilizando el siguiente comando:
npm install -g pm2
La bandera mundial -g
instalará y hará que el módulo esté disponible globalmente como un comando. Para iniciar cualquier aplicación utilizando PM2, vaya a la carpeta que contiene el proyecto NodeJS y ejecute el siguiente comando:
pm2 start <start-filename> --name myapp
El comando anterior lanza una aplicación NodeJs utilizando el archivo especificado en el primer argumento. También nombra la aplicación con el nombre myapp
. Al ejecutar la aplicación NodeJS utilizando pm2
se asegura de que el servicio no se caiga y, si lo hace, intenta reiniciar automáticamente la aplicación.
Para activar la supervisión en directo en la interfaz web, debe registrarse en aquí. Una vez generadas sus claves, podrá ver las instrucciones para conectar PM2 en su servidor a la interfaz web.
Sematext
Sematext ofrece monitorización completa. Full-stack significa que tiene visibilidad completa de la disponibilidad y el rendimiento de su infraestructura y aplicaciones, métricas, registros, experiencia de usuario front-end, estado y rendimiento de sus API, certificados SSL, etc.

Sematext tiene más de 100 integraciones, incluyendo NodeJS. Estas son algunas de ellas:
- Servidores web - Nginx, Apache
- Base de datos - MySQL, MariaDB, PostgreSQL, Redis
- Contenedores - Kubernetes, Docker, Rancher
- Otros idiomas - PHP, ScalaPython, Go, Java
- AWS - EC2, ELB, S3, Aurora
Y mucho más...
Supervisión de NodeJS ayuda a supervisar la latencia, la tasa de solicitudes, la recolección de basura, las anomalías, los trabajadores, los eventos, el latido del corazón y mucho más. Puede visualizar los datos en un bonito panel ya preparado o crear uno personalizado si es necesario.
Reciba notificaciones cuando las cosas no vayan bien a través de Slack, WebHooks, PageDuty, MS Teams, etc. Sematext ofrece una solución integral de monitorización y análisis de logs. Puede comprobar los demo para experimentar la plataforma.
Mejor tiempo de actividad
Mejor tiempo de actividad es un moderno servicio de supervisión que combina la supervisión del tiempo de actividad, la gestión de incidencias y las páginas de estado en un único producto de bonito diseño.

La configuración dura 3 minutos. Después, recibirás una llamada, un correo electrónico o una alerta de Slack cada vez que tu aplicación Node.js no funcione correctamente o deje de funcionar por completo. Las principales características son:
- HTTP(s), Ping, API, caducidad de SSL y TLD, comprobaciones de Cron jobs
- Alertas de llamadas telefónicas ilimitadas
- Fácil programación de las guardias
- Capturas de pantalla y registros de errores de incidentes
- Slack, Teams, Heroku, AWS y más de 100 integraciones más
Appmetrics
Appmetrics es un proyecto de código abierto gestionado y mantenido por IBM. El proyecto se centra en proporcionar las bases para recopilar excelentes métricas de aplicaciones repartidas en diversas actividades como la transacción de datos, la velocidad de la red, el rendimiento de las consultas a bases de datos, la utilización de la CPU y la memoria, la recolección de basura y otras.
Fusionándolo con un plugin como appmetrics-dash podría proporcionar una excelente interfaz web para supervisar sus aplicaciones.

Puede utilizar Appmetrics como middleware para construir sus aplicaciones de monitorización.
Raygun

Raygun es una plataforma para gestionar y monitorizar el rendimiento de aplicaciones para múltiples lenguajes de programación, incluido NodeJS. Te ayuda a depurar los problemas en tiempo real con registros de fallos, analizar el código de la aplicación y encontrar el punto de error correcto desde el propio código.
A continuación se enumeran algunas de sus características.
- Proporciona informes de errores precisos y en tiempo real
- Admite la notificación de errores en toda la pila
- Control en tiempo real de las sesiones de usuario
- Supervisión del rendimiento del servidor y detección de cuellos de botella en tiempo real
Merece la pena invertir tiempo y dinero en Raygun para aplicaciones de misión crítica. Proporciona información que puede traducirse en un gran retorno de la inversión.
Monitor de estado Express
Control de estado exprés es una herramienta de código abierto dedicada a la monitorización de ExpressJS. Es un hecho conocido que ExpressJS es el framework web más popular utilizado en NodeJS.

Como puede ver en la instantánea anterior, puede supervisar el tiempo de respuesta, la frecuencia de las solicitudes, el código de estado, la utilización de CPU/memoria y la carga media.
ClínicaJS

Clínica.js es una librería disponible para integrar con aplicaciones NodeJS para monitorizar y obtener parámetros críticos de rendimiento de la misma. Es una combinación de tres herramientas principales - Doctor, Bubbleprofy Llama. Cada una de estas herramientas se utiliza para el seguimiento de métricas diferentes.
Médico ClinicJS
- Recopilar métricas de salud y heurísticas
- Inyectar sondas en la aplicación automáticamente
- Proporcionar una interfaz gráfica para ver el rendimiento de la aplicación y las métricas en tiempo real.
- Generar recomendaciones para optimizar las aplicaciones
ClinicJS Bubbleprof
- Trazar gráficos de burbujas que describan la ejecución interna de la aplicación
- Ayuda a localizar los errores mostrando gráficos de ejecución de funciones
- Recoge métricas mediante ganchos asíncronos
- Proporciona información sobre la latencia entre llamadas a funciones
Llama ClinicJS
- Control dedicado de las métricas de la CPU
- Interfaz gráfica para supervisar en directo el rendimiento de la CPU de la aplicación
- Genera gráficos de llamas que ayudan a identificar los valores máximos alcanzados por las métricas.
- Proporciona información sobre las actividades de su aplicación que consumen CPU
Disponemos de apoyo comercial si lo necesita para su negocio.
AppSignal
AppSignal es un producto comercial que ofrece autoinstrumentación a la llamada HTTP de Node.js, Express, Next.js y Postgress.

Para ponerlo en marcha, es necesario instalar un agente AppSignal ligero en el servidor, que recoge las métricas necesarias. En un nivel alto, hace lo siguiente.
- Supervise el rendimiento: encuentre y corrija el código o la infraestructura que ralentizan la disponibilidad y el rendimiento de la aplicación.
- Métricas: visualice lo que le importa en el cuadro de mandos.
- Detectar anomalías: recibe notificaciones cuando las cosas no son como esperabas.
- Monitor Server - no consiga otro software de monitorización de servidores. Usted obtiene todas las métricas estándar de recursos como CPU, Disco, Memoria, Red, etc.
Prometheus + Grafana

La idea es combinar dos potentes programas Prometheus y Grafana.
Prometheus tiene un cliente para Nodejs llamado prom-clientinstalado en el servidor NodeJS para recopilar las métricas. A continuación, puede instalar Grafana en el mismo servidor o de forma remota para extraer las métricas de Prometheus y visualizarlas.
Puede crear un panel de control Grafana desde cero en función de sus necesidades o aprovechar los dos siguientes.
Para ello es necesario conocer ambas herramientas. Si necesitas ayuda para aprender a utilizar Prometheus, echa un vistazo a esto Curso Udemy.
Conclusión
La monitorización es a menudo ignorada, pero resulta muy crítica para la disponibilidad de las aplicaciones. Teniendo en cuenta que el coste de desarrollo es un factor crucial, las herramientas que analizan el código, supervisan el rendimiento y proporcionan una conocimiento de los erroresson sin duda de gran valor. Ahorran tiempo y esfuerzo y le ayudan a cumplir los SLA ofreciendo una resolución más rápida al cliente.