Monitorización de Internet con MySpeed y n8n: alertas automáticas con Telegram

En este proyecto vamos a crear una monitorización de Internet con MySpeed y n8n capaz de comprobar periódicamente el rendimiento de nuestra conexión y enviarnos una alerta automática mediante Telegram cuando se detecte una degradación.

La solución está construida utilizando Docker y diferentes contenedores para mantener todos los componentes aislados y fáciles de administrar. MySpeed se encarga de realizar las pruebas de velocidad, mientras que una API propia mediante myspeed-api permite consultar los resultados desde n8n. Finalmente, n8n procesa la información, controla los fallos consecutivos y decide cuándo es necesario enviar una notificación.

El objetivo no es simplemente medir la velocidad de Internet, sino crear un sistema que pueda funcionar de forma autónoma, detectar problemas y avisarnos únicamente cuando realmente sea necesario.

En mi caso, he configurado el sistema para que, después de detectar 3 resultados anómalos consecutivos, se envíe una alerta a Telegram. Cuando la conexión vuelve a la normalidad, el sistema detecta la recuperación, reinicia el contador y puede enviar una nueva notificación.

Todo el proyecto está desplegado mediante Docker, buscando una solución sencilla, autónoma y sin depender de servicios externos de pago.


¿Qué vamos a construir?

La solución está formada por varios componentes que trabajan conjuntamente:

  • Ubuntu Server: sistema operativo donde se ejecuta toda la infraestructura.
  • Docker: plataforma utilizada para ejecutar los servicios mediante contenedores.
  • MySpeed: realiza las pruebas de velocidad y almacena los resultados.
  • myspeed-api: API intermedia que permite consultar los resultados de MySpeed.
  • n8n: automatiza el proceso y toma las decisiones.
  • Telegram: canal utilizado para recibir las alertas.

1. Preparar Ubuntu Server

El primer paso es disponer de un servidor donde ejecutar todos los servicios. Para este proyecto utilizamos Ubuntu Server, aunque la misma arquitectura podría adaptarse a otros sistemas compatibles con Docker.

Una vez instalado el sistema, es recomendable actualizar los paquetes:

sudo apt update 
sudo apt upgrade -y

 

También debemos comprobar que el servidor tiene conectividad:

ping 8.8.8.8

Antes de continuar conviene verificar que el servidor tiene una dirección IP accesible desde nuestra red local, ya que posteriormente accederemos a las interfaces web de MySpeed, n8n y otros servicios.


2. Instalar Docker

Docker será la base de nuestra infraestructura.

En lugar de instalar todos los servicios directamente sobre Ubuntu, utilizaremos contenedores independientes. Esto permite mantener cada aplicación aislada y facilita las tareas de mantenimiento.

Después de instalar Docker y Docker Compose podemos comprobar que funcionan correctamente:

docker --version

y:

docker compose version

También podemos utilizar Portainer para administrar visualmente nuestros contenedores desde una interfaz web.

La arquitectura quedará organizada de forma que MySpeed, myspeed-api y n8n puedan funcionar de manera independiente.


3. Instalar MySpeed

El siguiente componente es MySpeed.

Su función es realizar periódicamente las pruebas de velocidad de nuestra conexión a Internet y almacenar los resultados.

Entre los datos que podemos obtener se encuentran:

  • Velocidad de descarga.
  • Velocidad de subida.
  • Ping.
  • Fecha y hora de la prueba.
  • Información del servidor.
  • Estado de la prueba.

Una vez desplegado el contenedor podemos acceder a la interfaz web de MySpeed desde nuestro navegador.

Aquí podremos comprobar manualmente que las pruebas se realizan correctamente antes de continuar con la automatización.


4. Crear myspeed-api

Para integrar MySpeed con n8n necesitamos una forma sencilla de consultar sus resultados.

Para ello creamos myspeed-api, una pequeña API que actúa como intermediaria entre MySpeed y n8n.

La API permite realizar una petición HTTP para obtener el último resultado disponible.

Por ejemplo:

http://myspeed-api:8080/latest

La respuesta se obtiene en formato JSON:

{
  "download": 942.82,
  "upload": 779.25,
  "ping": 10,
  "error": null
}

Esto es especialmente útil porque n8n puede trabajar directamente con estos valores para determinar si la conexión está funcionando correctamente.


5. Instalar n8n

El siguiente componente es n8n, que será el encargado de automatizar todo el proceso.

Una vez desplegado mediante Docker, accedemos a su interfaz web y creamos un nuevo workflow llamado:

Monitor Internet – MySpeed

n8n será el encargado de ejecutar periódicamente las comprobaciones, analizar los resultados, mantener el contador de fallos y enviar las notificaciones.


6. Crear el workflow

El workflow comienza con un Schedule Trigger, que ejecuta automáticamente el proceso según el intervalo configurado.

En nuestra implementación utilizamos un intervalo periódico para realizar nuevas comprobaciones.

Monitoring dockert n8n myspeed lbernal
Objetivo: construir una monitorización local y gratuita que ejecute una prueba de velocidad
periódicamente, evalúe el rendimiento, acumule fallos consecutivos y envíe una notificación de
Telegram únicamente cuando se detecte una degradación sostenida. Cuando la conexión vuelve a la
normalidad, el sistema puede enviar una notificación de recuperación.

El nodo HTTP Request consulta myspeed-api y obtiene el último resultado de MySpeed.

Después, el nodo IF analiza los valores.

Por ejemplo, podemos establecer unos límites mínimos de descarga y subida y un límite máximo de ping. Si alguno de estos valores supera los criterios establecidos, el resultado se considera anómalo.


7. Configurar Telegram

Para recibir las notificaciones utilizamos un bot de Telegram.

Configuramos las credenciales del bot dentro de n8n y posteriormente conectamos el nodo Send a text message a la rama correspondiente del workflow.

La alerta puede contener información obtenida directamente de la prueba:

🚨 ALERTA INTERNET
⚠️ Se ha detectado una degradación de la conexión.

📥 Descarga: 793.95 Mbps
📤 Subida: 821.87 Mbps
📡 Ping: 11 ms

🖥️ Servidor: LuisBernalServer
🌐 MySpeed

Se han detectado varios tests consecutivos
con rendimiento anormal.

De esta forma recibimos información útil y no simplemente un mensaje genérico indicando que existe un problema.


8. Sistema de contador de fallos

Esta es una de las partes más importantes del proyecto.

Una prueba aislada con un resultado inferior al habitual no significa necesariamente que exista una incidencia. Las velocidades pueden fluctuar por diferentes motivos.

Por eso decidimos utilizar un contador de fallos consecutivos.

La lógica establece:

Fallo 1 → No enviar alerta
Fallo 2 → No enviar alerta
Fallo 3 → 🚨 Enviar alerta

El contador se mantiene mediante datos estáticos del workflow:

const staticData = $getWorkflowStaticData('global');

if (!staticData.failures) {
  staticData.failures = 0;
}

staticData.failures++;

const threshold = 3;

const shouldAlert =
  staticData.failures >= threshold &&
  staticData.alerting !== true;

if (shouldAlert) {
  staticData.alerting = true;
}

Además, guardamos el estado alerting para evitar que Telegram reciba una nueva alerta en cada ejecución mientras la incidencia continúa.

Esto evita convertir una pequeña incidencia en una lluvia de notificaciones. 😅


9. Detectar recuperación

El sistema también debe saber cuándo la conexión vuelve a funcionar correctamente.

Cuando el nodo IF determina que la conexión ha recuperado unos valores normales, el flujo pasa por Reset contador.

Este nodo comprueba si anteriormente estábamos en estado de alerta:

const staticData = $getWorkflowStaticData('global');

const wasAlerting = staticData.alerting === true;

staticData.failures = 0;
staticData.alerting = false;

return [{
  json: {
    ...$json,
    recovered: wasAlerting
  }
}];

De esta manera conseguimos mantener un ciclo completo:

10. Realizar pruebas

Antes de dejar el sistema funcionando de manera permanente es importante probar cada componente.

Primero verificamos que MySpeed realiza correctamente las pruebas.

Después comprobamos que myspeed-api devuelve los datos esperados.

A continuación ejecutamos el workflow de n8n y verificamos que:

  1. El Schedule Trigger inicia la ejecución.
  2. HTTP Request obtiene los datos.
  3. El nodo IF clasifica correctamente el resultado.
  4. El contador aumenta cuando existe un fallo.
  5. El tercer fallo activa la alerta.
  6. Telegram recibe el mensaje.
  7. No se generan alertas repetitivas mientras continúa el problema.
  8. La recuperación reinicia el contador.
  9. Se puede enviar la correspondiente notificación de recuperación.

Durante la fase de configuración podemos utilizar Execute step para comprobar individualmente la salida de cada nodo.

Una vez comprobado todo, dejamos el workflow activo para que n8n continúe ejecutándolo automáticamente.


11. Resultado final

Después de completar la configuración tenemos un sistema completamente automatizado para supervisar nuestra conexión a Internet.

Ya no necesitamos abrir MySpeed manualmente para comprobar si nuestra conexión funciona correctamente.

El sistema realiza las comprobaciones automáticamente, analiza los resultados y únicamente nos avisa cuando se cumplen las condiciones que hemos definido.

La combinación de Docker + MySpeed + myspeed-api + n8n + Telegram permite crear una solución sencilla pero bastante potente para un entorno doméstico, laboratorio, pequeña oficina o proyecto de homelab.


Conclusiones

Este proyecto demuestra cómo podemos combinar diferentes tecnologías para crear una solución de monitorización práctica y autónoma.

MySpeed se encarga de realizar las pruebas de velocidad, myspeed-api proporciona los datos necesarios, n8n gestiona toda la lógica de automatización y Telegram nos permite recibir las alertas.

La parte más interesante es que no nos limitamos a comprobar si Internet está funcionando. Hemos creado una lógica capaz de analizar resultados consecutivos, detectar una degradación, evitar alertas repetitivas y reconocer cuándo la conexión se recupera.

Además, al estar todo desplegado mediante Docker, cada componente permanece aislado y resulta mucho más sencillo administrar la infraestructura.

Y este proyecto puede seguir creciendo. A partir de esta base podríamos añadir almacenamiento histórico, gráficos con Grafana, monitorización de varios servidores, alertas por correo, Microsoft Teams u otras plataformas, e incluso integrar el sistema con herramientas de observabilidad más avanzadas.

En definitiva, un proyecto de monitorización de Internet con MySpeed y n8n que reúne Linux, Docker, redes, APIs, automatización y mensajería en una solución real y totalmente funcional. 💻🌐📊

#Docker #n8n #MySpeed #Monitoring #Networking #Automation #Telegram #DevOps #Homelab #IT #Linux #SelfHosted #InternetMonitoring

Descarga la Guía

Guia_Monitorizacion_Internet_MySpeed_n8n_Telegram

 

Monitorización de Internet con MySpeed y n8n mediante un workflow automatizado
En este proyecto vamos a crear una monitorización de Internet con MySpeed y n8n capaz de comprobar periódicamente el rendimiento de nuestra conexión y enviarnos una alerta automática mediante Telegram cuando se detecte una degradación. La solución está construida utilizando Docker y diferentes contenedores para mantener todos los componentes aislados y fáciles de administrar. MySpeed se encarga de realizar las pruebas de velocidad, mientras que una API intermedia permite consultar los resultados desde n8n. Finalmente, n8n procesa la información, controla los fallos consecutivos y decide cuándo es necesario enviar una notificación.
Monitorización de Internet con MySpeed y n8n mediante un workflow automatizado
Monitorización de Internet con MySpeed y n8n | Telegram
Monitorización de Internet con MySpeed y n8n: alertas automáticas con Telegram