Przykłady użycia polecenia SAR do monitorowania systemu w systemie Linux

, Author

System Activity Reporter jest ważnym narzędziem, które pomaga administratorom systemu, aby uzyskać przegląd maszyny serwera ze statusem różnych ważnych metryk w różnych punktach czasu.

Jeśli przypuśćmy, że masz problem z systemem obecnie, Jak niektórzy z twoich klientów nie są w stanie wymienić niektóre dane z bazy danych. Pierwszą rzeczą, którą robi większość administratorów systemów Linux jest przypomnienie sobie tego samego problemu, kiedy poprzednio wystąpił, a jeśli pamiętasz dzień jego poprzedniego wystąpienia, wtedy możesz łatwo porównać wewnętrzne statystyki systemu z aktualnymi statystykami.

SAR jest bardzo pomocny w robieniu dokładnie tego.

Pierwszą rzeczą jaką musimy zrobić jest sprawdzenie i potwierdzenie czy masz zainstalowane narzędzie SAR na maszynie. Może to być sprawdzone przez listę wszystkich rpm’s i znalezienie tego narzędzia.

SAR jest jednym z narzędzi wewnątrz sysstat. Możesz łatwo pobrać i zainstalować go na swoim komputerze bardzo łatwo poprzez YUM. (Ale tak, nie martw się, ponieważ większość dystrybucji jest spakowana z narzędziem sysstatsmiley).

# yum install sysstat

Tak, ale upewnij się, że masz repozytorium epel, rpmformge włączone do instalacji. W przeciwnym razie twój DVD dystrybucji będzie miłym miejscem do szukania pakietu.

SAR (System Activity Reporter) będzie dawał informacje o następujących rzeczach:

  1. Aktywność bufora systemowego
  2. Informacje o wywołaniach systemowych
  3. Informacje o urządzeniach blokowych
  4. Ogólne informacje o stronicowaniu
  5. Informacje o semaforach i alokacji pamięci
  6. UżytkowanieCPU i raport o procesach

Główną rzeczą, którą musimy zrozumieć odnośnie SAR jest to, że, wszystko jest wykonywane przy użyciu crona. Domyślnie w wielu dystrybucjach Linuksa będziesz miał plik o nazwie /etc/cron.d/sysstat.

Zobaczmy jak naprawdę działa SAR.

Jeśli zaczniemy myśleć o monitorowaniu systemu, wtedy narzędzie musi mieć każde dane o różnych aspektach systemu i musi obejmować wszystkie przedziały czasowe. Co oznacza, że system monitorowania musi być w stanie dostarczyć statystyki maszyny dla danego czasu.

Nie ma innego sposobu, niż wzięcie wszystkich metryk i statystyk maszyny w określonym interwale czasowym. Zmniejszenie interwału czasowego zbierania statystyk zwiększy ilość szczegółowych statystyk, które posiadamy (ponieważ będziemy mieli więcej danych o systemie).

SAR robi dokładnie to. sar pobiera statystyki różnych aspektów maszyny w określonym interwale czasowym. Tak więc SAR działa poprzez CRON.

# cat /etc/cron.d/sysstat# uruchamia narzędzie do rozliczania aktywności systemu co 10 minut*/10 * * * * root /usr/lib64/sa/sa1 1 1# generuje dzienne podsumowanie rozliczania procesów o 23:5353 23 * * * root /usr/lib64/sa/sa2 -A

  • Więc z powyższego pliku cron dla SAR widać, że uruchamia on skrypt „sa1” znajdujący się w „/usr/lib64/sa/” co 10 minut
  • A także uruchamia skrypt /usr/lib64/sa/sa2 na koniec dnia około 23.53

Więc pierwszy wpis crona dla SAR(/usr/lib64/sa/sa1) będzie uruchamiany co 10 minut, który z kolei wywoła narzędzie sadc do zbierania statystyk systemowych i przechowywania ich w pliku binarnym (jeden plik na dzień)

A drugi wpis crona zrzuci całą zawartość tego pliku binarnego do innego pliku tekstowego, i usuwa dane starsze niż określona liczba dni, Normalnie 7 dni domyślnie (co jest wymienione w poniższym pliku),

# cat /etc/sysconfig/sysstat# Jak długo przechowywać pliki dziennika (dni), maksymalnie miesiącHISTORY=7

Więc możesz łatwo zmodyfikować ten wpis HISTORY poprzez edycję pliku.

