Cette stack déploie un système complet de monitoring et de visualisation des métriques/logs sur un cluster Kubernetes, en intégrant la collecte, l’alerte, l’affichage graphique et l’authentification SSO. Il utilise Prometheus, Grafana, Loki et PostgreSQL, tous orchestrés via Helm et Terraform, avec du stockage persistant via Longhorn et une intégration OAuth2 (Keycloak).

Détail du fonctionnement

  • Prometheus
    • Récupère les métriques de tous les composants Kubernetes (API server, kubelet, etcd, etc.) et des VM avec Node Exporter
    • Applique des règles d’alerte configurées
    • Stocke temporairement les métriques sur un volume provisionné via Longhorn
  • Grafana
    • Sert d’interface graphique pour visualiser les métriques Prometheus
    • Se connecte à PostgreSQL comme base de données
    • Authentification OAuth2 via Keycloak (SSO)
    • Peut intégrer des dashboards et datasources automatiquement
  • Loki
    • Stocke et expose les logs applicatifs (même s’ici Promtail est désactivé)
    • Peut recevoir des logs via d’autres outils comme Logstash ou Filebeat (non activés ici)
  • PostgreSQL
    • Utilisé comme base de données pour Grafana (au lieu de SQLite par défaut)
    • Déployé en mode réplication avec stockage Longhorn
  • Node Exporter, Kube State Metrics, etc.
    • Fournissent les métriques sur les nœuds, les VM, les ressources Kubernetes, et l’état des objets
    • Node Exporter requiert une configuration specifique via l’ajout d’un enregistrement SRV dans les DNS pour specifier les VM avec Node Exporter pour permettre l’autodiscovery sur Prometheus
  • Terraform + Helm
    • Terraform pilote le déploiement des charts Helm
    • Les fichiers .tpl contiennent les valeurs Helm pour chaque composant
    • Permet de versionner et reproduire facilement le déploiement

Schema

schema monitoring

Le code

Terraform