Команда dstat

Опубликовано admin - пн, 07/31/2023 - 14:35

В Linux команда dstat используется для получения информации или статистики о компонентах системы: сетевые подключения, устройства ввода-вывода, ЦП и т. п.

Примеры использования команды dstat в Linux

С помощью этого инструмента можно также увидеть пропускную способность для блочных устройств, составляющих одну файловую систему или систему хранения.

Содержание

Функции

Утилита обладает следующими возможностями:

  • объединяет информацию vmstat, iostat, ifstat, netstat;
  • показывает статистику точно в том же таймфрейме;
  • имеет модульную конструкцию;
  • легко расширяется для решения поставленных задач;
  • позволяет добавлять собственные счётчики;
  • может суммировать сгруппированные блочные/сетевые устройства и указывать их общее количество;
  • может отображать прерывания для каждого устройства;
  • имеет очень точные таймфреймы и в загруженной системе нет никаких сдвигов во времени;
  • показывает точные единицы и ограничивает ошибки преобразования;
  • обозначает разные единицы измерения разными цветами;
  • показывает промежуточные результаты при задержке > 1;
  • позволяет осуществлять экспорт в CSV, из которого можно импортировать в Gnumeric и Excel для создания графиков.

Установка

В Ubuntu:

$ sudo apt install dstat

В Arch Linux:

$ yay -S dstat

Использование команды dstat в Linux

Статистика основных компонентов ОС

oleg@mobile:~:$ dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
 13   2  42  44   0|  69k   76k|   0     0 | 247B  734B| 551  1144 
  6   3  46  46   0|   0     0 |   0     0 |   0     0 | 658  1459 
 12   4  42  41   0|  44k    0 | 341k 6363B|   0     0 |1473  4607 
  6   2  47  45   0|   0     0 |   0     0 |   0     0 | 685  1470 
  7   3  45  45   0|   0    60k| 132B  168B|   0     0 | 703  1317 
  6   2  47  45   0|   0   192k|   0     0 |   0     0 | 681  1450 
  6   3  46  45   0|   0    24k|   0     0 |   0     0 | 749  1488 
 15   5  41  39   0|   0     0 | 360k 6882B|   0     0 |1706  4805 
  6   1  47  46   0|   0     0 |  60B   60B|   0     0 | 738  1341 
 ...
 oleg@mobile:~:$

Была отображена статистика процессора, диска, сети, пейджинга и системы.

Информация, отображаемая инструментом vmstat

oleg@mobile:~:$ dstat --vmstat
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used  free  buff  cach|  in   out | read  writ| int   csw |usr sys idl wai stl
  0 1.0 6.6|1279M  158M 15.4M  405M| 244B  723B|  68k   76k| 558  1164 | 13   2  42  44   0
  0 1.0   0|1279M  158M 15.4M  408M|   0     0 |   0     0 | 653  1275 |  7   1  47  45   0
1.0 1.0  13|1280M  157M 15.5M  408M|   0     0 |   0    40k| 708  1489 |  6   2  47  45   0
  0 1.0   0|1281M  156M 15.5M  408M|   0     0 |   0     0 |1103  2588 |  8   2  45  45   0
  0 1.0  13|1282M  155M 15.5M  408M|   0     0 |   0   224k| 691  1421 |  6   4  46  45   0
  0 1.0   0|1286M  150M 15.5M  408M|   0     0 |   0     0 | 676  1317 |  6   2  47  46   0
...
oleg@mobile:~:$

Приведённая выше команда отобразила статистику процесса и памяти.

Статистика процесса, использующего большую часть ЦП

oleg@mobile:~:$ dstat -c --top-cpu
/usr/bin/dstat:2616: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
  import imp
--total-cpu-usage-- -most-expensive-
usr sys idl wai stl|  cpu process   
 13   2  41  44   0|chromium     5.8
 11   2  44  43   0|chromium     4.0
 11   3  37  49   0|chromium     6.5
  9   2  44  45   0|chromium     5.0
 14   5  41  40   0|chromium     7.5
  8   2  46  44   0|chromium     3.0
 27   2  35  36   0|chromium      23
 11   3  40  47   0|chromium     5.5
  8   1  46  44   0|chromium     3.5
 10   2  42  46   0|chromium     6.0
