Skip to content

minabl/Prometheus-Grafana

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

Rapport sur le TP : Monitoring du Cluster Kubernetes avec Prometheus et Grafana

Objectifs du TP

Le but de ce TP est de mettre en place un système de surveillance d'un cluster Kubernetes en utilisant Prometheus et Grafana. Les objectifs principaux étaient :

  • Installer Prometheus et Grafana pour le monitoring d'un cluster Kubernetes.
  • Déployer une application d'exemple et la connecter à Prometheus.
  • Observer les stratégies de déploiement et de mise à jour d'applications dans Kubernetes.
  • Visualiser les métriques collectées à l'aide de Grafana.

Étapes Réalisées

  1. Préparation de l’Environnement Avant de commencer l'installation de Prometheus et Grafana, j'ai vérifié que le cluster Kubernetes était opérationnel en exécutant les commandes suivantes :
  kubectl cluster-info
  kubectl get nodes

Cela a confirmé que mon cluster Minikube était fonctionnel. J'ai également vérifié que Helm était installé avec :

helm version
  1. Installation de Prometheus avec Helm Ensuite, j'ai créé un namespace dédié pour Prometheus et Grafana :
  	kubectl create namespace monitoring

J'ai ajouté les dépôts Helm nécessaires pour Prometheus et kube-state-metrics :

  helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics
  helm repo update

J'ai ensuite installé Prometheus dans le namespace monitoring :

helm install --namespace=monitoring --version=26.0.0 --set=service.type=NodePort prometheus prometheus-community/prometheus

Cela a installé Prometheus avec les paramètres définis pour l'accès via NodePort. J'ai vérifié que les pods étaient bien lancés avec :

kubectl get pods -n monitoring
  1. Exploration de kube-state-metrics Le chart Helm a automatiquement installé kube-state-metrics, une intégration entre Kubernetes et Prometheus. J'ai utilisé Lens, un outil graphique pour Kubernetes, afin d'explorer les métriques collectées, notamment les informations sur les pods, les ressources CPU, mémoire, etc. image image

  2. Déploiement de l'Application Exemple J'ai cloné le dépôt contenant l'application d'exemple goprom :

git clone https://gitlab.com/devops_tps/k8s-deployment-strategies.git
cd 'k8s-deployment-strategies/k8s_stategies/1recreate'

J'ai ensuite appliqué le fichier app-v1.yaml pour déployer l'application :

kubectl apply -f app-v1.yaml

Cela a déployé l'application et les services associés.

  1. Observation de l'Application et de son Déploiement

J'ai exploré le code de l'application, notamment main.go et le fichier app-v1.yaml. L'application expose plusieurs ports :

Port 8080 : pour l'interface principale. Port 8086 : pour les probes de liveness et readiness. Port 9101 : pour exposer les métriques à Prometheus. J'ai exposé les services et vérifié que les métriques étaient accessibles :

minikube service goprom
minikube service goprom-metrics
  1. Configuration de Prometheus pour Collecter les Métriques

J'ai modifié le service Prometheus en le passant de ClusterIP à NodePort pour pouvoir y accéder via un port externe :

kubectl edit service prometheus-server -n monitoring
minikube service prometheus-server -n monitoring

Ensuite, j'ai vérifié que Prometheus récupérait bien les métriques de l'application avec la requête PromQL suivante :

sum(rate(http_requests_total{app="goprom"}[5m])) by (version)

  1. Installation et Configuration de Grafana

J'ai créé un secret pour les identifiants de connexion de Grafana :

cat <<EOF | kubectl apply -n monitoring -f - apiVersion: v1 kind: Secret metadata: namespace: monitoring name: grafana-auth type: Opaque data: admin-user: $(echo -n "admin" | base64 -w 0) admin-password: $(echo -n "admin" | base64 -w 0) EOF

J'ai ajouté le dépôt Grafana et installé Grafana :

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install --namespace=monitoring --version=8.6.4 --set=admin.existingSecret=grafana-auth --set=service.type=NodePort --set=service.nodePort=32001 grafana grafana/grafana

J'ai exposé le service Grafana et me suis connecté à l'interface en utilisant les identifiants admin/admin. image

  1. Création d’un Dashboard Grafana

J'ai créé un tableau de bord Grafana avec un panneau de type Graph pour visualiser les métriques collectées :

sum(rate(http_requests_total{app="goprom"}[5m])) by (version)

J'ai configuré la légende pour afficher la version de l'application.

image

  1. Importation d’un Dashboard Kubernetes Complet

J'ai téléchargé et importé un dashboard Kubernetes complet (ID 18283) depuis Grafana Dashboards pour avoir une vue d'ensemble détaillée du cluster. J'ai vérifié que les cibles nécessaires étaient bien présentes dans Prometheus.

  1. Observation des Stratégies de Déploiement

J'ai testé plusieurs stratégies de déploiement en modifiant le fichier app-v2.yaml pour appliquer une mise à jour de l'application :

kubectl apply -f app-v2.yaml
kubectl rollout status deployment/goprom

J'ai observé les changements en temps réel dans Grafana avec la même requête PromQL.

  1. Nettoyage des Ressources Après avoir terminé le TP, j'ai nettoyé les ressources créées pour ne pas encombrer le cluster :
kubectl delete -f app-v1.yaml
kubectl delete -f app-v2.yaml
helm uninstall prometheus -n monitoring
helm uninstall grafana -n monitoring
kubectl delete namespace monitoring

Images du Projet

image image image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published