Przejdź do głównej zawartości

Linux RH442 - Narzędzia monitorujące stan systemu. Vmstat, sar, iostat, mpstat.

Ważnym elementem kontroli systemu i jego działania jest odczyt aktualnych parametrów poszczególnych elementów sprzętowych takich jak ilość pamięci i jej aktualne zużycie. Nie mniej ważnym parametrem jest również CPU jak i zasoby dyskowe, ilość otwartych plików i uruchomionych procesów to wszystko wpływa na sprawne działanie środowiska Linux. Dobrze jest więc mieć możliwość szybkiego podglądu aktualnego stanu tych parametrów, co możemy zrobić przez istniejące w podstawowej instalacji systemu narzędzia. Mając wgląd w aktualne poziomy poszczególnych elementów administrator może podjąć odpowiednie działania mające na celu zabezpieczenie środowiska przed przeciążeniem umożliwiając jego nieprzerwaną pracę na odpowiednim poziomie. 


VMSTAT - Virtual Memory Statistics

Vmstat jest jednym z najczęściej używanych podstawowych narzędzi mających na celu diagnozowanie tego co dzieje się z pamięcią systemu. Narzędzie to wchodzi w skład paczki "procps", w której to znajdują sie również inne znane narzędzia takie jak "free" czy popularny "top". 

Polecenie vmstat użyte bez żadnych parametrów w wyniku wyświetli średnie wartości mierzone od uruchomienia systemu. W raz z vmstat mamy możliwość zastosowania dwóch parametrów, z których jeden określa przedział czasowy , którego ma dotyczyć pomiar wskazywany w sekundach. Statystyki dotyczące pamięci domyślnie przedstawiane są w KiB jednak możemy ustawić to na inną wartość stosując drugi przełącznik. Do wyboru mamy kb, MB lub MiB. By zmienić jednostkę w jakiej wyświetlane będą statystyki dodajemy odpowiednio: 

-S k lub -S m lub -S M 

Przykładowe wyniki mogą wyglądać następująco: 

Przykład działania polecenia vmstat
Pierwsza linia jaką wyświetla vmstat jest obejmuje wartości średnie od startu systemu. Jeżeli chcemy wykonać kilka  pomiarów w określonych odstępach czasu - czas pomiędzy kolejnymi pomiarami podajemy w sekundach. Możemy również pozbyć się linii zawierających nagłówki tak by otrzymane dane mogły być bezpośrednio poddane obróbce w innym narzędziu. 

vmstat 10 | tail -n +4 

Powyższe polecenie wyświetli informacje dotyczące pamięci od upływu ostatnich 10 sekund dając kolejny pomiar co 10 sekund bez danych nagłówkowych. 

Przykład działania vmstat bez nagłówków co 10 sekund
Wracając do nagłówków informacyjnych poszczególne z nich oznaczają : 

proces
-r                   - ilość procesów oczekujących na uruchomienie
-b                  - ilość procesów w awaryjnym stanie uśpienia 

memory 
- swpd            - ilość pamięci znajdującej się aktualnie w obszarze swap 
- free              - ilość wolnej, dostępnej pamięci 
- buff              - ilość pamięci znajdującej zbuforowanej
- cache           -  ilość pamięci tymczasowej cache

swap 
- si                  - ilość stron znajdujących się w swap w ciągu jednej sekundy 
- so                 - ilość stron wychodzących z obszaru swap w ciągu jednej sekundy

io (I/O statystyki bloków)
- bi                  - ilość odczytanych bloków na sekundę
- bo                 - ilość zapisanych bloków na sekundę 

system
- in                   - ilość przerwań na sekundę 
- cs                  - ilość zmian kontekstów na sekundę

cpu 
- us             - Procentowy udział czasu pracy procesora na wykonywaniu procesów użytkowników
- sy              - Procentowy udział czasu pracy procesora na wykonywaniu zadań systemowych (jądra)
- id              - Procentowy udział czasu procesora w stanie bezczynności 
- wa             - Procentowy udział czasu procesora spędzony na oczekiwaniu pełnego odczytu bloków
- st              - Procentowy udział czasu procesora z uruchomionymi procesami z uwzględnieniem 
                      wirtualizacji


Jeżeli chcemy wykonać określoną ilość pomiarów np.: 20 pomiarów w odstępach 5 sekund polecenie będzie miało postać : 

vmstat 5 20 

Przykładowe działanie polecenia vmstat co 5 sekund 20 próbek

SAR - The System Activity Reporter

Polecenie sar jest multi narzędziem należącym do pakietu sysstat. Sar posiada dwa tryby pracy. Narzędziem tym możemy odczytywać wyniki pracy z crona co 10 min oraz możemy również zbierać aktualne dane systemowe. Zadania crona znajdują się w /etc/cron.d/sysstat , a wywoływane są z /usr/lib64/sa/sa1 oraz /usr/lib64/sa/sa2 dane zbierane są przez /usr/lib64/sa/sadc oraz sar. Zebrane informacje przechowywane są w /var/log/sa/saxx gdzie xx są to dwie cyfry oznaczające miesiąc i dzień. 

Do uzyskania najlepszych rezultatów wykorzystując sar należy się upewnić, że zmienna $LANG została prawidłowo ustawiona i umożliwia tworzenie raportów ze zgodnym i czytelnym formatem czasu. Przykładowo jeżeli chcemy posortować dane po pierwszej kolumnie to en_US.UTF-8 lokalne pozycje 01:00:00 PM znajduje się przed 02:00:00 PM. Takie sortowanie może zakrzywiać punkty danych i zniekształcać wykres. Rekomendowanym ustawieniem jest korzystanie z $LANG ustawionego na C. W związku z sar łatwo nadpisać zmienną w następujący sposób: 

