RousselTMLEARNING

Article · Observabilité avec eBPF : de la découverte à l'expertise

Profiling continu avec eBPF

1. Le principe #

Échantillonner les piles d'appels depuis le noyau.

Comment ça marche #

Un programme eBPF attaché à un perf event (par exemple 19 fois par seconde par CPU) lit la pile d'appels du processus en cours, côté noyau et côté utilisateur, et l'agrège dans une map. L'agent remonte périodiquement les piles agrégées, les symbolise et les envoie au serveur.

AvantageLimite
Aucune modification du code, tous les processusProfils CPU surtout (pas d'allocations mémoire)
Surcoût très faibleBesoin des symboles (binaires non « strippés » ou fichiers debuginfo)
Inclut le noyauAgent privilégié sur chaque nœud

2. Les outils #

Trois options open source.

Comparatif #

OutilAgentStockage / interface
Parcaparca-agent (DaemonSet)Serveur Parca, interface intégrée (port 7070)
PyroscopeAlloy pyroscope.ebpfPyroscope + Grafana (voir la formation Pyroscope)
Profiler eBPF OpenTelemetryAgent donné par Elastic, intégré au CollectorTout backend acceptant les profils OTLP

Parca avec Docker #

docker network create prof
docker run -d --name parca --network prof -p 7070:7070 ghcr.io/parca-dev/parca:latest /parca
docker run -d --name parca-agent --network prof --privileged --pid host \
  -v /sys/kernel/debug:/sys/kernel/debug -v /lib/modules:/lib/modules:ro \
  ghcr.io/parca-dev/parca-agent:latest \
  --remote-store-address=parca:7070 --remote-store-insecure

L'interface (http://localhost:7070) affiche les profils CPU de tous les processus, filtrables par labels (comm, conteneur, pod).

À savoir : Les options exactes de l'agent évoluent selon les versions : consultez le README de parca-agent si une option est refusée.

3. Les symboles #

Des noms de fonctions plutôt que des adresses.

Bien symboliser #

  • Go, Rust, C/C++ : gardez les tables de symboles (pas de strip, pas de -ldflags="-s -w") ou publiez les fichiers debuginfo.
  • Java, Node.js, Python : les agents récents savent dérouler les piles de ces environnements ; vérifiez la liste des runtimes pris en charge par votre agent.
  • Parca peut récupérer les symboles depuis un serveur debuginfod pour les paquets des distributions.

📄 Profiling continu avec eBPF : Parca, Pyroscope et le profiler OpenTelemetry →

Mon suivi

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

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

✉️ Poser une question

Articles recommandés

Comprendre la notion de score

Le concept de score va permettre à Elasticsearch de classer vos documents par pertinence lors d u...

Elastic Common Schema (ECS) : le format standard des données Elastic et son rôle dans Elastic SIEM

Comprendre l'Elastic Common Schema (ECS) : format standard des champs dans Elasticsearch, convent...

Grail : Dynatrace Data Lakehouse

Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail dont vous pouvez co...

C'est quoi l'observabilité

La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet...

Les types de transactions dans les base de données

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Différences entre Technologies et Services dans Dynatrace

Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...

Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Licences Dynatrace : modèle par unités et consumption-based licensing (DPS)

Comprendre la facturation Dynatrace : l'ancien modèle de licences segmentées par unités (Host Uni...

Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative

Découvrez les différents types de services que Dynatrace peut surveiller, leur rôle, et comment l...