1. Superviser Kubernetes : ce qu'il faut collecter #
Quatre sources de métriques.
Les sources #
| Source | Contenu | Exposé par |
|---|---|---|
| kube-state-metrics | État des objets : pods, deployments, jobs, PVC... | Deployment kube-state-metrics |
| node-exporter | CPU, RAM, disque, réseau des nœuds | DaemonSet |
| kubelet / cAdvisor | Consommation des conteneurs | Chaque nœud (/metrics/cadvisor) |
| Control plane | API server, scheduler, etcd, controller-manager | Composants du cluster |
| Vos applications | Métriques métier et techniques | Endpoint /metrics |
2. Installer kube-prometheus-stack #
Tout-en-un avec Helm.
Installation #
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install monitoring prometheus-community/kube-prometheus-stack \
-n monitoring --create-namespace \
--set grafana.adminPassword=ChangeMe! \
--set prometheus.prometheusSpec.retention=15d \
--set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
kubectl -n monitoring get pods
kubectl -n monitoring port-forward svc/monitoring-grafana 3000:80
kubectl -n monitoring port-forward svc/monitoring-kube-prometheus-prometheus 9090:9090Le chart installe l'opérateur, Prometheus, Alertmanager, Grafana avec des dashboards Kubernetes prêts à l'emploi, node-exporter, kube-state-metrics et un jeu de règles d'alerte standard.
3. Les CRD de l'Operator #
Déclarer ce que l'on veut superviser.
ServiceMonitor et PodMonitor #
prometheus.yml : on déclare des objets Kubernetes.# Application exposant /metrics sur le port nommé "http-metrics"
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: mon-api
namespace: monitoring
labels: { release: monitoring }
spec:
namespaceSelector: { matchNames: [production] }
selector:
matchLabels: { app: mon-api }
endpoints:
- port: http-metrics
path: /metrics
interval: 30s# Sans Service : cibler directement les pods
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata: { name: workers, namespace: monitoring, labels: { release: monitoring } }
spec:
namespaceSelector: { matchNames: [production] }
selector: { matchLabels: { app: worker } }
podMetricsEndpoints:
- port: metricsPrometheusRule #
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata: { name: mon-api-alertes, namespace: monitoring, labels: { release: monitoring } }
spec:
groups:
- name: mon-api
rules:
- alert: ApiHighErrorRate
expr: sum(rate(http_requests_total{app="mon-api",status=~"5.."}[5m])) / sum(rate(http_requests_total{app="mon-api"}[5m])) > 0.05
for: 10m
labels: { severity: critical }
annotations: { summary: "Plus de 5 % d'erreurs sur mon-api" }kubectl get servicemonitors,podmonitors,prometheusrules -A
kubectl -n monitoring get prometheus -o yaml | grep -A3 serviceMonitorSelectorErreur Courante : Si votreServiceMonitorn'est pas pris en compte, vérifiez d'abord que son labelreleasecorrespond auserviceMonitorSelectorde l'objetPrometheus, puis que le port du Service est bien nommé.
4. Requêtes PromQL Kubernetes #
Les indispensables.
Quelques requêtes utiles #
# Pods qui redémarrent
increase(kube_pod_container_status_restarts_total[1h]) > 3
# Pods non prêts
kube_pod_status_ready{condition="false"} == 1
# CPU par namespace (cœurs)
sum by (namespace) (rate(container_cpu_usage_seconds_total{container!=""}[5m]))
# Mémoire utilisée / demandée
sum by (pod) (container_memory_working_set_bytes{container!=""})
/ sum by (pod) (kube_pod_container_resource_requests{resource="memory"})
# Réplicas indisponibles
kube_deployment_status_replicas_unavailable > 0
# PVC bientôt pleins
kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes < 0.1Bonne Pratique : Pour de grands clusters, déléguez le stockage long terme à Mimir/Thanos avec remoteWrite et réduisez la rétention locale de Prometheus.Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Discussions récentes de la formation
- Prometheus consomme 12 Go de RAM : comment trouver les métriques coupables ?✓ résolu · 2 réponse(s)
- PromQL : quelle différence entre rate() et irate() ?✓ résolu · 1 réponse(s)
Poser une question sur cette leçon →Voir toutes les discussions de la formation
Glossaire de la formation
Observabilité
La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...
Métriques
Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...
Alerting
Processus consistant à notifier les équipes (via email, Slack, Teams) lorsqu'un événement spécifique, un dépassement de seuil ou une anomalie est déte...
Architecture
Conception globale et structurelle d'un système informatique, définissant ses différents composants, leurs relations et les principes guidant son évol...
OpenTelemetry
Framework open source fournissant des standards, APIs et SDKs pour collecter et exporter des données d'observabilité (traces, métriques, logs) de mani...
Articles recommandés
Prometheus sur Kubernetes et l'interface web de Prometheus
Déployer Prometheus sur Kubernetes avec kube-prometheus-stack (Prometheus Operator, ServiceMonito...
Déployer Thanos sur Kubernetes (kube-prometheus-stack, Helm et Operator)
Installer Thanos sur Kubernetes : sidecar via kube-prometheus-stack, secret objstore, Bitnami/kub...
Exploiter VictoriaMetrics : vmalert, sauvegardes, Kubernetes et supervision
Évaluer règles et alertes avec vmalert, sauvegarder avec vmbackup, déployer sur Kubernetes avec l...
Elastic Agent sur Kubernetes
Déployer Elastic Agent sur Kubernetes : DaemonSet géré par Fleet, intégration Kubernetes, kube-st...
Les types de métriques dans Prometheus
Découvrez en détail les quatre types de métriques supportés par Prometheus (Counter, Gauge, Histo...
PromQL : introduction au langage de requête de Prometheus
Apprendre PromQL, le langage de requête de Prometheus : sélecteurs, rate, sum by, histogrammes et...
Recording rules Prometheus : accélérer ses requêtes et ses tableaux de bord
Comprendre et maîtriser les recording rules de Prometheus : évaluation, convention de nommage, pi...
Prometheus : alerter avec Alertmanager (règles, routage, silences)
Mettre en place l'alerting Prometheus : règles d'alerte, Alertmanager, routage, regroupement, inh...
Prometheus : visualiser ses métriques (UI, Grafana et dashboards)
Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...