La correction est intégrée au TP (Voir les encadrés de couleur vert)
Ce que vous allez apprendre dans ce TP
- Installer kube-prometheus-stack
- Déclarer une collecte avec un ServiceMonitor
- Créer une alerte déclarative
Prometheus dans Kubernetes #
Ce que vous allez apprendre dans cette section
- Installer kube-prometheus-stack
- Déclarer une collecte avec un ServiceMonitor
- Créer une alerte déclarative
Contexte. Dans Kubernetes les pods apparaissent et disparaissent : modifier prometheus.yml à la main n'a plus de sens. L'Operator découvre les cibles à partir d'objets Kubernetes (ServiceMonitor, PrometheusRule).
Prérequis : kind, kubectl, helm · Durée estimée : 50 min
Operator, ServiceMonitor, règle d'alerte.1. Installer la stack
Pourquoi ? Le chart installe tout d'un coup (Operator, Prometheus, Alertmanager, Grafana) ; on vérifie que les pods démarrent avant d'aller plus loin.
Créez un cluster kind puis installez le chart.Voir la correction
kind create cluster --name prom 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 prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false kubectl -n monitoring get pods2. Déployer une application instrumentée
Pourquoi ? Un port nommé est ce que le ServiceMonitor référence : sans nom de port, la cible n'est jamais découverte.
Une application exposant/metricssur un port nommé.Voir la correction
kubectl create deployment demo --image=quay.io/brancz/prometheus-example-app:v0.3.0 --port=8080 kubectl patch deployment demo --type=json -p='[{"op":"add","path":"/spec/template/spec/containers/0/ports/0/name","value":"web"}]' kubectl expose deployment demo --port=8080 --name=demo3. Créer le ServiceMonitor
Pourquoi ? Le ServiceMonitor remplace l'édition de la configuration : la supervision devient un objet versionné comme le reste.
Déclarez la collecte et vérifiez la cible dans l'UI de Prometheus.Voir la correction
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: { name: demo, namespace: default } spec: selector: { matchLabels: { app: demo } } endpoints: [{ port: web, interval: 15s }]kubectl apply -f servicemonitor.yaml kubectl -n monitoring port-forward svc/monitoring-kube-prometheus-prometheus 9090:9090 & curl -s 'localhost:9090/api/v1/targets' | jq '.data.activeTargets[] | select(.labels.job=="demo") | .health'4. Ajouter une règle d'alerte
Pourquoi ? La PrometheusRule rend l'alerte déclarative ; le label
Créez unereleasedoit correspondre au sélecteur de l'Operator, sinon elle est ignorée.PrometheusRuledéclenchée si le taux de requêtes en erreur dépasse 5 %.Voir la correction
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: { name: demo-alerts, namespace: monitoring, labels: { release: monitoring } } spec: groups: - name: demo rules: - alert: DemoErrorRate expr: sum(rate(http_requests_total{service="demo",code=~"5.."}[5m])) / sum(rate(http_requests_total{service="demo"}[5m])) > 0.05 for: 5m labels: { severity: warning }kubectl apply -f rule.yaml && kubectl get prometheusrules -A kind delete cluster --name prom
Niveau de difficulté : ●●●○○ (3/5)
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 dans le monde Kubernetes (Operator, ServiceMonitor, kube-prometheus-stack)
Superviser Kubernetes avec Prometheus : service discovery, kube-prometheus-stack, Prometheus Oper...
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...
Elastic Agent sur Kubernetes
Déployer Elastic Agent sur Kubernetes : DaemonSet géré par Fleet, intégration Kubernetes, kube-st...
Exploiter VictoriaMetrics : vmalert, sauvegardes, Kubernetes et supervision
Évaluer règles et alertes avec vmalert, sauvegarder avec vmbackup, déployer sur Kubernetes avec l...
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...
Bonnes pratiques Prometheus : métriques, cardinalité, règles et exploitation
Bonnes pratiques Prometheus : nommage des métriques, labels et cardinalité, intervalles de scrape...