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 (-pdaje czytelne nazwy zamiastdev8-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).