Logs de Apache, NGinx y otros servicios más hermosos con Cola
Cola es una herramienta para visualizar de forma más bonita y organizada nuestros logs.


Cola es un reemplazo enriquecido de tail -f escrito en Rust. Analiza archivos de logs (como Nginx, Apache o
Syslog/SSH) en tiempo real, geolocaliza direcciones IP para mostrar banderas del país de origen en formato emoji unicode, resalta palabras clave con colores ANSI y cuenta con filtros avanzados interactivos al vuelo.
Está diseñado para ser altamente eficiente, ligero y totalmente autocontenido mediante compilaciones 100% estáticas. Entre sus características encontramos:
- Monitoreo en Tiempo Real: Sigue la escritura de uno o más archivos de log simultáneamente de forma continua y eficiente sin sobrecargar la CPU. Soporta rotaciones de logs, truncamientos y fusiona los flujos de logs aplicando etiquetas de nombres de archivos coloreadas de forma única.
- Geolocalización de IPs: Detecta IPs IPv4 y consulta su origen en milisegundos usando una base de datos MaxMind GeoIP2 local (
.mmdb), traduciendo los códigos de país en emojis de banderas. - Caché en Memoria: Implementa una caché concurrente thread-safe para evitar consultas repetitivas de IP a disco y optimizar el rendimiento.
- Auto-detección Sticky: Detecta el formato de log al vuelo (Nginx Combined, Apache Common/Combined y Syslog/SSH) y bloquea el parser para maximizar el desempeño en streams rápidos.
- Filtros Interactivos: Te permite marcar y desmarcar filtros clave en tiempo real usando teclas rápidas durante el stream de logs.
- Filtros por Consola: Soporta filtros de inclusión (
-i) y exclusión (-e) avanzados mediante expresiones regulares (Regex).
Para que el resolvedor de IPs pinte las banderas, necesitas una copia local de la base de datos MaxMind GeoLite2-Country en formato .mmdb.
He incluido un script automático para descargarla e instalarla en la ruta por defecto:
chmod +x download_geoip.sh
./download_geoip.sh
El script colocará la base de datos en ~/.cola/GeoLite2-Country.mmdb (donde Cola la buscará automáticamente al iniciar).
Tenemos varias formas de instalar y usa cola:
Opción A: Instalación Global (Requieresudo)
Puedes mover el binario a una ruta del PATH del sistema para poder invocarlo desde cualquier parte escribiendo simplemente cola:
sudo cp cola /usr/local/bin/
sudo chmod +x /usr/local/bin/cola
sudo)
Si no dispones de accesos de administrador en el servidor remoto:
mkdir -p ~/.local/bin
cp cola ~/.local/bin/
chmod +x ~/.local/bin/cola
Asegúrate de tener ~/.local/bin en tu variable $PATH dentro de tu .bashrc o .zshrc:
export PATH="$HOME/.local/bin:$PATH"
Mientras Cola está imprimiendo logs en tu terminal, puedes presionar teclas para activar/desactivar filtros instantáneamente:
| Tecla | Acción | Descripción |
|---|---|---|
1 |
Ocultar Estáticos | Oculta peticiones a imágenes, fuentes, archivos .css, .js, etc. |
2 |
Mostrar Solo Errores | Muestra solo respuestas HTTP >= 400 u operaciones fallidas de SSH. |
3 |
Ocultar Bots | Filtra accesos de rastreadores conocidos (Googlebot, Bingbot, etc.). |
4 |
Mostrar Solo SSH | Muestra de manera exclusiva las líneas originadas por sshd. |
h |
Ayuda | Imprime un menú de ayuda interactiva en la pantalla actual. |
Ctrl+C |
Salir y Estadísticas | Detiene el programa mostrando el rendimiento y hit-rate de la caché de IPs. |
cola /var/log/nginx/access.log
Puedes pasar varios archivos posicionales. Sus líneas se combinarán en tiempo real y cada una se mostrará con un prefijo del nombre de archivo coloreado dinámicamente para distinguirlos fácilmente:
cola /var/log/nginx/access.log /var/log/nginx/error.log
Por defecto lee las últimas 10 líneas existentes antes de empezar a monitorizar:
cola /var/log/nginx/access.log -n 30
Opciones: auto (por defecto), nginx, apache, syslog.
cola /var/log/auth.log -f syslog
cola /var/log/nginx/access.log --no-geo
- Inclusión (Mostrar solo IPs o mensajes coincidentes):
cola /var/log/nginx/access.log -i "POST" - Exclusión (Ocultar líneas coincidentes):
cola /var/log/nginx/access.log -e "127.0.0.1" - Combinado:
cola /var/log/nginx/access.log -i "/api/" -e "Googlebot"
Comentarios desde Mastodon
Para comentar, responde a este post en Mastodon.