Despliega tu propia suite de análisis de logs con Loki, Promtail y Grafana usando Docker Compose
¿Te gustaría monitorizar y visualizar logs de tus aplicaciones de manera profesional y completamente independiente? Hoy te traigo un proyecto totalmente diferente y muy útil para cualquier administración de servidores: una solución de logging centralizado con Loki, Promtail y Grafana. Todo ello fácilmente desplegable en tu VPS gracias a Docker Compose.
Loki es el motor de almacenamiento y consulta de logs diseñado para integrarse con Grafana. Promtail se encarga de recolectar los logs de tus contenedores o del sistema, y Grafana te da esa capa visual para dashboarding que tanto mola.
¿Por qué apostar por esta solución?
- Centralizar y consultar logs de todos tus servicios Docker desde una interfaz web potente.
- Evitar depender de servicios externos o de soluciones propietarias.
- Escalabilidad: añade más clientes en segundos.
- Perfecto tanto para devs como para sysadmins.
Fichero docker-compose.yml
completo
Copia este archivo docker-compose.yml
en una carpeta nueva de tu servidor y ajústalo si quieres afinar rutas o puertos:
version: "3.8"
services:
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- ./loki-data:/loki
restart: unless-stopped
promtail:
image: grafana/promtail:latest
container_name: promtail
volumes:
- ./promtail-config.yaml:/etc/promtail/config.yaml
- /var/log:/var/log:ro
command: -config.file=/etc/promtail/config.yaml
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- ./grafana-data:/var/lib/grafana
environment:
GF_SECURITY_ADMIN_PASSWORD: "admin"
restart: unless-stopped
Además, necesitas crear un archivo de configuración para Promtail llamado promtail-config.yaml
en el mismo directorio:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log