LANG=C sar -q 

Wynik powyższego polecenia wygląda następująco 

$ LANG=C sar -q
Linux 2.6.9-67.ELsmp (station1)    07/15/13

00:00:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
00:10:01            1       984      0.53      0.34      0.30
00:20:01            0       984      0.10      0.20      0.24

Dla uproszczenia można zastosować alias dla polecenia sar w postaci : 

alias sar='LANG=c sar'

Sar może zostać użyty do odczytu i analizy plików logów z użyciem przełącznika "-f". 

$ sar -q -f /var/log/sa/sa14
Linux 2.6.9-67.ELsmp (zenon)    07/14/2013

12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:10:01 AM         0      1005      0.64      0.82      0.77
12:20:02 AM         2      1005      0.97      0.93      0.84
12:30:01 AM         1      1008      0.78      1.07      0.97
12:40:01 AM         0      1005      0.93      0.96      0.93

Przykładowe użycia sar 

Zadanie 1 

Skonfigurowanie widoku sar w formacie 24 godzinnym.

# echo "alias sar='LANG=C sar'" >> /etc/bashrc 

Zadanie 2 

Raport utylizacji CPU 

$ sar -P 0
Linux 2.6.9-67.ELsmp (station1)    07/15/2013

12:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle
12:10:01 AM         0      4.58      0.86      2.58      0.02     91.96
12:20:01 AM         0      3.33      1.13      0.67      0.04     94.82
12:30:01 AM         0      2.72      1.08      0.39      0.01     95.81
12:40:01 AM         0      2.62      1.09      0.58      0.01     95.70
12:50:01 AM         0      2.72      1.05      0.87      0.01     95.35

Zadanie 3 

Raport dotyczący I/O oraz transferu 

$ sar -b
Linux 2.6.9-67.ELsmp (station1)    07/15/2013

12:00:01 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM      3.68      0.08      3.60      6.21     74.87
12:20:01 AM      9.08      0.66      8.41     76.12    106.20
12:30:01 AM      2.46      0.00      2.46      0.00     45.38
12:40:01 AM      8.42      0.00      8.42      0.00    100.19
12:50:01 AM      2.49      0.00      2.49      0.00     47.96
01:00:01 AM      8.90      0.00      8.90      0.00    103.49

Zadanie 4 

Raport wykorzystania karty sieciowej z aktualnego pliku logu 

$ sar -n DEV | less
Linux 2.6.9-67.ELsmp (station1)    07/15/2013

12:00:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM        lo      4.32      4.32   8256.65   8256.65      0.00      0.00      0.00
12:10:01 AM      eth0     18.16      0.00   2478.70      0.00      0.00      0.00      0.00
12:10:01 AM      eth1     69.16     97.91  50454.20  48066.97      0.00      0.00      0.00
12:10:01 AM      eth2     35.89      0.04   6954.82      2.78      0.00      0.00      0.02

iostat i mpstat 

Tak jak poprzednik sar iostat i mpstat znajdują się w pakiecie sysstat. Iostat ma zastosowanie w diagnozowaniu czy wszystko w porządku z naszymi zasobami dyskowymi, co w praktyce oznacza monitorowanie naszych urządzeń blokowych. Saturacja dysków twardych jest bardzo niepożądana  przez co nasz system może działać zdecydowanie wolniej i dzięki iostat możemy w szybki sposób to wykryć i odpowiednio zareagować. 


Działanie polecenia iostat 



W wyniku widzimy dane dla naszego urządzenia ‘sda‘.
  • rrqm/s – ilość skolejkowanych żądań odczytu z dysku na sekundę
  • wrqm/s – ilość skolejkowanych żądań zapisu na dysk na sekundę
  • r/s – ilość odczytów z dysku na sekundę
  • w/s – ilość zapisów na dysk na sekundę
  • rsec/s – ilość sektorów czytanych na sekundę
  • wsec/s – ilość sektorów zapisywanych na sekundę
  • avgrq-sz – średni rozmiar w sektorach
  • avgqu-sz – średnia wielkość kolejki oczekujących żądań dostępu do dysku
  • await – średni czas dostępu do dysku (z uwzględnieniem kolejki) w milisekundach
  • svctm – średni czas obsługi żądania w milisekundach
  • %util – procentowe zużycie procesora potrzebne do obsłużenia żądania, jeśli wynosi 100% dochodzi do sytuacji saturacji zasobów

Jeśli wskazania iostat pokazują utylizację na poziomie 80-100% należy znaleźć przyczynę i ją wyeliminować, sytuacja ta oznacza, że nasz procesor spędza głównie czas w oczekiwaniu na dane a nie na ich przetwarzaniu.

Zadaniem mpstat jest wyświetlenie informacji na temat obciążenia procesorów (CPU) w systemie. W systemach w jakich zastosowano procesory wielordzeniowe każdy rdzeń będzie widziany jako odrębna jednostka. Zazwyczaj polecenie to wykorzystuje się z następującymi przełącznikami : 

mpstat -P ALL

Działanie polecenia mpstat

Możłiwe jest również zapisanie analizy z określonego czasu do pliku co wykonujemy w następujący sposób:

# mpstat -P ALL 1 60 > /root/mpstatanaliza.txt




Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości