Skip to content

vhgalvez/ansible-monitoring-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ansible-monitoring-stack

Automatización del despliegue de Prometheus y Grafana en un clúster Kubernetes (K3s) utilizando Ansible, Helm y almacenamiento persistente con Longhorn.

Este proyecto forma parte del stack FlatcarMicroCloud, ofreciendo una solución automatizada para monitorear nodos y servicios con Prometheus y Grafana. Además, permite la instalación de Node Exporter para la recolección de métricas de los nodos, todo gestionado con Ansible.

⚙️ Requisitos

Antes de comenzar, asegúrate de tener lo siguiente instalado y configurado:

  • Acceso por SSH a nodos masters.
  • Acceso a kubectl y helm en el nodo desde el que ejecutarás los playbooks.
  • Kubernetes en funcionamiento (K3s o estándar).
  • PVCs con storageClassName: longhorn para persistencia de datos.
  • Colecciones necesarias de Ansible:
ansible-galaxy collection install community.kubernetes kubernetes.core

🎯 Ejecución

1. Instalar el stack completo

Este playbook instalará Prometheus y Grafana en Kubernetes, configurará PVCs para persistencia de datos y utilizará Helm para gestionar los charts de ambas herramientas:

source .env
sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.yml

2. Actualizar los targets de scrape de Prometheus

Si necesitas añadir o actualizar los nodos a los que Prometheus realizará scrape de métricas, ejecuta:

sudo ansible-playbook -i inventory/hosts.ini playbook/update_scrape_targets.yml

3. Eliminar el stack de monitoreo

Para eliminar todo el stack, incluyendo Prometheus y Grafana:

sudo ansible-playbook -i inventory/hosts.ini uninstall_stack.yml

🔧 Playbooks incluidos

Playbook principal

Para desplegar el stack de monitoreo, utiliza el siguiente comando:

source .env
sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.yml

Este playbook realiza las siguientes tareas:

  • Crea el namespace monitoring (si no existe).
  • Despliega PVCs para Prometheus y Grafana.
  • Instala los charts de Helm para grafana/grafana y prometheus-community/prometheus.
  • Configura almacenamiento persistente con Longhorn.

Otros Playbooks útiles

  • Actualizar los targets de scrape de Prometheus:
sudo -E ansible-playbook -i inventory/hosts.ini playbook/03_update_scrape_targets.yml
  • Eliminar todo el stack:
sudo -E ansible-playbook -i inventory/hosts.ini uninstall_stack.yml

✨ Configuración de Grafana y Prometheus

  1. Configurar Prometheus como fuente de datos en Grafana:

    • Ingresa a Grafana en http://localhost:3000.
    • Usa las credenciales por defecto (admin/admin).
    • Añade Prometheus como fuente de datos en Grafana:
      • URL de Prometheus: http://localhost:9090.
  2. Cargar un Dashboard popular:

    Grafana tiene varios dashboards preconfigurados para monitorear Node Exporter, Kubernetes y más. Puedes importarlos usando los IDs de dashboard:

    • Node Exporter Full: 1860
    • K8s Cluster Monitoring: 315
    • Prometheus Stats: 2

🖼 Imágenes de referencia

Monitoreo 1 Monitoreo 2 Monitoreo 3 Grafana 1 Grafana 2 Prometheus


📦 Notas adicionales

  • Grafana quedará accesible internamente en el namespace monitoring con el password definido en group_vars/all.yml.
  • Los PVCs se almacenan usando Longhorn en modo ReadWriteOnce.
  • Para exponer Grafana o Prometheus mediante Traefik o NodePort, revisa los servicios correspondientes en Kubernetes.

sudo ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.yml

✨ Créditos

Este proyecto fue creado como parte del stack FlatcarMicroCloud y tiene como objetivo simplificar la gestión de monitoreo en Kubernetes usando herramientas de código abierto y automatización con Ansible.

Autor: @vhgalvez

source .env

sudo chmod 600 .env

🛠️ Variables de entorno para la interfaz de usuario de Prometheus y Grafana

source .env
sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.yml

echo $GRAFANA_AUTH_USER_UI echo $GRAFANA_AUTH_PASS_UI

echo $PROMETHEUS_AUTH_USER echo $PROMETHEUS_AUTH_PASS echo $GRAFANA_AUTH_USER echo $GRAFANA_AUTH_PASS

export GRAFANA_AUTH_USER_UI="grafana_ui_user" export GRAFANA_AUTH_PASS_UI="12345678" export PROMETHEUS_AUTH_USER="prometheus_admin" export PROMETHEUS_AUTH_PASS="12345678" export GRAFANA_AUTH_USER="grafana_admin" export GRAFANA_AUTH_PASS="12345678"

.env GRAFANA_AUTH_USER=grafana_admin GRAFANA_AUTH_PASS=12345678 PROMETHEUS_AUTH_USER=prometheus_admin PROMETHEUS_AUTH_PASS=12345678 GRAFANA_AUTH_USER_UI=grafana_ui_user GRAFANA_AUTH_PASS_UI=12345678

source .env sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.yml

About

ansible-monitoring-stack

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages