Die Untiefen von Linux mit Sysdig ergründen

Alles im Blick

Viele Diagnose-Tools verfügen über eine ganz spezielle Syntax. Das erschwert den Umgang und macht die Ausgabe unübersichtlich. Sysdig fasst die wichtigsten Vertreter unter einer einheitlichen Oberfläche zusammen.

Auf einem modernen Linux-System laufen zahlreiche Prozesse gleichzeitig. Es öffnet Dateien, schreibt darin Daten oder liest aus diesen, schließt sie wieder, öffnet neue und so weiter. Das belastet die CPU und andere Peripherie in unterschiedlicher Weise und führt womöglich zu Engpässen, die in manchen Fällen das gesamte System bremsen.

Um diese Flaschenhälse zu finden und zu beheben, kommen in der Regel Befehle wie top, ps, vmstat, strace oder lsof parallel oder in Kombination zum Einsatz. Die Ergebnisse der Werkzeuge dienen oft als Eingaben oder Parameter für weitere Tools, was nicht selten zu komplexen und unübersichtlichen Aktionen führt. Eine einheitliche und übersichtliche Syntax wäre hier eine willkommene Hilfe.

Hier kommt Sysdig [1] ins Spiel: Die Entwickler eines kleinen Unternehmens in San Francisco haben in ihm die in der Praxis am häufigsten eingesetzten Befehle zusammengefasst, und statteten das Tool mit einer programmierbaren Schnittstelle aus. Es versteht eine relativ große Anzahl von Optionen, die spezielle Eigenschaften steuern. Der Befehl sysdig --help listet die wichtigen davon auf.

Die zeilenweise Ausgabe besteht aus mehreren Teilen, den sogenannten Feldern. Die ersten beiden, evt.num und evt.time, kennzeichnen das beschriebene Ereignis ("event") eindeutig mit einer Nummer und dem Zeitpunkt, zu dem es die Software registriert hat. Zusätzlich beschreibt evt.cpu die involvierte CPU bei Systemen mit mehreren CPUs.

Das Feld proc.name steht für den Prozess, thread.tid für den Thread. Mit evt.dir teilt die Software mit, in welche Richtung das Event arbeitet: "<" steht für eingehende Daten und ">" für ausgehende. Last, but not least klassifiziert evt.type das Ereignis als solches, wie read oder open. Die Argumente eines Events fasst evt.args zusammen.

Installation

Unter Arch Linux installieren Sie das Programm in der aktuellen Version 1.82 aus dem Repository. Bei anderen Distributionen bietet der Hersteller eine etwas unorthodoxe Methode an, die Software einzurichten, nämlich über ein mittels Curl heruntergeladenes Skript, das Sie in der Bash ausführen (Listing 1).

Das Skript ermittelt automatisch das verwendete Betriebssystem und richtet die passende Version ein. Es unterstützt derzeit Debian ab Version 6.0, Ubuntu 10.04 aufwärts, CentOS ab 6, RHEL ab 6, Fedora ab 13 und Linux Mint ab Version 9. Falls es bei älteren Ubuntu-Versionen nicht funktioniert, installieren Sie Sysdig mit den Befehlen aus Listing 2.

Der String der ersten Zeile lädt den Public Key des Repositories herunter und installiert ihn, die zweite trägt das Repository in eine Datei in /etc/apt/sources.list.d/ ein. Nach dem obligatorischen sudo apt-get update stehen die Pakete zur Auswahl in Synaptic bereit. Anschließend gilt es, ein spezielles Kernel-Modul zu erzeugen und zu installieren. Dazu benötigen Sie die Kernel-Header, die Sie mit folgendem Befehl installieren:

apt-get -y install linux-headers-$(uname -r)

Weitere Details zur Installation finden Sie in der Online-Dokumentation [2]. Für Windows und Mac OS X stehen ebenfalls passende Versionen zum Download bereit.

Listing 1

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

Listing 2

curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | sudo apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
sudo apt-get update

Praxis

Starten Sie Sysdig als Root ohne zusätzliche Optionen im Terminal, erhalten Sie augenblicklich eine Ausgabe in der Form, wie Listing 3 sie zeigt. Diesen Modus beenden Sie mit [Strg]+[C].

Listing 3

# sysdig
3 11:03:20.522466433 2 <NA> (0) > switch next=158(systemd-journal)
232 11:03:20.524714772 1 plugin-containe (5081) < futex res=-110(ETIMEDOUT)
286 11:03:20.533770002 0 firefox (4901) > mmap
338 11:03:20.536870106 0 firefox (4901) > poll fds=5:e1 4:u1 8:p3 10:u3 11:u1 23:p1 25:u1 timeout=0
387 11:03:20.537960783 2 Timer (5750) < futex res=-110(ETIMEDOUT)
2249 11:03:20.548869168 2 java (29547) < futex res=-110(ETIMEDOUT)
2266 11:03:20.551182910 0 emacs (16938) > writev fd=4(<u>) size=112
197129 11:03:21.241713273 3 Xorg (1757) < read res=72 data=.?.S.......

