Skip to content

Jeyzen/Monitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stack de Monitorización Base (Prometheus, Grafana, Loki)

Este proyecto proporciona un stack de monitorización robusto y listo para usar, ideal para observar el estado y los logs de un sistema anfitrión (localhost). Utiliza una combinación de herramientas líderes en la industria, orquestadas a través de Docker Compose para un despliegue rápido y sencillo.

Es una base perfecta para expandir y personalizar según tus necesidades, ya sea para monitorizar aplicaciones, servicios adicionales o una infraestructura más compleja.

✨ Características

  • Métricas del Sistema: Monitorización en tiempo real de CPU, memoria, disco, red y más, gracias a Prometheus y Node Exporter.
  • Agregación de Logs: Centralización y visualización de logs del sistema con Loki y Promtail.
  • Visualización Unificada: Dashboards interactivos y personalizables en Grafana para visualizar tanto métricas como logs en un solo lugar.
  • Despliegue Sencillo: Todo el stack se levanta con un solo comando gracias a Docker Compose.
  • Persistencia de Datos: Los datos de Grafana, Prometheus y Loki se guardan en volúmenes de Docker, sobreviviendo a reinicios.
  • Configuración Moderna: Utiliza las últimas versiones y configuraciones recomendadas, como el índice tsdb en Loki para un rendimiento mejorado.

🚀 Tecnologías Utilizadas

Servicio Propósito Puerto
Grafana Visualización de métricas y logs. 3000
Prometheus Recolección y almacenamiento de métricas. 9090
Node Exporter Exposición de métricas del sistema anfitrión. 9100
Loki Agregación y almacenamiento de logs. 3100
Promtail Agente que recolecta y envía logs a Loki. 9080

📂 Estructura del Proyecto

.
├── docker-compose.yml      # Orquesta el despliegue de todos los servicios.
├── loki/
│   └── loki-config.yml     # Configuración de Loki (almacenamiento, etc.).
├── prometheus/
│   └── prometheus.yml      # Configuración de Prometheus (targets a scrapear).
└── promtail/
    └── promtail-config.yml # Configuración de Promtail (de dónde leer logs).

🛠️ Cómo Empezar

Prerrequisitos

1. Clonar o Descargar el Proyecto

Obtén los archivos de este repositorio en tu máquina local.

2. Iniciar el Stack

Abre una terminal en la raíz del proyecto y ejecuta:

docker-compose up -d

Este comando descargará las imágenes necesarias y levantará todos los contenedores en segundo plano (-d).

3. Acceder a los Servicios

  • Grafana: Abre tu navegador y ve a http://localhost:3000

    • Usuario: admin
    • Contraseña: admin (te pedirá cambiarla al primer inicio de sesión).
  • Prometheus: http://localhost:9090

  • Loki: (Normalmente no se accede directamente, pero su API está en http://localhost:3100)

4. Configurar Grafana

Al acceder a Grafana por primera vez, necesitarás añadir las fuentes de datos (Data Sources):

  1. Añadir Prometheus:

    • Ve a Configuration > Data Sources > Add data source.
    • Selecciona Prometheus.
    • En el campo URL, introduce: http://prometheus:9090.
    • Haz clic en Save & Test.
  2. Añadir Loki:

    • Ve a Configuration > Data Sources > Add data source.
    • Selecciona Loki.
    • En el campo URL, introduce: http://loki:3100.
    • Haz clic en Save & Test.

¡Listo! Ahora puedes empezar a crear dashboards o importar algunos pre-hechos desde la comunidad de Grafana. Un buen punto de partida es el dashboard de Node Exporter (ID: 1860).

🔧 Personalización

Este stack está diseñado para ser un punto de partida. Aquí tienes algunas ideas para personalizarlo:

Monitorizar un Nuevo Contenedor

Para monitorizar las métricas de un nuevo servicio (por ejemplo, una base de datos o una API que exponga métricas en formato Prometheus):

  1. Asegúrate de que el nuevo contenedor esté en la misma red de Docker que Prometheus.

  2. Añade un nuevo job en prometheus/prometheus.yml:

    # prometheus/prometheus.yml
    
    - job_name: 'mi-nueva-app'
      static_configs:
        - targets: ['nombre-del-servicio:puerto'] # Ej: 'mi-api:8080'
  3. Reinicia Prometheus para que tome la nueva configuración:

    docker-compose restart prometheus

Recolectar Logs de Otras Ubicaciones

Para que Promtail recolecte logs de otros archivos o directorios:

  1. Monta el directorio en docker-compose.yml: Añade un nuevo volumen al servicio promtail para darle acceso a los logs.

    # docker-compose.yml
    
    services:
      promtail:
        volumes:
          - ./promtail/promtail-config.yml:/etc/promtail/config.yml
          - /var/log:/var/log
          - /ruta/a/tus/logs:/ruta/en/contenedor # <-- Nueva línea
  2. Añade un nuevo job en promtail/promtail-config.yml: Define de qué archivos leer y qué etiquetas (labels) aplicar a esos logs.

    # promtail/promtail-config.yml
    
    scrape_configs:
    - job_name: system
      # ... (configuración existente) ...
    
    - job_name: mi-app
      static_configs:
      - targets:
          - localhost
        labels:
          job: mi-app-logs
          __path__: /ruta/en/contenedor/*log # Lee todos los .log en la ruta montada
  3. Reinicia Promtail:

    docker-compose restart promtail

⚙️ Detalles de la Configuración

  • prometheus.yml: Define los scrape_configs, que le dicen a Prometheus dónde encontrar los exportadores de métricas. Por defecto, se monitoriza a sí mismo y al node-exporter.
  • loki-config.yml: Configura Loki para usar el almacenamiento local (filesystem) y el índice tsdb, que es eficiente para series temporales.
  • promtail-config.yml: Le dice a Promtail a qué instancia de Loki enviar los logs (clients) y qué archivos del sistema de ficheros observar (scrape_configs). Por defecto, captura todos los archivos que terminan en .log dentro de /var/log.

🗑️ Detener y Limpiar

  • Para detener los contenedores sin eliminar los datos:

    docker-compose down
  • Para detener y eliminar los volúmenes de datos (¡cuidado, esta acción es irreversible!):

    docker-compose down -v

About

Base simple de stack de Monitorización.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published