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