Monitorea tus servicios con Uptime Kuma

Uptime Kuma

Uno de los principales fuertes de un sysadmins es ser pro-activo antes cualquier fallo o caída de un servicio y para lograrlo debes tener todos tus servicios monitoreados. En Internet existe muchos sistemas para lograrlo. En este artículo vamos a enseñarles cómo montar un sistema de monitoreo al estilo de UptimeRobot llamado Uptime Kuma con notificación mediante telegram o correo y otros servicios de una forma fácil.

Uptime Kuma Es una herramienta de monitorización auto hospedada es decir que puedes montarla en tu red y de esa forma monitorear servicios que no están publicados para Internet. Este proyecto utiliza completamente socket.io como backend y Vue 3 como frontend. Deberías sentir la interactividad tan rápida en comparación con las aplicaciones web tradicionales.

Características

  • Monitorización del tiempo de actividad para HTTP(s) / TCP / Ping / Registro DNS.
  • UI/UX elegante, reactivo y rápido.
  • Notificaciones vía Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), y más de 70 servicios de notificación, haz clic aquí para ver la lista completa.
  • Intervalo de 20 segundos.
  • Multi Idiomas

Preparación del servidor

Para esta instalación usaremos ubuntu 20.04 como base y una vez iniciado el Servidor accedemos al mismo y preparamos los requerimientos mínimos que en este caso será docker

Instalamos Docker

Una vez instalado docker procedemos a configurar algunos mirror por si estas instalando desde un lugar donde docker no está permitido libremente
sudo nano /etc/docker/daemon.json

Si desea agregar un registro de mirror inseguro aquí les dejo el enlace de cómo hacerlo. Reiniciamos para que se vean los cambios.

Este paso a continuación es para aquellos que están detrás de un proxy padre y es opcional.

Ahora comprobaremos que todo está bien.
Usaremos el comando:
docker info

Nos dará una salida similar a la siguiente:

Configuramos docker para que inicie automáticamente

Comprobamos que docker este iniciado sin problema

Instalación del Servidor Uptime Kuma

Mediante CLI

Podemos emplear una instalación mediante un cli que facilita su despliegue, ya que permite escoger si deseas con Docker o mediante git de forma local

Mediante Docker

Una vez instalado podran acceder al mismo mediante la url http://IP_DEL_SERVER:3001

Puedes si deseas puedes cambiar dicho puerto y volumen a la hora de crear el contenedor docker

Sin Docker (recomendado sólo para x86/x64)

Herramientas necesarias: Node.js >= 14, git y pm2.

(No se recomienda para usuarios de CPUs ARM. Dado que no hay un prebuilt para node-sqlite3, es difícil hacerlo funcionar)

Navega a http://IP_DEL_SERVER:3001 después de iniciarlo.

Comandos útiles

Proxy Inverso

Esto es opcional para alguien que quiera hacer proxy inverso.

A diferencia de otras aplicaciones web, Uptime Kuma se basa en WebSocket. Necesitas dos cabeceras más “Upgrade” y “Connection” para poder hacer proxy inverso de WebSocket.

En este manual usaremos nginx + certbot para asegurar un poco más nuestro uptime

Instalamos nginx

Instalando snap

Instalando Certbot via snap

Prepare the Certbot command

Una vez ya instalado el certbot Pasamos a crear el certificado

Una vez instalado el nginx y el certbot pasamos a configurar el virtualhost
nano /etc/nginx/sites-available/uptime

Una vez creado el virtualhost procedemos a habilitarlo y reiniciar el nginx

Como notaran usamos el dominio uptime.syscu.net ahi podran el dominio suyo tanto para sacar el certificado como para el virtualhost.

Al acceder por primera vez al Uptime Kuma te pedirá para crear la cuenta de acceso al mismo como notaras en la siguiente imagen.
Nota: Recomendamos no usar ninguno de los nombres comunes de admin, administrador o root.

Una vez dentro procedemos a Ajustes y procedemos a configurar varios aspectos:
Zona Horario pones la zona de tu país, en este caso America/Havana

Procedemos a agregar los sistemas por los cuales Notificara

Notificaciones

Telegram Personal

Para que el sistema notifique por telegram debes crear un bot para dicha tarea.

En nombre sencillo ponemos el nombre de nosotros seguidamente de Telegram ya que puedes crear varias Notificaciones por telegram con el mismo bot cambiando solamente el CHAT ID de otro usuario, yo usare Telegram Armando

Para crear el bot en telegram deben ir a BotFather, en dicho bot ejecutaran el comando /newbot

Ahi les preguntara el Nombre y seguidamente el username que tendrá el mismo, una vez introducido estos datos te dara el TOKEN de acceso como se los muestro en la imagen siguiente:

Una vez obtenido eso necesitaremos nuestro CHAT ID, para eso necesitamos entrar a nuestro bot y darle /start
Realizada esta opción accedemos a el link que nos aparece en Uptime Kuma para sacar ese dato deben darle click a donde dice api.telegram.org

De ese link cogemos el valor id: y lo copiamos en Uptime Kuma.

Nos deberá quedar más menos así:

Para probar que dicho bot funciona le damos al botón Test y nos debería llegar un mensaje a telegram desde el Bot

Si vez que te llego el mensaje todo esta OK

Puedes habilitar «Habilitado por defecto» para que a cualquier monitoreo que agregues tenga esta notificación activada.

Telegram Grupo

Puedes notificar un servicio a más de una persona siguiendo los mismos pasos y solo cambiando el CHAT ID
Para ello no necesitamos crear otro bot ya que puedes usar el mismo lo que debes agregar el bot a dicho grupo y ejecutar @nombredelbot /start

una vez ejecutado eso procedemos al Uptime Kuma a agregarlo en notificaciones

En nombre sencillo ponemos el nombre del grupo donde lo agregaste para que sepas yo usare Grupo SysAdminsdecuba
Accedemos al link que usamos la otra vez para sacar el ID y lo copiamos, normalmente los grupos usan un Chat ID que empieza con –

Monitores

Ya una vez creadas las alertas procedemos a crear los monitores de los sistemas interesados, como el ejemplo que les muestro a continuación, ahi seleccionamos ese recurso como quiero que nos notifique en este caso tenemos 2 opciones, a nuestro chat privado o a un grupo.

En el mismo tenemos varios tipos de Monitor

  • HTTP(s)
  • TCP Port
  • Ping
  • HTTP(s) – Palabra clave
  • DNS
  • Push
  • Steam Game Server

Ahi puedes usar el que le necesite.

Para una prueba tumbamos un momento uno de los servicios para probar que el mismo alerte cuando se cae y cuando vuelve a estar levantado

Una de las bondades del tipo de monitor HTTP(s) es que te muestra cuando vence el certificado SSL de tu web como lo notaran en la siguiente imagen, esta es una opción que puedes tener también para saber cuándo deberías renovarlo.

Histórico de un Monitor


Como notaran uptime kuma en su dashboard podrás ver los últimos eventos de los monitores que tengas con datos, de día, hora y cuál fue el error seguidamente de cuando se levantó, como les muestro en la imagen anterior.

Pagina de Status

Otra de las variantes que tiene el uptime Kuma es la facilidad de crear una página «publica» del estado de tus servicios y agruparlos por proyectos.
Nota: esta página de estatus como antes mencione es publica es decir cualquier puede verla.

Cómo Actualizar

Docker

Re-pull a la última imagen docker y crea otro contenedor con el mismo volumen.

Para alguien que uso los comandos de cómo instalar Uptime Kuma, puede actualizar por esto:

Sin Docker

Motivación

(Palabras del autor)

  • Estaba buscando una herramienta de monitorización auto-alojada como “Uptime Robot”, pero es difícil encontrar una adecuada. Una de las más cercanas es Statping. Desafortunadamente, no es estable y no tiene mantenimiento.
  • Querer construir una interfaz de usuario de lujo.
  • Aprender Vue 3 y vite.js.
  • Mostrar el poder de Bootstrap 5.
  • Intentar usar WebSocket con SPA en lugar de REST API.
  • Desplegar mi primera imagen Docker en Docker Hub.

Bueno solo me queda decir que le den una oportunidad a esta herramienta, monitoreen toda su infraestructura y no esperen que le avisen que se cae un servicio, sean ustedes los primeros en saberlo gracias a Uptime Kuma.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 16

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Site Reliability Engineer en Dofleini Software

2 comentarios

  1. Google Chrome 91.0.4472.114 Google Chrome 91.0.4472.114 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36

    como obtego el ID chat

  2. Google Chrome 96.0.4664.104 Google Chrome 96.0.4664.104 Android 9 Android 9
    Mozilla/5.0 (Linux; Android 9; LM-K410) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.104 Mobile Safari/537.36

    No me funciona el test… Nunca llega la notificación a telegram a pesar que tiene salida….la duda…sirve con un bot que uso en un canal que es privado??

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.