...
oleg@mobile:~:$

Команда вывела статистику процесса, потребляющего большую часть ЦП

Статистика процесса, использующего большую часть памяти

oleg@mobile:~:$ dstat -d --top-mem
/usr/bin/dstat:2616: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
  import imp
-dsk/total- --most-expensive-
 read  writ|  memory process 
  68k   76k|chromium     358M
   0   160k|chromium     358M
   0  8192B|chromium     358M
   0     0 |chromium     358M
   0   304k|chromium     358M
   0     0 |chromium     358M
   0    52k|chromium     360M
   0    24k|chromium     359M
   0   216k|chromium     359M
   0     0 |chromium     354M
...
oleg@mobile:~:$

Была отображена статистики процесса, потребляющего большую часть памяти.

Список всех плагинов

oleg@mobile:~:$ dstat --list
internal:
	aio,cpu,cpu-adv,cpu-use,cpu24,disk,disk24,disk24-old,epoch,fs,int,int24,io,ipc,load,lock,mem,mem-adv,net,
	page,page24,proc,raw,socket,swap,swap-old,sys,tcp,time,udp,unix,vm,vm-adv,zones
/usr/share/dstat:
	battery,battery-remain,condor-queue,cpufreq,dbus,disk-avgqu,disk-avgrq,disk-svctm,disk-tps,disk-util,disk-wait,
	dstat,dstat-cpu,dstat-ctxt,dstat-mem,fan,freespace,fuse,gpfs,gpfs-ops,helloworld,ib,innodb-buffer,innodb-io,
	innodb-ops,jvm-full,jvm-vm,lustre,md-status,memcache-hits,mongodb-conn,mongodb-mem,mongodb-opcount,mongodb-queue,
	mongodb-stats,mysql-io,mysql-keys,mysql5-cmds,mysql5-conn,mysql5-innodb,mysql5-innodb-basic,mysql5-innodb-extra,
	mysql5-io,mysql5-keys,net-packets,nfs3,nfs3-ops,nfsd3,nfsd3-ops,nfsd4-ops,nfsstat4,ntp,postfix,power,proc-count,
	qmail,redis,rpc,rpcd,sendmail,snmp-cpu,snmp-load,snmp-mem,snmp-net,snmp-net-err,snmp-sys,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-cpu,vm-mem,vm-mem-adv,vmk-hba,vmk-int,vmk-nic,vz-cpu,vz-io,
	vz-ubc,wifi,zfs-arc,zfs-l2arc,zfs-zil
oleg@mobile:~:$

Плагины — опции, помогающие отображать статистику. Приведённая выше команда вывела список всех таких плагинов.

Принудительный вывод значений с плавающей запятой

oleg@mobile:~:$ dstat --float
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
 13 1.8  41  44   0|66.6k 75.9k|   0     0 | 297B  823B| 584  1238 
 12 3.5  43  42   0|   0  36.0k| 128k 8207B|   0     0 |1154  3006 
5.6 0.5  46  47   0|   0     0 |   0     0 |   0     0 | 575  1290 
9.6 1.5  41  48   0|   0  24.0k|   0     0 |   0     0 | 663  1441 
5.5 2.0  48  45   0|   0  16.0k| 217B    0 |   0     0 | 658  1292 
8.2 2.6  44  45   0|   0     0 | 306B 1323B|   0     0 | 748  1606 
9.1 1.0  45  45   0|   0     0 |79.5k 2450B|   0     0 | 909  2280 
...
oleg@mobile:~:$

Команда вывела значения с плавающей запятой, которые были скрыты ранее.

Принудительный вывод значения битов

