sysstat
ist eine leistungsstarke Sammlung von Werkzeugen zur Überwachung der Systemleistung unter Linux und Unix-basierten Betriebssystemen. Die Suite besteht aus verschiedenen Programmen, die es ermöglichen, detaillierte Statistiken über CPU-Auslastung, Arbeitsspeicher, I/O-Operationen, Netzwerkaktivität und andere Systemressourcen sowohl in Echtzeit als auch über längere Zeiträume zu erfassen und auszuwerten. Eines der Hauptmerkmale von sysstat ist die Fähigkeit, historische Daten aufzuzeichnen, so dass Administratoren die Systemleistung nicht nur im aktuellen Moment, sondern auch rückblickend analysieren können.
Installation
In einem auf Debian
basierenden Linux wird sysstat mit Hilfe von apt
aus den Repositories installiert:
$ sudo apt install sysstat
Dieser Befehl installiert das Paket sysstat
, das eine Sammlung von Überwachungs- und Reporting-Tools enthält, darunter sar
, iostat
, mpstat
, pidstat
, und einige andere.
Programme und Tools
Die sysstat
-Suite besteht aus mehreren Überwachungswerkzeugen, welche in /usr/bin
installiert werden:
sar
(System Activity Reporter): Das Haupttool zur Sammlung und Anzeige von Systemstatistiken (CPU, Speicher, I/O, Netzwerk).iostat
: Zeigt CPU- und I/O-Statistiken.mpstat
: Zeigt Statistiken für Multicore-Prozessoren.pidstat
: Zeigt CPU-, Speicher- und I/O-Statistiken pro Prozess.nfsiostat
: Überwacht NFS-I/O-Statistiken.tapestat
: Zeigt Statistiken für Bandlaufwerke.
Konfigurationsdateien
/etc/sysstat/sysstat:
Die Datei/etc/sysstat/sysstat
steuert wichtige Einstellungen, die den Umfang und das Verhalten der Langzeitspeicherung und Verarbeitung von Systemstatistiken beeinflussen. Insbesondere kann hier festgelegt werden, wie lange sysstat die Daten speichert, wann sie komprimiert werden und welche zusätzlichen Optionen für die Datensammlung verwendet werden. Diese Datei ergänzt die grundlegende Konfigurationsdatei/etc/default/sysstat
, die hauptsächlich das Ein- und Ausschalten der Datensammlung steuert./etc/default/sysstat
: Diese Datei legt fest, ob das Sammeln der Statistiken aktiviert ist und steuert einige grundlegende Parameter. Standardmäßig ist das Sammeln der Daten deaktiviert (die VariableENABLED
ist auffalse
gesetzt)./etc/cron.d/sysstat
: Diese Datei enthält die Cron-Job-Konfiguration, die festlegt, wie oft die Systemstatistiken gesammelt werden. Standardmäßig sammeltsysstat
Daten alle 10 Minuten.
Logdateien
/var/log/sysstat/:
Die gesammelten Systemstatistiken werden in Log-Dateien im Verzeichnis/var/log/sysstat/
gespeichert. Diese Dateien werden täglich erstellt und tragen Namen wiesa01
,sa02
usw., die das Datum wiedergeben (z.B.sa01
für den ersten Tag des Monats).
Hilfsprogramme
Einige Hilfsprogramme und Skripte, die sysstat
für das Sammeln und Verarbeiten der Daten verwendet, werden in /usr/lib/sysstat
installiert:
debian-sa1:
Das Skriptdebian-sa1
ist eine spezielle Anpassung für Debian-basierte Systeme und ist dafür verantwortlich, das eigentlichesa1
-Skript aufzurufen, das wiederum denSystem Activity Data Collector (sadc)
startet, um die Systemstatistiken zu erfassen. Es fungiert als eine Art Wrapper-Skript, das sicherstellt, dass die Sammlung der Daten korrekt und im richtigen Format durchgeführt wird.sa1
: Ein Skript, das vom Cron-Job aufgerufen wird, um Systemstatistiken zu sammeln und in Binärdateien zu speichern.sa2
: Erstellt zusammengefasste Tagesberichte aus den gesammelten Daten.sadc:
Das Toolsadc
liest die relevanten Systeminformationen (z.B. CPU-Auslastung, Speicherverbrauch, I/O-Statistiken) aus den entsprechenden Kernel-Schnittstellen (z.B./proc
oder/sys
), verarbeitet sie und legt sie in komprimierter Binärform in den Dateien/var/log/sysstat/
ab.
Aktivierung und Konfiguration
Nach der Installation von sysstat ist das Sammeln von Statistiken normalerweise deaktiviert. Um sie zu aktivieren, muss der Parameter ENABLED
in der Konfigurationsdatei /etc/default/sysstat
auf true
gesetzt werden:
# Should sadc collect system activity informations? Valid values # are "true" and "false". Please do not put other values, they # will be overwritten by debconf! ENABLED="true"
Starten oder Neustarten des sysstat
-Service:
$ sudo systemctl start sysstat
Aktivieren Sie gegebenenfalls den sysstat
-Service, damit er nach einem Neustart automatisch wieder gestartet wird:
$ sudo systemctl enable sysstat
Cron
Die Cron-Konfiguration für sysstat /etc/cron.d/sysstat
legt fest, wie oft Systemstatistiken gesammelt werden und wann diese rotiert werden. Die Datei definiert zunächst den Pfad zu den notwendigen Programmen, um sicherzustellen, dass die Skripte korrekt ausgeführt werden können. Danach wird festgelegt, dass die Systemaktivitätsdaten alle 10 Minuten zwischen der 5. und 55. Minute jeder Stunde durch das Skript debian-sa1 gesammelt werden.
Zusätzlich gibt es einen speziellen Eintrag um 23:59 Uhr, der dafür sorgt, dass die Statistiken in eine neue Datei rotiert werden. Dies geschieht, indem Daten für 60 Sekunden gesammelt werden und 2 Zyklen durchgeführt werden, bevor der Tag gewechselt wird.
# The first element of the path is a directory where the debian-sa1 # script is located PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin # Activity reports every 10 minutes everyday 5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1 # Additional run at 23:59 to rotate the statistics file 59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
sar (System Activity Reporter)
sar
ist ein Tool der sysstat
-Suite, das detaillierte Statistiken über die Systemaktivität sammelt und anzeigt, einschließlich CPU-Auslastung, Speicher- und Netzwerkstatistiken sowie I/O-Operationen. Mit sar können Administratoren sowohl Echtzeitdaten als auch historische Daten analysieren, da das Tool die gesammelten Statistiken in regelmäßigen Abständen speichert und somit eine langfristige Überwachung der Systemleistung ermöglicht.
Der Parameter -u
zeigt die CPU-Auslastung des Systems an, jedoch aggregiert über alle CPU-Kerne. Er gibt einen Überblick über verschiedene CPU-bezogene Metriken in Prozent, wie viel Zeit die CPU in verschiedenen Modi verbringt, z. B. im Benutzer- oder Systemmodus, wie viel Zeit sie im Leerlauf verbringt oder wie viel Zeit sie mit Warten auf E/A verbringt.
$ sar -u
Linux 5.10.0-32-amd64 (host.domain.de) 10/06/2024 _x86_64_ (2 CPU)
07:40:01 PM CPU %user %nice %system %iowait %steal %idle
07:50:00 PM all 26.48 0.00 2.34 0.06 0.00 71.11
08:00:01 PM all 30.41 0.00 2.65 0.09 0.00 66.85
Average: all 42.19 0.00 3.81 0.10 0.00 53.90
Erklärung der Spalten
%user
: Prozentsatz der CPU-Zeit, die im Benutzer-Modus (User Space) verbracht wurde (z.B. durch Anwendungen).%nice
: Prozentsatz der CPU-Zeit, die von Benutzer-Prozessen mit niedriger Priorität verbraucht wurde (durch dennice
-Wert festgelegt).%system
: Prozentsatz der CPU-Zeit, die im System-Modus (Kernel-Modus) verbracht wurde (durch das Betriebssystem selbst).%iowait
: Prozentsatz der Zeit, die die CPU mit Warten auf Eingabe/Ausgabe (I/O) verbringt, wie z.B. Festplattenoperationen.%steal
: Zeit, die einem virtuellen CPU von einem Hypervisor "gestohlen" wurde (typisch für virtuelle Maschinen).%idle
: Prozentsatz der Zeit, die die CPU im Leerlauf ist, also keine Aufgaben zu verarbeiten hat.
Das Kommando sar -P ALL
zeigt die CPU-Auslastung für jeden CPU-Kern (bzw. jede logische CPU) separat an. Während sar -u
die aggregierte Auslastung für alle CPU-Kerne anzeigt, liefert sar -P ALL
eine detaillierte Übersicht für jeden einzelnen CPU-Kern.
$ sar -P ALL
Linux 5.10.0-32-amd64 (host.domain.de) 10/06/2024 _x86_64_ (2 CPU)
07:50:00 PM CPU %user %nice %system %iowait %steal %idle
08:00:01 PM all 30.41 0.00 2.65 0.09 0.00 66.85
08:00:01 PM 0 29.43 0.00 2.58 0.10 0.00 67.89
08:00:01 PM 1 31.40 0.00 2.72 0.07 0.00 65.80
08:00:01 PM CPU %user %nice %system %iowait %steal %idle
08:10:01 PM all 56.65 0.00 5.11 0.12 0.01 38.12
08:10:01 PM 0 57.01 0.00 5.21 0.09 0.01 37.68
08:10:01 PM 1 56.29 0.00 5.01 0.14 0.01 38.56
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 42.91 0.00 3.88 0.10 0.00 53.11
Average: 0 42.61 0.00 3.88 0.10 0.00 53.41
Average: 1 43.22 0.00 3.88 0.10 0.00 52.80
Das Kommando sar
bietet eine Vielzahl weiterer Parameter zur Überwachung und Analyse der Systemleistung, die jeweils spezifische Systemmetriken anzeigen. Nachfolgend sind einige häufig verwendete sar
-Parameter aufgeführt, mit denen verschiedene Systemressourcen überwacht werden können:
sar -u
: Gesamt-CPU-Auslastung.sar -r
: Speicherstatistiken.sar -n DEV
: Netzwerkstatistiken.sar -b
: I/O-Statistiken.sar -q
: System-Load und Queue-Länge.sar -A
: Alle Statistiken auf einmal.
In den bisher gezeigten Beispielen verwendet sar
historische Daten, die zuvor vom sysstat
-Dienst in regelmäßigen Abständen gesammelt und in /var/log/sysstat/
gespeichert wurden. Diese historischen Daten bieten wertvolle Einblicke in die Systemleistung über längere Zeiträume.
sar
bietet auch die Möglichkeit, Echtzeitdaten zu erzeugen, indem die Parameter für das Intervall
und die Anzahl
verwendet werden. Dies ermöglicht eine unmittelbare Überwachung der aktuellen Systemressourcen, indem die Metriken in festgelegten Zeitintervallen direkt gemessen und angezeigt werden. So können sowohl langfristige Trends aus den gesammelten Daten als auch akute Lastspitzen in Echtzeit analysiert werden.
Ein Beispiel für die Echtzeitüberwachung mit sar
wäre sar -u 1 5
, bei dem die CPU-Auslastung alle 1 Sekunde
für insgesamt 5 Intervalle
gemessen wird. Dies liefert sofort eine Momentaufnahme der aktuellen Systemlast. Dies ist grundsätzlich mit allen oben genannten Parametern möglich:
$ sar -u 1 5
Linux 5.10.0-32-amd64 (host.domain.de) 10/06/2024 _x86_64_ (2 CPU)
08:41:13 PM CPU %user %nice %system %iowait %steal %idle
08:41:14 PM all 44.67 0.00 4.57 0.00 0.00 50.76
08:41:15 PM all 45.73 0.00 3.52 0.00 0.00 50.75
08:41:16 PM all 44.67 0.00 4.57 0.00 0.00 50.76
08:41:17 PM all 44.44 0.00 4.55 0.00 0.00 51.01
08:41:18 PM all 46.50 0.00 3.00 0.00 0.00 50.50
Average: all 45.21 0.00 4.04 0.00 0.00 50.76