Więc chociaż statystyki systemu są zbierane co 10 minut przez cron(zmodyfikuj cron aby uruchamiał się co 1 minutę dla dokładniejszych informacji) Jeśli chcesz zobaczyć statystyki, wtedy musisz uruchomić komendę jak poniżej.

Wyjście prostego polecenia sar jest jak pokazano poniżej.

12:00:01 AM CPU %user %nice %system %iowait %steal %idle12:01:01 AM all 73.28 0.00 1.25 0.00 0.00 25.4712:02:01 AM all 7.83 0.00 0.44 0.00 0.00 91.7312:03:01 AM all 61.65 0.00 0.70 0.00 0.00 37.6612:04:01 AM all 57.85 0.00 0.82 0.00 0.00 41.3412:05:01 AM all 4.25 0.00 0.41 0.00 0.00 95.3412:06:01 AM all 4.20 0.00 0.22 0.00 0.00 95.5812:07:01 AM all 5.05 0.00 0.33 0.00 0.00 94.6312:08:01 AM all 4.76 0.00 0.06 0.00 0.00 95.1812:09:01 AM all 37.57 0,00 0,37 0,00 0,00 62.0512:10:01 AM all 70.04 0,00 0,80 0,00 0,00 29.1612:11:01 AM all 5.03 0,00 0,12 0,00 0,00 94.84

Można zauważyć na wyjściu, że raportuje mi dane wyjściowe zebranych statystyk dla każdej minuty (co oznacza, że mam mój cron w odstępie 1 minuty), i pokaże szczegóły z całego dnia (lub pokaże szczegóły zebrane do momentu wpisania polecenia).

Zrozumienie wyjścia polecenia SAR

%user: To pokazuje całkowity czas, jaki procesor spędza na różnych procesach YCX5UKN5ZKEJ

%sys: to pokazuje procent czasu spędzonego przez procesor na zadaniach systemu operacyjnego (ponieważ poprzedni użytkownik pokazuje czas spędzony na procesach użytkownika)

%iowait: sama nazwa iowait sugeruje, że jest to czas spędzony przez procesor w oczekiwaniu na urządzenia (wejście i wyjście)

%nice: Większość z was pewnie wie, że użytkownik może zmienić priorytet procesu w linuxie poprzez zmianę wartości nice w linuxie. Ta tabela pokazuje czas spędzony przez CPU dla procesu, którego wartość nice została zmieniona.

%steal: Ta kolumna pokazuje ilość do czasu spędzonego przez procesor (który jest zwirtualizowany), na zasoby z fizycznego procesora

%idle: To sugeruje czas bezczynności spędzony przez procesor.

Domyślnie sar przechowuje wszystkie swoje dane pod /var/log/sa/, a dni są nazwane jak pokazano poniżej.

s01 – dla pierwszego dnia miesiąca

s02 – dla drugiego dnia miesiąca

s03,s04…i tak dalej.

opcja -d w poleceniu sar

Tej opcji -d można użyć do raportowania każdej aktywności związanej z różnymi urządzeniami dołączonymi do systemu (urządzeniami blokowymi). Typowe wyjście polecenia sar z opcją -d jest pokazane poniżej.

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev8-0 1.55 0.00 35.29 22.70 0.01 7.26 1.86 0.2912:02:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00

DEV: ta kolumna nazywa urządzenia na maszynie, zgodnie z numerami major i minor urządzenia blokowego Linuksa. Możesz to sprawdzić wykonując ls -l w katalogu /dev. jak pokazano poniżej.

brw-r----- 1 root disk 8, 0 Nov 16 16:29 sdabrw-r----- 1 root disk 8, 1 Nov 16 16:29 sda1brw-r----- 1 root disk 8, 2 Nov 16 16:29 sda2

w pokazanym powyżej „ls -l” dla „sda”, numer główny to „8”, a numer mniejszy to „0”….Tak więc można łatwo zidentyfikować dysk wymieniony w wyjściu polecenia sar.

tps: tps oznacza transfer na sekundę, więc pokazuje transfer na sekundę na tym konkretnym urządzeniu

rd_sec/s: pokazuje całkowitą liczbę sektorów na tym urządzeniu, które są odczytywane

wr_sec/s: jeśli rd_sec/s to sektory odczytywane na sekundę to oczywiście wr_sec to sektory zapisywane na sekundę.

avgrq-sz: ta kolumna pokazuje średnią.

await: to pokazuje całkowitą liczbę czasu, w którym procesor czekał na żądania dotyczące IO

%util: ta kolumna pokazuje procentowe użycie cpu, kiedy żądanie zostało wygenerowane

