RousselTMLEARNING

TP · Prometheus : de la découverte à l'expertise

TP : Superviser Kubernetes avec kube-prometheus-stack avec correction

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. 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 pods
  2. 2. 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 /metrics sur 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=demo
  3. 3. 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. 4. Ajouter une règle d'alerte

    Pourquoi ? La PrometheusRule rend l'alerte déclarative ; le label release doit correspondre au sélecteur de l'Operator, sinon elle est ignorée.

    Créez une PrometheusRule dé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

  • ⏱ Durée estimée : ≈ 50 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

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...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !