Text size
Auf meinem Radar6 Min. Lesezeit

eBPF: Linux sehen, ohne Ihren Code zu berühren

Die Kernel-Technologie hinter modernen Netzwerk-, Sicherheits- und Beobachtungswerkzeugen.

eBPF: seeing inside Linux without touching your code
KI-generierte Illustration

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?

eBPF, einfach

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.

Warum es für DevOps wichtig ist

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:

  • Keine Codeänderungen. Beobachten Sie Anwendungen in jeder Sprache, ohne Bibliotheken oder Agenten hinzuzufügen.
  • Niedrige Kosten. Es läuft im Kernel, sehr effizient.
  • Vollständige Sicht. Sehen Sie alles, was auf dem Knoten passiert, einschließlich der Dinge, die Anwendungen nicht protokollieren.
  • Kann durchsetzen, nicht nur beobachten. Pakete fallen lassen, Systemanrufe blockieren, Prozesse abschalten.

Die Werkzeuge, die darauf gebaut wurden

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.

Null-Instrumentenverfolgung

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.

Du versuchst es selbst .

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.

Beschränkungen

  • Kernel-Version ist wichtig. Moderne Funktionen benötigen relativ neue Kernele (5.x und neuere, idealerweise 5.10+ oder 6.x). Alte Enterprise-Linux-Versionen können ein Problem sein.
  • Privilegien. eBPF-Tools benötigen in der Regel erhöhte Berechtigungen am Knoten. Vertrauen Sie den Werkzeugen, die Sie installieren.
  • Nur Linux- Meistens. Windows hat eine eBPF-Implementierung in Arbeit, aber das Ökosystem ist Linux-first.
  • Verschlüsseltes Datenverkehr ist schwerer zu überprüfen, obwohl Werkzeuge in einigen Fällen in TLS-Bibliotheken angeschlossen werden können.
  • Debugging von eBPF selbst Kann schwierig sein, wenn etwas schief geht.

Sollte es dich interessieren?

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