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.
- Łą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.