Das erste aufgezeichnete Ereignis trägt die Nummer 3 und stammt aus dem Prozess systemd-journal. Es folgt eines von vielen durch den als plugin-containe (die Ausgabe schneidet hier ein "r" ab) bezeichneten Prozess, den von Firefox eingebetteten Flash-Player und dann Firefox selbst, der eine Reihe Events generiert.

Interessant ist dabei unter anderem, dass Firefox eine andere CPU nutzt, als der Container. In der letzten Zeile des Listings mit der Zeichenkette data= sehen Sie zahlreiche Punkte. Sysdig schreibt diese stellvertretend für nicht darstellbare Zeichen in die Ausgabe. Das ändern Sie bei Bedarf durch Optionen wie -A, mit dem Sie das Programm anweisen, nur ASCII-Zeichen auszugeben.

Wenn Sysdig schon innerhalb einer Sekunde knapp 20 000 Events aufzeichnet, ist klar, dass der sinnvolle Einsatz der Software einen leistungsfähigen Filter erfordert, der die Ausgaben auf die gewünschten Ereignisse beschränkt. Sie hängen die Angaben zum Filtern nach den Optionen an das Kommando an. Listing 4 zeigt, wie Sie die Ausgabe auf das Ereignis read reduzieren.

Listing 4

# sysdig evt.type=read
152839 13:02:03.673561027 3 pulseaudio (4360) < read res=2 data=WW
152840 13:02:03.673561173 2 threaded-ml (3223) > read fd=23(<p>pipe:[1593199]) size=10

Chisels

Viele komplexe Angaben, etwa die Prozesse mit den meisten Ein- und/oder Ausgaben, gibt das System nicht direkt preis. Es gilt, diese durch Zusammenfassen von Informationen und mittels statistischen Methoden zu ermittelt. Das und vieles mehr geschieht über sogenannte Chisels. Dabei handelt es sich um etwa zwei KByte große Lua-Skripte, die Sysdig selbst aufruft. Die Option -c Chisel-Name aktiviert ein solches.

So analysiert das Beispiel aus Listing 5 die langsamsten Systemaufrufe. Dazu startet Sysdig zunächst eine Datensammlung und beendet diese, sobald Sie das Programm stoppen. Dann erfolgt das Auswerten der gesammelten Daten und deren Ausgabe. Wieder fällt der Flash-Player auf, der neben dem Java-Programm die meisten Ressourcen beansprucht und das System verlangsamt.

Listing 5

# sysdig -c bottlenecks
89898) 0.000000000 plugin-containe (5080) > futex addr=7FAB265B1DA4 op=137
170611) 1.000095651 plugin-containe (5080) < futex res=-110(ETIMEDOUT)
170597) 1.000069882 plugin-containe (16961) < futex res=-110(ETIMEDOUT)
89454) 0.000000000 java (29540) > futex addr=7F400C252F54 op=393
135393) 1.000024874 java (29720) < futex res=-110(ETIMEDOUT)

Viele Chisels benötigen zusätzliche Argumente, etwa eine zu überwachende IP-Adresse oder einen Port. Diese geben Sie direkt nach dem Chisel an, etwa sysdig -c spy_ip IP-Adresse. Bei der Installation kopiert Sysdig die Chisels ins Verzeichnis /usr/share/sysdig/chisels/. Dank der relativ einfachen Struktur eignen sie sich als Vorlagen für eigene Entwicklungen.

Der Aufruf sysdig -cl zeigt die in sechs Kategorien geordneten, vorhandenen Chisels an, mit denen Sie die Auslastung von CPU und Netzwerk untersuchen, den Durchsatz ermitteln, die Performance des Gesamtsystems analysieren, Sicherheitschecks machen und Fehleranalysen fahren. Die meisten Kategorien enthalten mehrere unterschiedliche Varianten von Chisels, die spezielle Aussagen erlauben.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • YaST erhält zahlreiche Verbesserungen
    In der Distribution openSUSE Thumbleweed ist eine neue Version des Konfigurationstools YaST angekommen, die einige sichtbare Neuerungen mitbringt. Dazu gehört unter anderem ein neuer Dialog zum Anlegen eines lokalen Benutzers bei der Installation.
  • Die Zuverlässigkeit von Festplatten überwachen mit smartmontools
    Festplatten sterben selten derart spontan, wie es den meisten Anwendern erscheint. Wer geeignete Tools einsetzt, bemerkt das Siechtum rechtzeitig und kann darum Ersatz beschaffen.
  • Lastabhängig
    Linux bietet zahlreiche praktische Werkzeuge, die viel Arbeit sparen und für Komfort sorgen – sofern man sie denn kennt und einzusetzen weiß. Loadwatch gehört zu den weniger bekannten kleinen Helfern.
  • Firefox knackt die 50-Prozent-Schwelle in Deutschland
    Firefox hat im Januar nochmals kräftig zugelegt und über 1,4 Prozentpunkte erobert. Damit liegt der Open-Source-Browser nun mit 50 Prozent Marktanteil klar an der Spitze.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 2 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...