1. eBPF en quelques mots #
Une machine virtuelle dans le noyau.
Le principe #
eBPF (extended Berkeley Packet Filter) permet de charger de petits programmes dans le noyau Linux, sans module ni redémarrage. Avant d'être exécuté, chaque programme passe par un vérificateur (pas de boucle infinie, pas d'accès mémoire hors limites), puis il est compilé en code natif (JIT) et attaché à un événement.
Pour l'observabilité, cela signifie : voir chaque appel système, chaque paquet, chaque fonction d'un processus, avec un surcoût très faible et sans modifier les applications.
2. Les points d'accroche #
Où un programme peut s'attacher.
Types de hooks #
| Hook | Déclenché par | Exemple d'usage |
|---|---|---|
| tracepoint | Point d'instrumentation stable du noyau | Appels système, ordonnanceur, réseau |
| kprobe / kretprobe | Entrée / sortie d'une fonction du noyau | Latence de vfs_read |
| uprobe / uretprobe | Entrée / sortie d'une fonction d'un programme | SSL_write d'OpenSSL : voir le HTTP avant chiffrement |
| perf event | Minuterie ou compteur matériel | Profiling CPU par échantillonnage |
| XDP / TC | Paquet réseau (avant ou dans la pile) | Filtrage, répartition de charge, flux réseau |
| LSM | Contrôles de sécurité | Détection d'exécutions suspectes |
À savoir : Les tracepoints sont stables entre versions du noyau ; les kprobes dépendent des fonctions internes et peuvent casser lors d'une mise à jour.
3. Maps, BTF et CO-RE #
Échanger des données et rester portable.
Les maps #
Un programme eBPF ne fait pas d'entrées-sorties : il écrit dans des maps (tables de hachage, tableaux, ring buffers) que l'agent en espace utilisateur lit. On agrège donc dans le noyau (compteurs, histogrammes) et seul le résultat remonte : c'est ce qui rend eBPF si économe.
Portabilité #
BTF (BPF Type Format) décrit les structures du noyau courant ; CO-RE (Compile Once, Run Everywhere) ajuste le programme à la volée. Un même binaire fonctionne ainsi sur plusieurs versions du noyau.
uname -r # 5.8+ recommandé, 5.15+ idéal
ls /sys/kernel/btf/vmlinux # BTF disponible ?
bpftool feature probe | grep -i "map_type" | head| Outil | Catégorie |
|---|---|
| bpftrace, bcc | Diagnostic ponctuel en ligne de commande |
| Grafana Beyla / OpenTelemetry eBPF Instrumentation | Métriques RED et traces des applications |
| Cilium Hubble | Flux réseau Kubernetes |
| Pyroscope, Parca, profiler eBPF OpenTelemetry | Profiling continu |
| Tetragon, Falco | Observabilité de sécurité |
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
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...