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 sysstat).
# 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:
- Aktywność bufora systemowego
- Informacje o wywołaniach systemowych
- Informacje o urządzeniach blokowych
- Ogólne informacje o stronicowaniu
- Informacje o semaforach i alokacji pamięci
- 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
Jak pobrać metryki z konkretnego dnia używając SAR w linuxie
# 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
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
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.