sar

Zbiera i wyświetla historyczne oraz bieżące statystyki wydajności systemu.

sar (System Activity Reporter) to narzędzie z pakietu sysstat, które zbiera i pokazuje statystyki wydajności systemu: zużycie CPU, pamięci, dysków, sieci czy kolejek procesów. Jego największa zaleta to dane historyczne — demon zbierający próbki w tle (zwykle przez cron albo timer systemd) zapisuje je do plików w /var/log/sa/, więc po nocnej awarii możesz spokojnie cofnąć się w czasie i zobaczyć, co działo się o 3:17, zamiast zgadywać. To trochę jak czarna skrzynka samolotu, tylko dla Linuksa.

Składnia i najważniejsze opcje

Podstawowa forma: sar [opcje] [interwał [liczba]]

  • -u — zużycie procesora (domyślne, gdy nie podasz innej opcji): %user, %system, %iowait, %idle.
  • -r — wykorzystanie pamięci RAM (wolna, użyta, bufory, cache).
  • -S — wykorzystanie przestrzeni swap.
  • -b — aktywność I/O: transfery na sekundę, odczyty i zapisy w blokach.
  • -d — statystyki per urządzenie blokowe (dyski).
  • -n DEV — statystyki sieciowe per interfejs (pakiety, bajty, błędy).
  • -q — długość kolejki uruchomieniowej i load average.
  • -f plik — czytaj dane z konkretnego pliku, np. /var/log/sa/sa15.

Przykłady użycia

  • sar 1 5 — pokazuje zużycie CPU co sekundę, pięć razy. Szybki rzut oka na to, czy procesor się dusi w czasie rzeczywistym.
  • sar -r 2 10 — monitoruje pamięć co 2 sekundy, dziesięć próbek. Przydatne, gdy szukasz wycieku pamięci.
  • sar -n DEV 1 3 — ruch sieciowy na wszystkich interfejsach co sekundę. Sprawdzisz, czy łącze jest wysycone.
  • sar -d -p 5 6 — aktywność dysków co 5 sekund (-p daje czytelne nazwy zamiast dev8-0).
  • sar -u -f /var/log/sa/sa15 — wyświetla historyczne zużycie CPU z 15. dnia miesiąca. Klasyka przy analizie wczorajszej awarii.

Częste błędy i pułapki

Najczęstszy zgrzyt: „Cannot open /var/log/sa/saXX: No such file. To nie błąd sar — po prostu zbieranie danych nie jest włączone. Po instalacji sysstat musisz włączyć usługę (systemctl enable --now sysstat) i często zmienić ENABLED="true" w /etc/default/sysstat (Debian/Ubuntu) albo /etc/sysconfig/sysstat (RHEL/Fedora). Bez tego dostaniesz tylko bieżące próbki, gdy sam podasz interwał.

Druga pułapka: sar bez interwału pokazuje dane z dzisiejszego pliku, a nie z ostatniej minuty — łatwo pomylić zrzut historyczny z odczytem na żywo. Pamiętaj też, że domyślna rozdzielczość zbierania to zwykle 10 minut, więc krótkich szpilek obciążenia w archiwum nie zobaczysz. I drobiazg: ustaw LC_ALL=C albo LANG=C, bo przy niektórych lokalizacjach sar potrafi narzekać na format daty.

Powiązane komendy: iostat, mpstat, pidstat, vmstat, top, sadf (eksport danych sar do CSV/JSON).