Herramientas de usuario

Herramientas del sitio


grafana_prometheus

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
grafana_prometheus [2025/10/10 23:27] romixgrafana_prometheus [2025/10/11 18:15] (actual) – [Acceso y creación de dashboards] romix
Línea 12: Línea 12:
  
 <code yaml> <code yaml>
 +# Creamos los volumenes para guardar datos persistentes y que no se pierdan al eliminar la máquina.
 +volumes:
 +  prometheus-data: {} # Guarda metricas
 +  grafana-data: {}
 +# Conectamos los contenedores en la misma red
 +networks:
 +  net_backend:
 +    external: true
 +
 +# Declaramos los sevicios
 +services:
 +############################## GRAFANA ##############################
 +  grafana:
 +    image: grafana/grafana:12.1.1 # Utilizo la version 12.1.1
 +    container_name: grafana # Nombro al contenedor
 +    restart: unless-stopped
 +    volumes:
 +      - ./config/grafana/datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml:ro # Para que linkee automaticamente el prometheus a grafana
 +      - grafana-data:/var/lib/grafana
 +    ports:
 +      - '3000:3000' # Grafana utiliza el puerto 3000
 +    env_file:
 +      - path: ./config/grafana.env # Archivo que contiene las variables de entorno
 +    depends_on: # Va a levantar cuando levante prometheus
 +      - prometheus
 +    networks:
 +      - net_backend
 +
 +############################## PROMETHEUS ##############################
 +  prometheus:
 +    image: prom/prometheus:latest
 +    container_name: prometheus # Nombro al contenedor
 +    restart: unless-stopped # Si se reinicie, salvo cuando lo detengo
 +    volumes:
 +    - ./config/prometheus.yaml:/etc/prometheus/prometheus.yml:ro # Pone el archivo prometheus.yaml en esa ruta para que tenga esa configuración
 +    - prometheus-data:/prometheus # Asigno espacio al volumen dentro de docker
 +    command:
 +      - '--config.file=/etc/prometheus/prometheus.yml' # Utilizo esta configuracion
 +      - '--storage.tsdb.path=/prometheus' # Persistir los datos en donde prometheus crea su DB
 +      - '--storage.tsdb.retention.time=1y' # Guardo la info por 1 año
 +    depends_on: # Va a levantar cuando levante node-exporter
 +      - node-exporter
 +    networks:
 +      - net_backend
 +    ports:
 +      - "9090:9090"
 +
 +
 +############################## NODE - EXPORTER ##############################
 +  node-exporter: # No depende de nadie asi que levanta primero
 +    image: prom/node-exporter:latest
 +    container_name: node-exporter
 +    restart: unless-stopped
 +    user: "0"
 +    volumes:
 +      - /proc:/host/proc:ro
 +      - /sys:/host/sys:ro
 +      - /:/rootfs:ro
 +    command:
 +      - '--path.procfs=/host/proc'
 +      - '--path.rootfs=/rootfs'
 +      - '--path.sysfs=/host/sys'
 +      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
 +    networks:
 +      - net_backend
 +
 +############################## CADVISOR ##############################
 +  cadvisor:
 +    image: gcr.io/cadvisor/cadvisor:latest
 +    container_name: cadvisor
 +    ports:
 +      - "8080:8080"
 +    volumes:
 +      - /:/rootfs:ro
 +      - /var/run:/var/run:ro
 +      - /sys:/sys:ro
 +      - /var/lib/docker/:/var/lib/docker:ro
 +    networks:
 +      - net_backend
  
 </code> </code>
Línea 22: Línea 101:
  
 <code bash> <code bash>
 +GF_SECURITY_ADMIN_USER = <USER>
 +GF_SECURITY_ADMIN_PASSWORD = <PASSWORD>
 +GF_SERVER_DOMAIN = grafana.TUDOMINIO.com.ar
  
 </code> </code>
  
 Estas variables permiten establecer las credenciales iniciales de acceso a Grafana.   Estas variables permiten establecer las credenciales iniciales de acceso a Grafana.  
-Es recomendable modificarlas por valores seguros antes de desplegar el entorno en producción. 
  
 ---- ----
Línea 32: Línea 113:
 ===== Datasources ===== ===== Datasources =====
  
-Como vemos, los *datasources* se vinculan con el archivo **datasources.yml**, que contiene la configuración de Prometheus:+Como vemos, los **datasources** se vinculan con el archivo **datasources.yml**, que contiene la configuración de Prometheus:
  
 <code yaml> <code yaml>
Línea 54: Línea 135:
  
 <code yaml> <code yaml>
 +global:
 +  scrape_interval: 15s
 +
 +scrape_configs:
 +  - job_name: "prometheus"
 +    scrape_interval: 1m
 +    static_configs:
 +      - targets: ["localhost:9090"]
 +
 +  - job_name: "node"
 +    static_configs:
 +      - targets: ["node-exporter:9100"]
 +
 +  - job_name: "cadvisor"
 +    static_configs:
 +      - targets: ["cadvisor:8080"]
 +
 +  - job_name: "nextcloud"
 +    static_configs:
 +      - targets: ["nextcloud-exporter:9205"]
 +
 +  - job_name: "homeassistant"
 +    metrics_path: '/api/prometheus'
 +    scheme: 'http'
 +    bearer_token: "TOKEN" # Credenciales de un usuario exclusivo para monitoreo
 +    static_configs:
 +      - targets: ["<IP_PRIVADA>:8123"]
 +
 +  - job_name: "postgres"
 +    static_configs:
 +      - targets: ["postgres_exporter:9187"]
 +
 +
 +
  
 </code> </code>
Línea 61: Línea 176:
 ===== Targets configurados ===== ===== Targets configurados =====
  
-Los siguientes son los *targets* monitoreados por Prometheus:+Los siguientes son los **targets** monitoreados por Prometheus:
  
   * **Prometheus:** se scrapea a sí mismo para monitorear su propio estado y rendimiento, asegurando visibilidad completa del sistema de monitoreo.     * **Prometheus:** se scrapea a sí mismo para monitorear su propio estado y rendimiento, asegurando visibilidad completa del sistema de monitoreo.  
   * **Node-exporter:** recopila métricas del host donde se ejecutan los contenedores (CPU, memoria, disco, red).     * **Node-exporter:** recopila métricas del host donde se ejecutan los contenedores (CPU, memoria, disco, red).  
   * **cAdvisor:** monitoriza los contenedores Docker del host, proporcionando información de consumo y estado.     * **cAdvisor:** monitoriza los contenedores Docker del host, proporcionando información de consumo y estado.  
-  * **Nextcloud:** a través del *nextcloud-exporter*, expone métricas específicas como usuarios activos y uso de almacenamiento.   +  * **Nextcloud:** a través del **nextcloud-exporter**, expone métricas específicas como usuarios activos y uso de almacenamiento.   
-  * **Home Assistant:** se ejecuta en *network_mode: host* y expone métricas en `/api/prometheus`, las cuales se recolectan mediante token de acceso.   +  * **Home Assistant:** se ejecuta en **network_mode: host** y expone métricas en ///api/prometheus//, las cuales se recolectan mediante token de acceso.   
-  * **Postgres:** mediante *postgres-exporter*, expone métricas de base de datos como conexiones, consultas activas y tamaño de tablas.+  * **Postgres:** mediante **postgres-exporter**, expone métricas de base de datos como conexiones, consultas activas y tamaño de tablas. 
 + 
 +---- 
 + 
 +===== Acceso y configuración ===== 
 + 
 +Una vez levantado el servicio, accedemos mediante la URL: 
 + 
 +<code>http://<IP_SERVIDOR>:3000</code> 
 + 
 +Cuando configuramos el acceso mediante **Nginx Proxy Manager**:   
 +  * Este actúa como **proxy inverso**, recibiendo solicitudes externas y redirigiéndolas al contenedor correcto (grafana).   
 +  * Generamos el certificado **SSL** mediante Let’s Encrypt, asegurando que el dominio //grafana.TUDOMINIO.com.ar// sea accesible por HTTPS.   
 +  * NPM redirige el tráfico externo hacia el host y puerto de **Grafana** (3000) sin necesidad de exponer directamente los puertos al exterior.   
 + 
 +De esta forma, podés acceder a **Grafana** desde cualquier lugar usando:   
 +<code>https://grafana.TUDOMINIO.com.ar</code>   
 +con una conexión segura y gestionada por el proxy. 
  
 +Una vez que ingresamos al portal, nos logueamos con nuestras credenciales de administrador previamente definidas en el archivo **grafana.env**.  
 +Al iniciar sesión, estaremos listos para comenzar a crear y configurar nuestros **dashboards**, explorando las métricas y visualizaciones disponibles.
  
grafana_prometheus.1760138847.txt.gz · Última modificación: por romix