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