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