Publié le : 10/05/2026 à 10:00

Découvrez comment configurer le profilage continu (Continuous Profiling) dans vos environnements en utilisant Grafana Alloy et Pyroscope pour identifier les goulets d'étranglement de vos applications.

1. Introduction au profilage continu

Le profilage continu avec Pyroscope.

Aller plus loin que les métriques

Là où les métriques vous informent qu'une application consomme trop de CPU ou de mémoire, le profilage continu (Continuous Profiling) vous dit *quelles lignes de code* exactes sont responsables. Grafana Pyroscope est la base de données dédiée à ce besoin. Grafana Alloy inclut les composants nécessaires pour interroger (scraper) les endpoints de profilage de vos applications (comme /debug/pprof en Go) et expédier ces données vers Pyroscope.

2. Mise en place de la collecte

Configuration du scraping et de l'expédition pour Pyroscope.

Le pipeline Pyroscope

Le pipeline de profilage ressemble fortement à celui de Prometheus. Il commence généralement par un mécanisme de découverte (ex: discovery.kubernetes) pour trouver les pods. Ensuite, le composant pyroscope.scrape interroge périodiquement ces cibles pour récupérer les profils de CPU, de mémoire ou de goroutines. Enfin, le composant pyroscope.write formate et expédie ces profils complexes vers votre backend Pyroscope (local ou Grafana Cloud), où ils pourront être visualisés sous forme de Flame Graphs.


Bonne Pratique : Assurez-vous que les labels appliqués dans pyroscope.scrape (ex: app, env, cluster) correspondent exactement à ceux utilisés dans vos métriques et logs. C'est essentiel pour permettre la corrélation automatique des Flame Graphs dans Grafana.
Erreur Courante : Laisser le profilage en continu sur un environnement de production avec des paramètres de base (pprof) non optimisés, ce qui peut ajouter un overhead CPU trop important sur vos processus cibles.
pyroscope.scrape "prod_apps" {
  targets    = discovery.kubernetes.pods.targets
  forward_to = [pyroscope.write.cloud.receiver]
  
  profiling_config {
    profile.process_cpu {
      enabled = true
    }
    profile.godgoroutine {
      enabled = true
    }
  }
}
Lien copié dans le presse-papiers !