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.
Antes de comenzar, asegúrate de tener lo siguiente instalado y configurado:
- Acceso por SSH a nodos masters.
- Acceso a
kubectlyhelmen el nodo desde el que ejecutarás los playbooks. - Kubernetes en funcionamiento (K3s o estándar).
- PVCs con
storageClassName: longhornpara persistencia de datos. - Colecciones necesarias de Ansible:
ansible-galaxy collection install community.kubernetes kubernetes.coreEste 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.ymlSi 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.ymlPara eliminar todo el stack, incluyendo Prometheus y Grafana:
sudo ansible-playbook -i inventory/hosts.ini uninstall_stack.ymlPara desplegar el stack de monitoreo, utiliza el siguiente comando:
source .env
sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.ymlEste 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/grafanayprometheus-community/prometheus. - Configura almacenamiento persistente con Longhorn.
- 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-
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.
- URL de Prometheus:
-
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
- Node Exporter Full:
- Grafana quedará accesible internamente en el namespace
monitoringcon el password definido engroup_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.ymlEste 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
source .env
sudo -E ansible-playbook -i inventory/hosts.ini playbook/deploy_monitoring_stack.ymlecho $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