Monitorea tu servidor fácilmente con Ward
Recién surfeaba la internet buscando alguna solución simple y sencilla para monitorear un servidor para lugonials.social, la instancia comunitaria de Mastodon que manejo para mi comunidad de creativos y tecnólogos.
Conozco y uso varias soluciones en servidores más potentes, pero el droplet de DigitalOcean que adquirimos para la comunidad tiene pocas prestaciones. Así que viendo este artículo encontré a Ward, me gustó para lo que necesitamos (que es tener las métricas del servidor públicamente), así que me dispuse a instalarlo.
Instalando Ward
Según el repositorio original, el proyecto está escrito en Java, así que con la JVM (Java Virtual Machine) se puede ejecutar perfectamente, pero también da la opción de correrlo sobre Docker, que es la que yo prefiero.
Así que lo primero que hacemos es instalar Docker:
1. Instalar Docker
Puedes ejecutar esta línea directamente en tu terminal, que por debajo lo que ejecuta es un gist mío (sencillo script) que instala Docker, en una sola línea.
sh -c "$(curl -fsSL https://gist.githubusercontent.com/lugodev/168d1260e471b1747aa80ba30e0c2e12/raw/bfdda825f1e43663952eab5a7c180a3555bcf80a/install-docker.sh)"
O puedes ejecutar una a una cada línea del gist a continuación. Al final es lo mismo, tú eliges.
2. Clonar el repositorio de Ward
En mi caso muy particular, tuve que hacer un fork (copia) del repositorio porque en su Dockerfile
el puerto que utilizan para la aplicación es el 4000 y colisiona con uno de los procesos de Mastodon en el servidor.
Así que puedes utilizar cualquiera de los dos repositorios:
- Ward oficial: https://github.com/B-Software/Ward
- Ward de @lugodev: https://github.com/lugodev/ward
En este ejemplo, usamos el mío:
git clone https://github.com/lugodev/ward.git
3. Compilar la imagen de Docker de Ward
Ya tenemos el repositorio clonado, así que ahora compilamos la imagen del servicio.
docker build --tag ward ward
4. Levantar el servicio de Ward
Con este comando levantamos el servicio en modo detached (en 2do plano).
docker run -d --rm -it --name ward -p 5000:5000 --privileged ward
Si muestras los logs del contenedor donde se ejecuta el servicio, verás algo como esto.
5. Permitir el puerto de la aplicación en el firewall
Sea cual sea el firewall que estés utilizando en tu servidor, no olvides autorizar el puerto que elijas para exponer el servicio de cara a internet. En mi caso uso ufw.
ufw allow 5000 ufw reload
6. Entrar al navegador
Ahora dirígete a tudominio.com:5000 en el navegador, coloca un nombre para el server y el mismo puerto (5000), y toca en el botón "Launch". Se reiniciará la aplicación y en unos segundos, podrás refrescar la pestaña para ver las métricas.
Eso es todo, puedes revisar en lugonials.social:5000 para ver el estado de nuestra instancia de Mastodon.