sysstat ist eine Sammlung von Performance-Tools für Linux. Das Tool sar (System Activity Reporter) zeichnet Systemdaten auf und ermöglicht historische Analyse.
Installation
# Debian/Ubuntu
apt install sysstat
# RHEL/CentOS
dnf install sysstat
# Aktivieren
systemctl enable sysstat
systemctl start sysstat
Konfiguration
Datensammlung aktivieren
# /etc/default/sysstat (Debian/Ubuntu)
ENABLED="true"
# Cron-Jobs prüfen
cat /etc/cron.d/sysstat
Sammel-Intervall
# /etc/cron.d/sysstat
# Alle 10 Minuten sammeln
*/10 * * * * root /usr/lib/sysstat/sa1 1 1
# Tägliche Zusammenfassung
53 23 * * * root /usr/lib/sysstat/sa2 -A
sar - Grundlagen
CPU-Auslastung
# Aktuelle CPU-Statistiken (alle 2 Sekunden, 5 mal)
sar -u 2 5
# Ausgabe:
# %user %nice %system %iowait %steal %idle
# 15.00 0.00 3.00 1.00 0.00 81.00
# Heute
sar -u
# Gestern
sar -u -1
# Bestimmtes Datum
sar -u -f /var/log/sysstat/sa26
Speicher
# RAM-Nutzung
sar -r 2 5
# Mit Swap
sar -S 2 5
# Ausgabe:
# kbmemfree kbmemused %memused kbbuffers kbcached
Disk I/O
# Disk-Statistiken
sar -d 2 5
# Alle Devices
sar -dp 2 5
# Ausgabe:
# DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Netzwerk
# Netzwerk-Interfaces
sar -n DEV 2 5
# Netzwerk-Fehler
sar -n EDEV 2 5
# Sockets
sar -n SOCK 2 5
# TCP-Statistiken
sar -n TCP 2 5
Load Average
# Load und Task-Statistiken
sar -q 2 5
# Ausgabe:
# runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
Historische Daten
Nach Datum abfragen
# Bestimmter Tag
sar -u -f /var/log/sysstat/sa25
# Zeitbereich
sar -u -s 08:00:00 -e 18:00:00
# Gestern
sar -u -1
# Vor 3 Tagen
sar -u -3
Daten-Dateien
# Speicherort
ls -la /var/log/sysstat/
# saDD - Binärdaten (DD = Tag des Monats)
# sarDD - Textberichte
Weitere Metriken
Prozess-Statistiken
# Context Switches
sar -w 2 5
# Prozess-Erstellung
sar -c 2 5
Swap-Aktivität
# Swap In/Out
sar -W 2 5
# Bei hoher Aktivität: Speicher-Problem!
Huge Pages
sar -H 2 5
Power Management
# CPU-Frequenz
sar -m CPU 2 5
Alle Metriken
# Alle Statistiken
sar -A 2 5
# Als Bericht
sar -A > system-report.txt
CSV-Export
# CSV für Excel/Datenbank
sadf -d /var/log/sysstat/sa26 -- -u > cpu.csv
# Mit Header
sadf -dh /var/log/sysstat/sa26 -- -u
JSON-Export
# JSON-Format
sadf -j /var/log/sysstat/sa26 -- -u > cpu.json
SVG-Grafiken
# SVG-Diagramm
sadf -g /var/log/sysstat/sa26 -- -u > cpu.svg
iostat
# Disk I/O-Statistiken
iostat -x 2 5
# Ausgabe:
# Device rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
mpstat
# CPU-Statistiken pro Core
mpstat -P ALL 2 5
# Einzelner Core
mpstat -P 0 2 5
pidstat
# Prozess-Statistiken
pidstat 2 5
# Bestimmter Prozess
pidstat -p 1234 2 5
# CPU pro Prozess
pidstat -u 2 5
# Memory pro Prozess
pidstat -r 2 5
# Disk I/O pro Prozess
pidstat -d 2 5
cifsiostat
# CIFS/SMB-Statistiken
cifsiostat 2 5
Praktische Anwendungen
#!/bin/bash
# analyze-yesterday.sh
echo "=== CPU ==="
sar -u -1 | tail -5
echo -e "\n=== Memory ==="
sar -r -1 | tail -5
echo -e "\n=== Disk I/O ==="
sar -d -1 | tail -10
echo -e "\n=== Network ==="
sar -n DEV -1 | tail -10
echo -e "\n=== Load ==="
sar -q -1 | tail -5
Peak-Zeiten finden
# Höchste CPU-Last
sar -u | sort -k3 -rn | head -10
# Höchste Disk-Auslastung
sar -d | sort -k10 -rn | head -10
Täglicher Bericht
#!/bin/bash
# daily-report.sh
DATE=$(date +%Y-%m-%d)
REPORT="/var/log/sysstat/report-$DATE.txt"
echo "System Report for $DATE" > $REPORT
echo "========================" >> $REPORT
echo -e "\n=== CPU Summary ===" >> $REPORT
sar -u >> $REPORT
echo -e "\n=== Memory Summary ===" >> $REPORT
sar -r >> $REPORT
echo -e "\n=== Disk Summary ===" >> $REPORT
sar -dp >> $REPORT
# Email senden
mail -s "Daily System Report $DATE" admin@example.de < $REPORT
Langzeit-Archivierung
# Alte Daten komprimieren
cd /var/log/sysstat
gzip sa[0-9][0-9]
# Rotation konfigurieren
# /etc/logrotate.d/sysstat
Zusammenfassung
| Befehl | Beschreibung |
|---|
| sar -u | CPU-Auslastung |
| sar -r | Speicher |
| sar -d | Disk I/O |
| sar -n DEV | Netzwerk |
| sar -q | Load Average |
| sar -W | Swap-Aktivität |
| sar -A | Alle Metriken |
| Tool | Funktion |
|---|
| sar | Historische Daten |
| iostat | Disk I/O live |
| mpstat | CPU pro Core |
| pidstat | Pro Prozess |
| sadf | Format-Konvertierung |
| Datei | Beschreibung |
|---|
| /var/log/sysstat/saDD | Binäre Tages-Daten |
| /etc/sysstat/sysstat | Konfiguration |
| /etc/cron.d/sysstat | Sammel-Jobs |
Fazit
sysstat ist unverzichtbar für Performance-Analyse. Die automatische Datensammlung ermöglicht Rückblick auf Probleme. sar liefert detaillierte Systemmetriken. Die Integration mit Grafana via sadf erweitert die Visualisierung. Für Echtzeit-Monitoring ist htop oder Prometheus besser geeignet.