Jak monitorować i rejestrować wykorzystanie pamięci / procesorów w czasie? [Zamknięte]

30

Szukam sposobu na zdiagnozowanie problemów, takich jak śmierć zamiany, w której proces pamięci balonem wypełnia zamianę i zabija całą maszynę (np. Apache).

Już używam kaktusów i mogę skonfigurować nagios (choć wolałbym nie) lub Munin, ale o ile wiem, nie mogą rejestrować użycia poszczególnych programów - tylko ogólny stan.

Wiem, że mogę rzutować skrypt >> do jakiegoś pliku co 30s, ale chciałbym sprawdzić, czy istnieje już dojrzałe rozwiązanie.

Ponownie idealnie byłoby:

  • rejestruj wykorzystanie pamięci procesów co N sekund
  • rejestruj użycie procesora co N sekund
  • obsługa wykresów i historii
  • średnie wsparcia - tak jak mysqld zużył 43% procesora w ostatnim dniu i uśrednił 400 MB pamięci
  • być wolnym i otwartym źródłem

Nazwy procesów nie są i nie powinny być znane z góry - chodzi o to, aby pozwolić monitorować, a następnie rzucić okiem na najlepszych przestępców.

Mój system to Linux (OpenSUSE).

Artem Russakovskii
źródło
Czy chcesz monitorować dowolny proces, który może mieć wyciek pamięci (N największych wieprzowych pamięci), czy też chcesz monitorować zdefiniowany zestaw procesów (np. Serwer Apache i proces Tomcat)? Ten ostatni można wykonać za pomocą prostych wtyczek Nagios lub Cacti. Ten pierwszy jest trudniejszy. Powinieneś to wyjaśnić.
Stefan Lasiewski
Wyjaśniłem to już w poście, ale wyjaśniam jeszcze raz: chcę poznać stan systemu, gdy spada on z powodu śmierci wymiany. Chcę wiedzieć, kto jest najgorszym przestępcą. A przy okazji, nie musi to być wyciek pamięci - tylko napływ ruchu lub cokolwiek, co powoduje duże zużycie pamięci. Zatem ponownie nie należy konfigurować wcześniejszej wiedzy o nazwach binarnych.
Artem Russakovskii
możliwy duplikat - serverfault.com/questions/67234/…
warren
Warren, to zupełnie inne pytanie.
Artem Russakovskii
8
Zamykanie posta o tak dobrej jakości było złą rzeczą, szczególnie po 4 latach wstecz.
Peter mówi, że przywróć Monikę

Odpowiedzi:

16

Jeśli chcesz tylko najlepszych przestępców, rozważ bieganie topze stosunkowo długim odstępem czasu (60 sekund plus) w trybie wsadowym. topAby schwytać najlepszych przestępców na wielu zasobach, może być potrzebny więcej niż jeden bieg. Skonfigurowałem systemy, aby działały topprzez kilka cykli, gdy zasób był nadmiernie wykorzystywany.

Rozważ uruchomienie sarw trybie wsadowym, aby uchwycić wykorzystanie zasobów. Zdaję sobie sprawę, że jest to oparte na serwerze, ale przydatne jest określenie czasu wystąpienia problemów.

Uruchom munini włącz powiadomienia. To może dać ci szansę na wejście i obserwowanie awarii serwera. Być może uda Ci się rozwiązać problem, zanim spadnie.

W przypadku wycieków pamięci ciągły wzrost wykorzystania wymiany wskazuje na problem. Kiedyś widziałem, jak serwer powoli umiera przez kilka dni. Usługą problemową był program monitorujący inne procesy pod kątem wycieków pamięci. Administrator systemu nalegał, aby wzrost użycia wymiany nie stanowił problemu, aż do momentu, gdy serwer przestał odpowiadać.

Może się okazać, że cfenginewykrycie anomalii może zostać użyte do uruchomienia skryptu w celu przechwycenia stanu systemu, gdy coś pójdzie nie tak. Możesz potrzebować wielu informacji oprócz samych procesów wykorzystujących najwięcej zasobów. W przypadku nagłego napływu użytkowania możesz potrzebować listy połączeń sieciowych (według adresu, a nie nazwy). Przydatne jest również użycie pamięci.

BillThor
źródło
12

sysstat jest stworzony właściwie do twoich celów.

Peter Eisentraut
źródło
Od tego powinieneś zacząć. Nie możesz wiedzieć, od czego zacząć egzamin, dopóki nie wiesz, gdzie możesz mieć największe szanse. Sysstat jest tym, czego szukasz (ma również ładne wykresy). Gdy dowiesz się więcej, użyj systemtap.
Allen,
9

Użyłem już na szczycie:

http://freshmeat.net/projects/atop/

„Atop to pełnoekranowy monitor wydajności ASCII, który jest w stanie raportować aktywność wszystkich procesów (nawet jeśli procesy zakończyły się w tym przedziale czasu), codzienne rejestrowanie aktywności systemu i procesu w celu analizy długoterminowej, podkreślając przeciążenie zasobów systemowych za pomocą kolory itp. W regularnych odstępach czasu pokazuje aktywność na poziomie systemu związaną z procesorem, pamięcią, zamianą, dyskami i warstwami sieci, a dla każdego aktywnego procesu pokazuje wykorzystanie procesora, wzrost pamięci, priorytet, nazwę użytkownika, stan, i kod wyjścia ”.

NinjaCat
źródło
atop wydaje się nie mieć raportu, który dostarczyłby mi tego, czego chciałem. Proszę popraw mnie jeżeli się mylę.
Artem Russakovskii
Dba o twoje pierwsze dwa punkty wypunktowania (pamięć / procesor według procesu). Możesz użyć biblioteki, aby zebrać te statystyki, a następnie zrobić historię / wykresy na podstawie danych.
NinjaCat
4
@ artem-russakovskii - Domyślnie na szczycie loguje dane do pliku co dziesięć minut. Jeśli Twój serwer ulegnie awarii o 3:45, możesz zacząć od z atop -r log_filename, naciśnij, maby przejść do widoku wykorzystania pamięci na proces, a następnie naciśnij, taby przejść w odstępach 10-minutowych do 3:40. Możesz przeczytać więcej o podstawach korzystania z atop na lwn.net/Articles/387202 i zobaczyć przykład identyfikowania wycieku pamięci na atoptool.nl/download/case_leakage.pdf
sciurus
6

Czy próbowałeś zebrać?
Jest bardzo wydajny i konfigurowalny.
Ma wiele wtyczek i może być zintegrowany z nagios.

http://collectd.org/features.shtml

PiL
źródło
Zebrane jest bardzo lekkie, niezbyt trudne do skonfigurowania i pozwoli ci zobaczyć wzrost pamięci / zamiany w czasie. Nie będzie to jednak wskazywać na obrażające procesy - ale być może będziesz w stanie zauważyć i złapać wzrost pamięci w czasie i ręcznie sprawdzić sytuację top.
Marius Gedminas
1
Muszę powiedzieć, że nie wypróbowałem tej wtyczki, ale czytam z instrukcji wtyczki procesu kolekcjonowanego: „Jeśli procesy zostaną wybrane, gromadzone są następujące informacje. Wszystkie te informacje są agregowane według nazwy procesu. Wielkość segmentu rezydenta, Używany czas użytkownika i systemowy, Liczba procesów o tej nazwie, Liczba wątków (zsumowanych we wszystkich procesach), Liczba poważnych i drobnych błędów strony. Szorstkie liczby we / wy (liczba zapisanych i odczytanych bajtów do syscalls przez proces)
PiL
Możesz wybrać procesy lub według nazwy lub wyrażenia regularnego.
PiL
2

Centreon na szczycie Nagios, Nagios w połączeniu z NRPE. Następnie możesz pisać niestandardowe skrypty, aby raportować dane w DOWOLNYM formacie, który chcesz NRPE. Nagios następnie sonduje dane ze zdalnych serwerów za pomocą NRPE, a Centreon tworzy ładny wykres i dodaje ton elastyczności dla użytkownika. Używamy go na stronie http://beyondhosting.net. Mam już szablon kontenera VZ z konfiguracją centreon + nagios, jeśli chcesz.

Centrum wykresów buduje hostthenpost.org/tyler/2010-07-23_1719.png

VisBits
źródło
Chciałbym gotowe rozwiązanie do zgłaszania rzeczy, o których wspomniałem, a przede wszystkim procesów zajmujących najwięcej pamięci. Nie jestem też pewien, czym jest VZ.
Artem Russakovskii
2