oleg@mobile:~:$ dstat --bits
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
 13   2  41  44   0| 544k  633k|   0     0 | 295B  938B| 586  1245 
  6   2  47  45   0|   0     0 |   0     0 |   0     0 | 656  1450 
  8   1  48  44   0|   0   459k|   0     0 |   0     0 | 622  1265 
  7   1  45  47   0|   0     0 |   0     0 |   0     0 | 598  1409 
 15   3  42  41   0|   0     0 |2406k  120k|   0     0 |1599  4438 
 26   2  36  36   0|   0     0 |  56k   27k|   0     0 |1050  1513 
  9   1  44  46   0|   0   131k|   0     0 |   0     0 | 614  1241 
 11   2  36  52   0|   0   885k| 209k   12k|   0     0 | 845  1875 
  9   2  46  43   0|   0     0 |1029k   14k|   0     0 | 965  2425 
... 
oleg@mobile:~:$

Команда вывела все значения в битах, ранее использовавшихся для печати в байтах.

Вся статистика процессов

oleg@mobile:~:$ dstat -a
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
 13   2  41  44   0|  66k   77k|   0     0 | 293B  931B| 589  1253 
  8   2  46  43   0|   0     0 | 235B  168B|   0     0 | 734  1459 
  9   3  44  44   0|   0   352k| 192k 4735B|   0     0 |1265  3228 
  7   3  46  44   0|   0     0 |   0     0 |   0     0 | 632  1388 
  8   1  47  45   0|   0   584k|   0     0 |   0     0 | 668  1311 
  6   2  46  46   0|   0  4096B|  66B  123B|   0     0 | 661  1463 
  6   2  45  47   0|   0     0 |   0     0 |   0     0 | 603  1263 
  7   2  43  49   0|  44k   16k| 237B  480B|   0     0 | 733  1479 
  9   2  46  44   0|   0     0 | 168k 4566B|   0     0 |1172  2884 
  8   2  45  45   0|   0     0 | 341B  396B|   0     0 | 697  1500 
  7   1  46  46   0|   0    44k|   0   228B|   0     0 | 641  1305 
...  
oleg@mobile:~:$

Команда отобразила всю статистику процессов.

Вывод справки

oleg@mobile:~:$ dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics)

Dstat options:
  -c, --cpu                enable cpu stats
     -C 0,3,total             include cpu0, cpu3 and total
  -d, --disk               enable disk stats
     -D total,hda             include hda and total
  -g, --page               enable page stats
  -i, --int                enable interrupt stats
     -I 5,eth2                include int5 and interrupt used by eth2
  -l, --load               enable load stats
  -m, --mem                enable memory stats
  -n, --net                enable network stats
     -N eth1,total            include eth1 and total
  -p, --proc               enable process stats
  -r, --io                 enable io stats (I/O requests completed)
  -s, --swap               enable swap stats
     -S swap1,total           include swap1 and total
  -t, --time               enable time/date output
  -T, --epoch              enable time counter (seconds since epoch)
  -y, --sys                enable system stats

  --aio                    enable aio stats
  --fs, --filesystem       enable fs stats
  --ipc                    enable ipc stats
  --lock                   enable lock stats
  --raw                    enable raw stats
  --socket                 enable socket stats
  --tcp                    enable tcp stats
  --udp                    enable udp stats
  --unix                   enable unix stats
  --vm                     enable vm stats
  --vm-adv                 enable advanced vm stats
  --zones                  enable zoneinfo stats

  --list                   list all available plugins
  --<plugin-name>          enable external plugin by name (see --list)

  -a, --all                equals -cdngy (default)
  -f, --full               automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat             equals -pmgdsc -D total

  --bits                   force bits for values expressed in bytes
  --float                  force float values on screen
  --integer                force integer values on screen

  --bw, --black-on-white   change colors for white background terminal
  --color                  force colors
  --nocolor                disable colors
  --noheaders              disable repetitive headers
  --noupdate               disable intermediate updates
  --output file            write CSV output to file
  --profile                show profiling statistics when exiting dstat

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)

oleg@mobile:~:$

Команда вывела раздел справки dstat.

Заключение

Данные, отображаемые в Linux командой dstat, очень информативны. Приёмы работы с этой утилитой необходимо знать даже начинающим системным администраторам.

Поделиться с друзьями