Sysstat

Lesedauer: 9 Minuten

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 Variable ENABLED ist auf false gesetzt).
  • /etc/cron.d/sysstat: Diese Datei enthält die Cron-Job-Konfiguration, die festlegt, wie oft die Systemstatistiken gesammelt werden. Standardmäßig sammelt sysstat 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 wie sa01, 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 Skript debian-sa1 ist eine spezielle Anpassung für Debian-basierte Systeme und ist dafür verantwortlich, das eigentliche sa1-Skript aufzurufen, das wiederum den System 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 Tool sadc 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 den nice-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

Loading

Updated on 15. November 2024
Was this article helpful?

Related Articles