Wenn Prozesse sich einfach verabschieden, ohne eine hilfreiche Nachricht zu hinterlassen, hilft man sich zur Eingrenzung der Ursachen, indem man mit strace den Prozess verfolgt und hofft den letzten Systemaufrufen vor dem Verscheiden sinnvolles entnehmen zu koennen. Ein relativ neues Werkzeug von Draios ist sysdig.
Waehrend man mit strace nur einen Prozess -- und seine Kinder -- beobachten kann, installiert sysdig ein Kernelmodul und erlaubt es, das gesamte System auf einmal zu beobachten. Um es unter Ubuntu zu installieren, reicht ein
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
sysdig nennt seine Filter 'chisel', weil sie das gewünschte aus den unsortierten Daten quasi herausmeißeln. sysdig -cl listet verfügbare Chisel auf, sysdig -c chisel führt einen aus.
sysdig hat das Zeug, einige Werkzeuge neben strace zu ersetzen -- die vorhandenen Chiselkategorien gehen von 'CPU Usage' über 'I/O' und 'Net' zu 'Performance' und 'System state'. Ein paar Beispiele:
- bottlenecks
findet langsame Systemaufrufe - topconns
findet die Netzwerkverbindungen mit dem höchsten Durchsatz - spy_users
zeigt die Aktivitaeten aktuell auf dem System eingeloggter Nutzer
Die Liste ist sehr viel länger und kann eigenständig erweitert werden: Chisel werden in lua programmiert. Lua ist eine kleine aber mächtige, sehr leicht zu lernende und extrem performante Sprache, die sich einfach in eigene Programme einbetten lässt -- die ideale Wahl für ein Werkzeug wie sysdig.
Wenn man nun aber nicht weiss, nach welchem Problem man Ausschau hält, kann man sysdigs Messpunkte in eine Datei schreiben lassen (sysdig -w file.dig) und später in Ruhe analysieren (sysdig -r file.dig). Aber Obacht! Diese Dateien werden sehr schnell sehr groß. Wenn nur wenig Plattenplatz zur Verfügung steht, muss man mit den untersuchten Zeiträumen vorsichtig sein.
Probiert sysdig aus! Low level debuggen von Software, Netzwerken und deren Zusammenspiel einfach gemacht.