Terminal pogryzł człowieka: dstat
Niekiedy potrzebujemy dowiedzieć się nieco dokładniej co w komputerze (serwerze) piszczy. Dlatego trzymamy do tego celu pod ręką kilka różnych narzędzi – np. iostat, vmstat, netstat oraz ifstat. Sprytniejsi natomiast używają dstat, który udostępnia podobne dane jak programy wymienione wcześniej.
Krótki rzut oka na listę parametrów tego programu rodzi momentalnie pytanie „czy jest coś, czego tego program nie pokazuje”? A zatem:
- Łączy w sobie informacje z vmstat, iostat, ifstat, netstat i innych,
- Pokazuje statystyki w dokładnie tych samych ramach czasowych,
- Włączanie/układanie liczników w sposób najbardziej korzystny dla analizy,
- Modułowa konstrukcja (tak, wtyczki),
- Napisany w Pythonie – łatwa rozbudowa,
- Zawiera wiele zewnętrznych wtyczek,
- Możliwość pokazywania przerwań urządzeń,
- Bardzo dokładne wskazania czasowe, bez błędów/przesunięć nawet na obciążonym systemie,
- Pokazuje dokładnie jednostki i ogranicza błędy konwersji,
- Uwypukla różne jednostki za pomocą kolorów,
- Pozwala na eksport wyjścia do CSV, a następnie importowanie przez np. Gnumeric lub Excel.
Wygląda zachęcająco, ale nadal nie wiemy, co możemy monitorować. Jest na to sposób:
~$ dstat --list internal: aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap, swapold, sys, tcp, time, udp, unix, vm /usr/share/dstat: battery, battery-remain, cpufreq, dbus, disk-tps, disk-util, dstat, dstat-cpu, dstat-ctxt, dstat-mem, fan, freespace, gpfs, gpfs-ops, helloworld, innodb-buffer, innodb-io, innodb-ops, lustre, memcache-hits, mysql-io, mysql-keys, mysql5-cmds, mysql5-io, mysql5-keys, net-packets, nfs3, nfs3-ops, nfsd3, nfsd3-ops, ntp, postfix, power, proc-count, qmail, rpc, rpcd, sendmail, snooze, squid, test, thermal, top-bio, top-bio-adv, top-childwait, top-cpu, top-cpu-adv, top-cputime, top-cputime-avg, top-int, top-io, top-io-adv, top-latency, top-latency-avg, top-mem, top-oom, utmp, vm-memctl, vmk-hba, vmk-int, vmk-nic, vz-cpu, vz-io, vz-ubc, wifi
Powyższa lista to efekt wtyczek, które obsługuje program. Mamy zatem moduły „wbudowane” (internal) oraz te umieszczone w /usr/share/dstat. Aby wyświetlić cokolwiek, wystarczy:
~$ dstat --cpu ----total-cpu-usage---- usr sys idl wai hiq siq 4 1 95 0 0 0 2 0 98 0 0 0 1 0 98 0 0 0 1 0 99 0 0 0 1 0 99 0 0 0 1 0 99 0 0 0
Ale to nie wszystko. Najciekawsza przypadłość dstat pozwala nam na dokładne skorelowanie różnych obciążeń i ich wpływu na poszczególne elementy systemu. Np. obciążenie dysku a liczba zapytań SQL. Obciążenie procesora, a aktywność sieciowa. I tak dalej. Wystarczy uruchomić program z listą modułów z których chcemy otrzymać wyniki na ekranie:
~$ dstat --cpu --disk --net --page --sys ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 4 1 95 0 0 0| 33k 44k| 0 0 | 0 0 | 260 995 6 0 93 1 0 0| 0 48k| 0 0 | 0 0 | 732 6075 5 1 95 0 0 0| 0 0 | 161B 271B| 0 0 | 585 4696 4 1 96 0 0 0| 0 0 | 407B 390B| 0 0 |2886 5165 2 0 98 0 0 0| 0 0 | 0 0 | 0 0 | 477 920 2 0 98 0 0 0| 0 0 | 0 0 | 0 0 | 447 2118 1 0 99 0 0 0| 0 0 | 0 0 | 0 0 | 296 893 1 0 99 0 0 0| 0 44k| 0 0 | 0 0 | 316 596 1 0 99 0 0 0| 0 0 | 0 0 | 0 0 | 266 592
Czyż to nie fantastyczne? W jednym momencie w każdej z linii otrzymujemy dane dotyczące CPU, operacji dyskowych i sieciowych, pamięci podręcznej i informacje o przerwaniach i context switches. Na dodatek ładnie pokolorowane (patrz zrzut ekranu). Równie banalnie uzyskamy listę procesów najbardziej obciążających CPU i pamięć w danym momencie:
~$ dstat --cpu --top-cpu --top-mem ----total-cpu-usage---- -most-expensive- --most-expensive- usr sys idl wai hiq siq| cpu process | memory process 4 1 95 0 0 0|firefox 0.2|firefox 877M 2 0 98 0 0 0|firefox 1.0|firefox 879M 1 0 98 1 0 0|firefox 0.6|firefox 880M 1 0 98 0 0 0|firefox 1.1|firefox 882M 2 0 98 0 0 0|firefox 1.5|firefox 883M 1 0 98 0 0 0|firefox 1.0|firefox 884M 1 0 99 0 0 0|firefox 1.1|firefox 884M
Program niestety wymaga przyjrzenia się i zrozumienia danych jakimi nas częstuje (np. CPU – usr sys idl wai hiq siq). Niemniej wszystko znajdziemy w manualu, który przy takiej ogromnej ilości różnorodności parametrów warto co najmniej przejrzeć.
Kolejną cechą za którą można polubić dstat to jego obecność w głównych repozytoriach większości dystrybucji.