nmon to świetne narzędzie, które robi to, czego szukasz. Opracowany dla systemów AIX i Linux. Tworzy mnóstwo szczegółowych danych wyjściowych i jest łatwy do umieszczenia w raportach. Jeśli google go, istnieje wiki IBM, który ma wiele dokumentacji i dodatkowe narzędzia do analizowania danych.

mattcaffeine
źródło
2

Gęstość serwera robi dokładnie to, co opisujesz.

Używam go na jednym z naszych serwerów produkcyjnych i jestem z tego bardzo zadowolony. Jego najważniejszą cechą jest możliwość przeglądania wykresów, klikania piku i sprawdzania zużycia procesora / pamięci przez serwer w danym momencie, w tym wszystkich uruchomionych procesów. Nazywają to migawkami .

Ciągle się poprawia. Jedną z najnowszych funkcji jest wykrywanie anomalii , które umożliwia łatwe wykrywanie anomalii. Możesz także ustawić różne progi

Aron Rotteveel
źródło
1
Ach, zapomniałem wspomnieć o małej części, w której wolałbym, aby była darmowa i, jeśli to możliwe, open source. Ponad 100 USD na serwer to nie to, co chcę wydać (i mam tylko 1 serwer, a nie 5). serverdensity.com/pricing
Artem Russakovskii
2

Odpowiedzi sugerowane, kiedy zadałem podobne pytanie :

Icapan powiedział :

Munin to najprostszy sposób na uzyskanie wykresów czasu pracy przy minimalnym wysiłku w instalacji i konfiguracji. Używam również atop do zagregowanego użycia procesora przez jakiś proces, ale nie o to prosiłeś.

David Spillet powiedział :

Używam funkcji collectd do rejestrowania obciążenia systemu wśród wielu innych parametrów. Przechowuje dane w sklepach RRD , które można wykreślić i przeanalizować w inny sposób za pomocą wielu dostępnych narzędzi i skryptów. Używam zmodyfikowanej wersji tego skryptu do tworzenia wykresów ( przykładowe dane wyjściowe ).

Collectd ma wtyczki do monitorowania wielu rzeczy (wszystko, o co często się pyta i kilka rzeczy na górze), a tworzenie własnych nie powinno być trudne, jeśli potrzebujesz czegoś specjalistycznego, więc tworzy bardzo elastyczne narzędzie. Konfigurowanie wykresów w pliku rrd.cgi jest procesem bardzo ręcznym, choć nie trudnym, chociaż możesz znaleźć wygodniejsze narzędzie do pracy z plikami RRD obsługiwanymi przez collectd.

Możesz także sprawdzić Nagios lub OpenNMS .

królikarnia
źródło
1

Munin zrobi wszystko, czego potrzebujesz po wyjęciu z pudełka, nie wymagając Nagios ani żadnego innego narzędzia. Dostępne są RPM dla OpenSUSE.

gareth_bowles
źródło
Czy robi to za pomocą wtyczki. Jeśli tak, to jaki? Nie udało mi się znaleźć takiego, który nie wymaga wstępnie skonfigurowanej listy procesów do monitorowania.
Artem Russakovskii
Z pierwotnego pytania nie wynikało jasno, że nie chcesz monitorować wstępnie skonfigurowanej listy procesów - czy możesz podać więcej szczegółów na temat swoich wymagań?
gareth_bowles
Wyjaśnienie: Nazwy procesów nie są i nie powinny być znane z góry - chodzi o to, aby pozwolić mu monitorować, a następnie spojrzeć na najlepszych przestępców.
Artem Russakovskii
1

Może stary dobry OProfile robi to, czego potrzebujesz? Jest to profiler na poziomie systemu oparty na jądrze, z niewielkim (kilku procentami) narzutem.

Jest też doskonały skrypt Perla, PSMon , który pozwala ustawić wszystkie rodzaje limitów procesora / pamięci. Jeśli zostaną przekroczone, psmon zarejestruje błąd i / lub zabije proces obrażający.

Ten ostatni nie generowałby żadnych raportów profilowania, ale jeśli zdecyduje się zabić ten sam proces w kółko, prawdopodobnie znalazłeś paskudnego drania, którego szukałeś. :-)

Janne Pikkarainen
źródło