W Linuksie istnieje wiele narzędzi do monitorowania systemu. Jeżeli chcemy sprawdzić zużycie pamięci czy obciążenie procesora sięgamy po program top. Nasłuchujące porty sprawdzamy poleceniem netstat. Często korzystamy z takich rozwiązań jak vmstat czy free. A teraz wyobraźmy sobie jedno narzędzie, które potrafi monitorować te wszystkie parametry.

Takim rozwiązaniem jest program nmon. Aplikacja znana jest administratorom systemów AIX. Dnia 27 lipca 2009 firma IBM udostępniła źródła programu na licencji GPL. Od tego momentu, program dostępny jest również na Linuksa.

nmon

W jednym oknie, konsoli aplikacja potrafi pokazać procesory, użycie pamięci, obciążenie sieci, dyski (wykresy obciążenia), zajętość systemu plików, top procesy, zasoby, informacje o systemie i wiele innych. Aplikację obsługuje się poprzez klawiaturę. Wciskając odpowiedni guzik, włączamy lub wyłączamy wykresy.

h = pomoc
    r = bardzo ogólne informacje o systemie
    c = obciążenie CPU per rdzeń
    l = obciążenie CPU w długim czasie, wykres
    m = statystyki pamięci
    V = pamięć wirtualna oraz SWAP
    k = ogólne liczniki Kernela
    n = statystyki interfejsów sieciowych
    N = statystyki NFS
    d = wykresy I/O
    D = statystyki I/O
    o = mapa obciążenia I/O
    p = statystyki partycji
    b = tryb czarno-biały
    . = tryb minimalny, tzn. tylko aktywne dyski i procesy

Program może pracować w dwóch trybach. Pierwszy z nich to live mode, kiedy na bieżąco pokazuje dane na konsoli. W drugim trybie zbiera on dane i zapisuje do pliku. W tym drugim przypadku aplikacje należy uruchomić z parametrami np.: nmon -t -f -s2 -c 30.

Parametr -t określa, że chcemy zbierać informacje o procesorach, -f nakazuje zapisać dane do pliku, -s2 jest informacją o tym, że dane będą zbierane co 2 sekundy, a -c 30 określa, że zostanie wykonane 30 pobrań danych. Aplikacja zostaje uruchomia w tle.

root@muszelka:/tmp# ps -efww | grep nmon
root      4576     1  0 06:36 pts/1    00:00:00 nmon -t -f -s2 -c 30
root      4612  4253  0 06:37 pts/1    00:00:00 grep nmon

Wygenerowany zostanie w ten sposób plik muszelka_100602_0627.nmon, który można poddać dalszej obróbce przez np. nmonanalyser. Jest to arkusz kalkulacyjny, który zawiera Makra. Przetwarzają one plik nmona i generują wykresy.

Wykres wygenerowany przez nmon Analyser

Przykładowy wykres i dane dostępne są w pliku muszelka-nmon.ods.

  • Greg

    Nie znałem tego rozwiązania wcześniej. Faktycznie fajne. Zamiast klepać tony poleceń odpalasz jedno i masz wszystko.

    A jak zrobić żeby po uruchomieniu od razu odpalał konkretne wykresy?

  • szczerb

    Całkiem ciekawe narzędzie, ale raczej do analizowania obciążenia "jakiejś maszyny". Tak ad hoc za wygodniejsze uważam odpalenie top'a, iotop'a itp zależnie od potrzeby w danej chwili (np co mi zjada pamięć, ubije dziada :D)

  • Greg

    Od topa zdecydowanie lepszy jest htop. W takim zLinux, jak jakiś proces zaczyna za mocno utylizować procesor to system sam go ubije.

  • Tak da się. Trzeba ustawić zmienną NMON i przypisać jej jakie ma uruchomić wykresy. Na przykład:

    <pre>root@muszelka:/tmp# export NMON=ckmd

    root@muszelka:/tmp# nmon</pre>

  • Pablo

    O tak! Takiej aplikacji potrzebowałem. Ciekawe jak bardzo ona obciąża system. Top i htop czasem potrafią dociążyć maszynę, która i tak jest zawalona.

  • Infro

    Głupie pytanie: co zrobić żeby mieć te kolorowe wykresy? U mnie zamiast nich wyświetlają się paski złożone z liter.

  • Odpalasz to przez Putty zdalnie? Pewnie masz złe kodowanie.

  • Wydaje mi się, że jest to złe kodowanie konsoli. A instalowałeś z repozytorium, czy sam kompilowałeś? Pokaż screenshota.

  • Greg

    Zarzuć zrzutem ekranu. Może to nie jest kodowanie, tylko coś innego.

  • Infro

    Ściągnąłem odpowiednią wersję (nmon_x86_64_12a.zip) ze strony http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
    W archiwum jest binarka, którą uruchomiłem.
    Zrzut masz tutaj:
    http://img52.imageshack.us/img52/4757/nmon.png
    Kodowanie to UTF-8

  • A nie masz tego w repozytorium?

  • Infro

    Odpalam lokalnie, na OpenSUSE 11.2

  • Infro

    Po samodzielnej kompilacji działa. Trochę śmiesznie, bo na kolorowych paskach nadal są widoczne litery, ale jednak jest to już bardziej przejrzyste.
    Przymierzam się właśnie do inżynierki nt. serwera SSH i myślę, że będzie to ciekawe narzędzie do monitorowania pracy systemu.

  • Infro

    W repo szukałem w pierwszej kolejności — niestety nie było. W openSUSE Build Service też nie znalazłem. Ściągnąłem właśnie źródło, może jeśli sam skompiluję, zadziała.

  • Powodzenia w pisaniu pracy! Jak coś to służymy pomocą i materiałami jakbyś chciał jakieś dane z serwerów czy coś.

  • Pingback: Kaka' blog & Debian GNU/Linux » Blog Archive » Nmon – wszystkie statystyki systemowe w jednym miejscu()