Pokazuje użycie pamięci w poleceniu SAR

opcja -r dostępna w poleceniu sar jest bardzo przydatna. Pokazuje ona pamięć, swap, pamięć podręczną itp. w każdym odstępie czasu lub w wymaganym przedziale czasowym.

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad02:30:01 AM 609500 1487652 70.94 242420 777560 1075980 364 0.03 36002:40:01 AM 609500 1487652 70.94 242424 777568 1075980 364 0.03 36002:50:01 AM 609500 1487652 70.94 242424 777592 1075980 364 0.03 36003:00:01 AM 608980 1488172 70.96 242424 777600 1075980 364 0.03 36003:10:01 AM 608584 1488568 70.98 242424 777628 1075980 364 0.03 36003:20:01 AM 608584 1488568 70.98 242424 777648 1075980 364 0.03 360
w powyższych danych wyjściowych większość kolumn jest niewymagająca wyjaśnienia (i większość danych wyjściowych jest w KB).
kbmemfree: pokazuje ilość wolnej pamięci
Kbmemused: używana pamięć
%memused: procent używanej pamięci
kbbuffers: pamięć buforowa używana przez jądro.
kbcached: pamięć buforowana używana przez jądro
wszystkie inne wpisy dla pamięci są swap(free,used,percentage etc)

Jak pobrać metryki z konkretnego dnia używając SAR w linuxie

Jak wspomniano wcześniej wszystkie metryki dla konkretnego dnia są zapisane w sa<dzień miesiąca> mądrze. Więc jeśli chcę znać moje metryki dla 27 dnia miesiąca, mogę to łatwo znaleźć, jak pokazano poniżej.
# sar -f /var/log/sa/sa27Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0,00 0,70 1,12 0,05 95.5502:40:01 AM all 2.56 0,00 0,69 1,05 0,04 95.6602:50:01 AM all 2.64 0,00 0,65 1,15 0,05 95.5003:00:01 AM all 3.27 0,00 0,71 1,12 0,04 94.86
w powyższym poleceniu przekazaliśmy /var/log/sa/sa27 jako argument, ponieważ potrzebowałem statystyk dla tego dnia…przekaż sa<dzień miesiąca>jak wymagasz w powyższym poleceniu

Jak pobrać metryki SAR dla konkretnego czasu w konkretnym dniu

można to osiągnąć poprzez przekazanie kolejnego argumentu, jak pokazano poniżej.

# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.8603:10:01 wszystkie 2,72 1,06 0,75 1,09 0,04 94,33Średnio: wszystkie 2,76 0,21 0,70 1,11 0,04 95.18
W powyższym przykładzie poprosiłem sar o pobranie metryk pomiędzy 2:20:00 a 3:20:00 27 dnia miesiąca
Możesz nawet przekazać dowolną inną opcję metryki wraz z przedziałem czasowym… jak -d lub -r
Czy zauważyłeś ? SAR może dokładnie pokazać nam statystyki maszyny z konkretnego dnia w konkretnym czasie… więc jest o wiele łatwiej zidentyfikować wąskie gardła.
Użycie opcji -A wraz z powyższą komendą pokaże ALL (wszystkie metryki zebrane przez sar).
sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A
Wyjście będzie rozbudowane. i dostaniesz prawie wszystko w sar z tej opcji -A na ekranie!

Pokazanie statystyk sieciowych za pomocą polecenia sar

Polecenie sar pokazuje nawet statystyki sieciowe. Można to zrobić za pomocą opcji -n DEV w poleceniu sar.

# sar -n DEVLinux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s02:30:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.00 0.00 0.0002:30:01 AM eth1 14.45 0.00 1399.34 0.00 0.00 0.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:40:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.0002:40:01 AM eth1 13.96 0.00 1352.87 0.00 0.00 0.00 0.00

IFACE: oznacza nazwę interfejsu karty Nic

rxpck/s: pokazuje całkowitą liczbę pakietów otrzymanych na sekundę

txpck/s:pakiety transmitowane na sekundę

rxcmp/s: pakiety skompresowane otrzymane

txcmp/s: pakiety skompresowane transmitowane

rxmcst/s: pakiety multicasted na sekundę.

Kilka innych Metryk, które mogą być określone przy użyciu sar

-y opcja w sar: może być użyta do określenia szczegółów tty

-X opcja w sar aby uzyskać szczegóły konkretnego procesu. Musisz przekazać pid jako argument do tej opcji.

-n opcja SOCK w sar: ta opcja będzie raportować wszystkie szczegóły dotyczące gniazd.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.