2013-06-06 12 views
8

Jak przeprowadzić analizę porównawczą procesu w systemie Linux? Potrzebuję czegoś takiego jak "góra" i "czas", złożonego dla określonej nazwy procesu (jest to program wieloprocesowy, w którym zostanie podanych wiele PIDów)?Jak monitorować proces w procesorze, pamięci i czasie Linuksa?

Co więcej, chciałbym mieć spisek na czas pamięci i wykorzystania procesora dla tych procesów, a nie tylko ostateczne liczby.

Wszelkie pomysły?

Odpowiedz

7

Poniżej znajdują się narzędzia do monitorowania systemu Linux

  1. poleceń systemowych jak top, free -m, vmstat, iostat, iotop, sar, netstat itp Nic nie przychodzi blisko tych użyteczności linux podczas debugowania problem . Polecenie to daje jasny obraz, który wchodzi do twojego serwera. Agent wykonuje wszystkie polecenia wymienione w # 1 (również zdefiniowane przez użytkownika), a wyjścia tych poleceń są dostępne w pięknym interfejsie internetowym. To narzędzie jest przydatne podczas debugowania na setkach serwerów, ponieważ instalacja jest prosta. I to ZA DARMO:
  2. Nagios: Jest matką wszystkich narzędzi monitorowania/ostrzegania.Jest to bardzo duże dostosowanie, ale bardzo trudne do ustawienia dla początkujących. Istnieją zestawy narzędzi zwanych Nagios wtyczek, które obejmuje prawie wszystkie ważne Linux metryki
  3. Munin
  4. Server Density: A cloudbased płatną usługę, która gromadzi ważne dane Linux i daje użytkownikom możliwość pisania własnych wtyczek.
  5. Nowa relikwia: Kolejna dobrze znana usługa monitorowana.
  6. Zabbix
+0

MMonit to koniecznością. Pojedynczy monit jest bezpłatny, klastra MMonit jest płatny. – erm3nda

13

Zazwyczaj zrzucam prosty skrypt do tego typu pracy.

Zapoznaj się z dokumentacją jądra dla systemu plików proc (Google 'linux proc.txt').

Pierwsza linia /proc/stat (Sekcja 1.8 w proc.txt) da łączne statystyki użycia procesora (tj. Użytkownik, ładny, system, bezczynność, ...). Dla każdego procesu plik /proc/$PID/stat (Tabela 1-4 w proc.txt) zawiera obie statystyki dotyczące użycia procesora oraz statystyki użycia pamięci (patrz rss).

Jeśli szukasz trochę informacji, znajdziesz tam wiele szczegółowych informacji o tych plikach oraz wskazówki do bibliotek/aplikacji/fragmentów kodu, które pomogą Ci uzyskać/uzyskać wartości, których potrzebujesz. Mając to na uwadze, skupię się na strategii wysokiego szczebla.

Dla statystyk procesora użyj ulubionego języka skryptowego, aby utworzyć plik wykonywalny, który pobiera zestaw identyfikatorów procesu do monitorowania. W ustalonym odstępie czasu (np. 1 sekunda) odpytuj/oblicz sumy skumulowane dla każdego procesu i systemu jako całości. Podczas każdego interwału sondowania, zapisz wszystkie wyniki w jednym wierszu na standardowe wyjście.

Dla statystyk pamięci, napisz podobny skrypt, ale po prostu zapisz użycie pamięci procesowej. Pamięć jest nieco łatwiejsza, ponieważ bezpośrednio uzyskujemy wartości chwilowe.

Uruchom ten skrypt na czas trwania testu, przekazując zestaw identyfikatorów procesów, które chcesz monitorować i przekierowując jego wyniki do pliku dziennika.

./logcpu $(pidof foo) $(pidof bar) > cpustats 
./logmem $(pidof foo) $(pidof bar) > memstats 

importować zawartość tych plików do arkusza kalkulacyjnego (w niektórych zastosowaniach jest to tak proste, jak kopiuj/wklej). W przypadku procesora są to wartości chwilowe, ale mają wartości skumulowane, więc aby uzyskać te wartości, trzeba wykonać kilka drobnych arkuszy kalkulacyjnych (jest to po prostu delta "t (x + 1) - t (x)"). Oczywiście, możesz napisać deltę na swoim rejestratorze procesora, ale poświęcisz nieco więcej czasu na pisanie skryptu.

Wreszcie użyj arkusza kalkulacyjnego, aby wygenerować ładną fabułę.

+0

docenić widząc, że/proc/$ PID zawiera wszystkie te dane monitorowania – Paul