Despliega tu propia suite de análisis de logs con Loki, Promtail y Grafana en Docker Compose

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

¿Y ahora qué?

  1. Arranca los servicios: docker-compose up -d
  2. Accede a Grafana en
Avatar

Por Mid