Aller au contenu principal

Chapitre 11.1 - Monitoring Kubernetes

Objectifs d'Apprentissage​

À la fin de ce chapitre, vous serez capable de:

  • Comprendre l'importance du monitoring dans Kubernetes
  • Installer Prometheus pour la collecte de métriques
  • Configurer Grafana pour la visualisation
  • Comprendre les métriques Kubernetes essentielles
  • Configurer ServiceMonitors
  • Créer des dashboards personnalisés

Introduction​

Le monitoring est essentiel pour comprendre l'état de santé et les performances d'un cluster Kubernetes et de ses applications.


Outils de Monitoring​

Prometheus​

Système de monitoring et d'alerte open-source qui collecte et stocke des métriques sous forme de séries temporelles.

Caractéristiques:

  • Collecte de métriques via pull
  • Stockage efficace
  • Langage de requête PromQL
  • Intégration native avec Kubernetes

Grafana​

Plateforme de visualisation qui permet de créer des dashboards interactifs à partir des métriques Prometheus.

Caractéristiques:

  • Dashboards personnalisables
  • Alertes visuelles
  • Support de multiples sources de données
  • Partage et collaboration

Installation de Prometheus​

Via Helm​

# Ajouter le repository
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# Installer Prometheus
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace

Vérification​

# Voir les Pods
kubectl get pods -n monitoring

# Voir les Services
kubectl get svc -n monitoring

# Accéder à Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

Métriques Importantes​

Métriques de Cluster​

  • CPU: Utilisation CPU des nodes et Pods
  • Mémoire: Utilisation mémoire des nodes et Pods
  • Réseau: Trafic réseau entrant/sortant
  • Stockage: Utilisation du stockage

Métriques d'Application​

  • Requêtes HTTP: Taux de requêtes, latence, erreurs
  • Connexions DB: Pool de connexions, temps de réponse
  • Queue: Taille des queues, temps de traitement

Métriques Kubernetes​

  • Pods: État, redémarrages, ready/unready
  • Deployments: Replicas désirés vs actuels
  • Services: Endpoints disponibles

ServiceMonitors​

Les ServiceMonitors permettent à Prometheus de découvrir et scraper les métriques des services.

Exemple: ServiceMonitor​

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-metrics
namespace: default
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics
interval: 30s
path: /metrics

Service avec Métriques​

apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
selector:
app: my-app
ports:
- name: http
port: 8080
- name: metrics
port: 9090

Installation de Grafana​

Via Helm (Inclus avec kube-prometheus-stack)​

Grafana est inclus dans kube-prometheus-stack.

Accès​

# Port-forward
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# Credentials par défaut
# Username: admin
# Password: prom-operator

Dashboards Prédéfinis​

  • Kubernetes Cluster Monitoring
  • Node Exporter
  • Pod Monitoring
  • Etc.

Création de Dashboards​

Dashboard Basique​

{
"dashboard": {
"title": "My App Dashboard",
"panels": [
{
"title": "Request Rate",
"targets": [
{
"expr": "rate(http_requests_total[5m])",
"legendFormat": "{{method}}"
}
]
},
{
"title": "Error Rate",
"targets": [
{
"expr": "rate(http_requests_total{status=~\"5..\"}[5m])"
}
]
}
]
}
}

PromQL (Prometheus Query Language)​

Requêtes de Base​

# Taux de requêtes
rate(http_requests_total[5m])

# Somme par label
sum(rate(http_requests_total[5m])) by (method)

# Pourcentage d'erreurs
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100

# Utilisation CPU
100 - (avg(rate(container_cpu_usage_seconds_total[5m])) * 100)

Commandes Utiles​

Prometheus​

# Accéder à Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090

# Voir les targets
# Dans l'interface Prometheus: Status > Targets

Grafana​

# Accéder à Grafana
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

# Importer un dashboard
# Dans Grafana: + > Import > ID du dashboard

Bonnes Pratiques​

1. Métriques Essentielles​

Monitorer les métriques critiques: CPU, mémoire, latence, erreurs.

2. Retention​

Configurer une rétention appropriée pour les métriques.

3. Dashboards​

Créer des dashboards par application/service.

4. Alertes​

Configurer des alertes pour les métriques critiques.

5. Performance​

Éviter de scraper trop fréquemment pour ne pas surcharger.


Résumé​

Dans ce chapitre, vous avez appris:

Monitoring: Essentiel pour la santé du cluster
Prometheus: Collecte et stockage de métriques
Grafana: Visualisation avec dashboards
Métriques: Cluster, application, Kubernetes
ServiceMonitors: Découverte automatique des métriques
PromQL: Langage de requête pour les métriques
Dashboards: Visualisation personnalisable
Bonnes pratiques: Métriques essentielles, retention, alertes


Prochaines Étapes​

Chapitre 11.2: Logs
Chapitre 11.3: Alerting
Lab 11.1: Installation de Prometheus et Grafana


Chapitre créé le: Décembre 2024