Terminal pogryzł człowieka: nmon
Monitorowanie zasobów komputera z poziomu tekstowej linii komend ma wielowiekową tradycję i niebagatelne znaczenie dla administratorów serwerów. Ale natłok informacji o naszej maszynie nie jest zarezerwowany jedynie dla wtajemniczonych, każdy może w większym lub mniejszym stopniu sprawdzić co w układach scalonych piszczy. Osiągnąć możemy to za pomocą wielu narzędzi, ale skoro wspomnieliśmy o terminalu, to dlaczego by nie przetestować nmon. Ten sympatyczny program wśród wielu ciekawostek ma jeszcze jedną unikatową funkcję – może działać w tle i zapisywać statystyki zużycia zasobów naszego komputera. A to jest naprawdę ciekawe.
Nmon wbrew pozorom i na przekór trendom nie jest kolejnym klonem polecenia top, lub podrasowanym ps. W niebanalnej oprawie interfejsu popełnionego przy współudziale ncurses potrafi wyświetlić nam zestaw wielu przydatnych informacji o naszej maszynie. Na przykład? A na przykład:
- informacje o kernelu, procesorze, systemie,
- zużycie mocy CPU,
- wykorzystanie pamięci konwencjonalnej,
- wykorzystanie pamięci wirtualnej,
- informacje o dyskach, partycjach, systemie plików,
- operacje I/O,
- wykorzystanie urządzeń sieciowych,
- NFS,
- lista procesów.
I na tym nie koniec. Jak sam autor podsumowuje próbę udokumentowania możliwości programu – „Ha ha ha ha – you are joking right :-)”. Całkiem nieźle, prawda? Na dodatek większość z tych danych nmon będzie w stanie wyświetlić nam na jednym ekranie.
No dobrze, program jest przebogaty w opcje, ale jakie? Nmon może zostać uruchomiony z podaniem odpowiednich parametrów:
$# nmon -h Hint: nmon [-h] [-s <seconds>] [-c <count>] [-f -d <disks> -t -r <name>] [-x] -h FULL help information Interactive-Mode: read startup banner and type: "h" once it is running For Data-Collect-Mode (-f) -f spreadsheet output format [note: default -s300 -c288] optional -s <seconds> between refreshing the screen [default 2] -c <number> of refreshes [default millions] -d <disks> to increase the number of disks [default 256] -t spreadsheet includes top processes -x capacity planning (15 min for 1 day = -fdt -s 900 -c 96) Version - nmon 14g For Interactive-Mode -s <seconds> time between refreshing the screen [default 2] -c <number> of refreshes [default millions] -g <filename> User Defined Disk Groups [hit g to show them] - file = on each line: group_name <disks list> space separated - like: database sdb sdc sdd sde - upto 64 disk groups, 512 disks per line - disks can appear more than once and in many groups -b black and white [default is colour] example: nmon -s 1 -c 100 For Data-Collect-Mode = spreadsheet format (comma separated values) Note: use only one of f,F,z,x or X and make it the first argument -f spreadsheet output format [note: default -s300 -c288] output file is <hostname>_YYYYMMDD_HHMM.nmon -F <filename> same as -f but user supplied filename -r <runname> used in the spreadsheet file [default hostname] -t include top processes in the output -T as -t plus saves command line arguments in UARG section -s <seconds> between snap shots -c <number> of snapshots before nmon stops -d <disks> to increase the number of disks [default 256] -l <dpl> disks/line default 150 to avoid spreadsheet issues. EMC=64. -g <filename> User Defined Disk Groups (see above) - see BBBG & DG lines -N include NFS Network File System -I <percent> Include process & disks busy threshold (default 0.1) don't save or show proc/disk using less than this percent -m <directory> nmon changes to this directory before saving to file example: collect for 1 hour at 30 second intervals with top procs nmon -f -t -r Test1 -s30 -c120 To load into a spreadsheet: sort -A *nmon >stats.csv transfer the stats.csv file to your PC Start spreadsheet & then Open type=comma-separated-value ASCII file The nmon analyser or consolidator does not need the file sorted. Capacity planning mode - use cron to run each day -x sensible spreadsheet output for CP = one day every 15 mins for 1 day ( i.e. -ft -s 900 -c 96) -X sensible spreadsheet output for CP = busy hour every 30 secs for 1 hour ( i.e. -ft -s 30 -c 120)
Gdy już wykujemy powyższe parametry na blachę, czas na klawiszologię, którą możemy uskuteczniać w czasie działania nmon:
Interactive Mode Commands key --- Toggles to control what is displayed --- h = Online help information r = Machine type, machine name, cache details and OS version + LPAR c = CPU by processor stats with bar graphs l = long term CPU (over 75 snapshots) with bar graphs m = Memory stats L = Huge memory page stats V = Virtual Memory and Swap stats k = Kernel Internal stats n = Network stats and errors N = NFS Network File System d = Disk I/O Graphs D = Disk I/O Stats o = Disk I/O Map (one character per disk showing how busy it is) o = User Defined Disk Groups j = File Systems t = Top Process stats use 1,3,4,5 to select the data & order u = Top Process full command details v = Verbose mode - tries to make recommendations b = black and white mode (or use -b option) . = minimum mode i.e. only busy disks and processes key --- Other Controls --- + = double the screen refresh time - = halves the screen refresh time q = quit (also x, e or control-C) 0 = reset peak counts to zero (peak = ">") space = refresh screen now
Większość użytkowników zainteresuje głównie klawiszologia, a tę program sam podpowiada – po naciśnięciu klawisza „h”. Zatem, jeżeli chcemy włączyć informacje o systemie – naciskamy „r” (ponowne naciśnięcie wyłącza te informacje), jeżeli interesuje nas CPU naciskamy „c”, „m” dla pamięci i tak dalej.
Jednak głównym gwoździem programu jest kolekcjonowanie w tle statystyk obciążenia CPU, zużycia pamięci, operacji I/O i aktywności na interfejsach sieciowych. Po wywołaniu z parametrem „f” i podaniu okresu zbierania danych oraz częstotliwości takich prób, nmon przechodzi do działania w tle i gromadzenia danych. Przykładowy zapis danych przez okres 2 godzin („-c”), co 30 sekund („-s”):
nmon -f -s30 -c240
Plik ze zgromadzonymi danymi możemy wykorzystać w różnoraki sposób, np. obejrzeć statystyki z podanego okresu za pomocą programu NMON Visualiser. Wystarczy pobrać go na dysk i uruchomić albo dwuklikiem (trzeba mieć zainstalowaną Javę), albo z terminala poleceniem:
java -jar NMON*.jar
Oczywiście na tym nie koniec. Dla zainteresowanych jest jeszcze programik Java Nmon Analyser, który może nie wyświetla całej palety danych zgromadzonych przez nmon, ale ma ciekawą funkcję – można uruchomić w nim podgląd statystyk na żywo.
A na koniec – nmon znajdziemy w repozytoriach niemal wszystkich dystrybucji.