RousselTMLEARNING

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

Prometheus dans Kubernetes : Operator et ServiceMonitor

1. Superviser Kubernetes : ce qu'il faut collecter #

Quatre sources de métriques.

Les sources #

SourceContenuExposé par
kube-state-metricsÉtat des objets : pods, deployments, jobs, PVC...Deployment kube-state-metrics
node-exporterCPU, RAM, disque, réseau des nœudsDaemonSet
kubelet / cAdvisorConsommation des conteneursChaque nœud (/metrics/cadvisor)
Control planeAPI server, scheduler, etcd, controller-managerComposants du cluster
Vos applicationsMétriques métier et techniquesEndpoint /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:9090

Le 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 #

Fonctionnement du Prometheus Operator
Plus besoin d'éditer 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: metrics

PrometheusRule #

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 serviceMonitorSelector
Erreur Courante : Si votre ServiceMonitor n'est pas pris en compte, vérifiez d'abord que son label release correspond au serviceMonitorSelector de l'objet Prometheus, puis que le port du Service est bien nommé.

4. Requêtes PromQL Kubernetes #

Les indispensables.

Quelques requêtes utiles #

Cibles Prometheus dans Kubernetes
Vérification rapide des cibles collectées.
# 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.1
Bonne 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.

📄 Prometheus dans le monde Kubernetes (Operator, ServiceMonitor, kube-prometheus-stack) →

Mon suivi

  • ⏱ Durée estimée : ≈ 12 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 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...

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 !