eBPF: Linux sehen, ohne Ihren Code zu berühren
Die Kernel-Technologie hinter modernen Netzwerk-, Sicherheits- und Beobachtungswerkzeugen.
Die Kernel-Technologie hinter modernen Netzwerk-, Sicherheits- und Beobachtungswerkzeugen.

Wenn Sie Cloud-native Tools verfolgen, haben Sie überall "eBPF" gesehen. Cilium benutzt es für Netzwerke. Falco und Tetragon benutzen es für Sicherheit. Pixie, Grafana Beyla und andere nutzen sie zur Beobachtbarkeit. Cloud-Anbieter nutzen es unter der Haube ihrer Kubernetes-Netzwerke.
Aber was ist es eigentlich, und warum ist es wichtig für DevOps-Ingenieure, die nie Kernel-Code schreiben werden?
Der Linux-Kernel sieht alles: jedes Netzwerkpaket, jede geöffnete Datei, jeden gestarteten Prozess, jeden Systemanruf. Wenn man sich traditionell damit beschäftigen wollte, hatte man zwei schlechte Möglichkeiten: den Kernel selbst zu ändern (langsam, riskant, dauert Jahre bis er die Benutzer erreicht) oder ein Kernelmodul zu schreiben (starke, aber ein Bug kann die ganze Maschine abstürzen).
eBPF (ursprünglich "verlängerte Berkeley Packet Filter", jetzt nur ein Name) ist eine dritte Option. Es ermöglicht Ihnen, kleine, Sandbox-Programme im Kernel zu laufen, sicher, ohne Kernelcode zu ändern oder Module zu laden.
Bevor ein eBPF-Programm ausgeführt wird, wird der Kernel Überprüfer Sie muss sich beenden, sie kann nicht auf Speicher zugreifen, sie sollte nicht, sie kann das System nicht abstürzen. Dann wird es in native Code kompiliert und läuft extrem schnell.
Diese Programme sind an Häkeln: Netzwerkereignisse, Systemanrufe, Funktionseingaben und -ausgänge im Kernel oder sogar in Anwendungen. Wenn das Ereignis eintritt, läuft das Programm, sammelt Daten oder trifft eine Entscheidung und teilt die Ergebnisse mit normalen Programmen im Benutzerraum.
eBPF verwandelt den Linux-Kernel in eine programmierbare Plattform, sicher, ohne Neustart und ohne eine Zeile Ihrer Anwendung zu ändern.
Sie werden wahrscheinlich keine eBPF-Programme selbst schreiben. Aber Sie werden Tools verwenden, die darauf aufgebaut sind, und wenn Sie verstehen, was sie tun, können Sie sie auswählen und debuggen.
Die großen Vorteile:
Netzwerk: - Zilium: eine Kubernetes CNI, die eBPF anstelle von iptables für Routing, Lastbalancing und Netzwerkrichtlinien verwendet. Schneller und skalierbarer mit vielen Diensten und fügt Funktionen wie Identitätsbewusste Richtlinien und transparente Verschlüsselung hinzu. Es ist ein CNCF-Projekt und die Standard-Netzwerkung für verschiedene verwaltete Kubernetes-Angebote. - Ich weiß . Hubble: Ciliums Beobachtungsschicht, die zeigt, mit welchen Diensten mit welchen gesprochen wird, mit Flussprotokollen und einer Dienstkarte.
Sicherheit: - Falco: erkennt verdächtiges Verhalten, wie eine in einem Container geöffnete Shell oder unerwarteten Dateizugriff. - Ich weiß . Schwarz: aus dem Cilium-Projekt, beobachtet und kann Sicherheitsrichtlinien auf Kernel-Ebene durchsetzen, zum Beispiel den Abschluss eines Prozesses, der versucht, eine sensible Datei zu lesen.
Beobachtbarkeit: - Grafana Beyla: automatisch HTTP- und gRPC-Dienste mit eBPF ausstatten und OpenTelemetry-Metriken und -spuren erzeugen, ohne die Anwendung zu berühren. (Ihr Kern wurde dem Projekt OpenTelemetry als Instrumentationsbemühungen im Rahmen des eBPF beigesteuert.) - Ich weiß .: sofortige Einsicht in Kubernetes-Cluster, einschließlich Daten auf Anfrageebene, ohne Instrumente. - Ich weiß . Parca und Pyroskop: kontinuierliche Profilierung mit eBPF, die zeigt, welche Funktionen die CPU in allen Prozessen nutzen. - Ich weiß . Bftrace und BCC Werkzeuge: für praktische Linux-Performance-Analysen.
Eine der aufregendsten Anwendungen: die Erfassung von Anforderungsmetriken und grundlegenden Spuren von Anwendungen, die niemand berühren möchte. Legacy-Dienste, Dritte-Binärdateien, Apps in Sprachen ohne gute OpenTelemetry-Unterstützung.
Ein eBPF-basiertes Tool beobachtet Netzwerkanrufe und bestimmte Funktionen, erkennt HTTP- und gRPC-Anfragen und erstellt automatisch RED-Metriken (Rate, Fehler, Dauer) und Spannweiten. Es ist nicht so detailliert wie die richtige Instrumentierung, aber es gibt Ihnen eine solide Basis für alles, vom ersten Tag an.
Die einfachste Möglichkeit, die Macht von eBPF auf einer Linux-Maschine zu spüren, ist bpftrace:
# Show every new process being started, system-wide
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s -> %s\n", comm, str(args->filename)); }'
Laufen Sie es aus und öffnen Sie ein Terminal: Sie sehen jeden Befehl, wie er gestartet wird. Das ist der Kernel, der direkt mit dir spricht.
Ja, auch wenn du nie eine Zeile eBPF schreibst. Es wird leise zur Grundlage von Kubernetes Netzwerken, Laufzeitsicherheit und moderner Beobachtbarkeit. Wenn Sie wissen, was es ist, verstehen Sie, warum Cilium schneller ist, wie Falco in Containern sieht und wie Tools Ihre Apps verfolgen können, ohne sie zu berühren.
Meine Meinung: eBPF ist die wichtigste Linux-Technologie, die die meisten Menschen nie sehen. Lernen Sie, was es tut, und viele moderne Werkzeuge machen plötzlich Sinn.
Desly