Collectl: napredno večnamensko orodje za spremljanje učinkovitosti za Linux


Najpomembnejša naloga sistemskega skrbnika Linuxa je zagotoviti, da je sistem, ki ga upravlja, v zelo dobrem stanju. Za skrbnike sistema Linux je na voljo veliko orodij, ki lahko pomagajo spremljati in prikazovati procese v sistemu, kot je htop, vendar nobeno od teh orodij ne more konkurirati collel-u.

collel je zelo prijetna pripomoček z ukazno vrstico, bogat s funkcijami, ki se lahko uporablja za zbiranje podatkov o zmogljivosti, ki opisujejo trenutno stanje sistema. Za razliko od večine drugih orodij za spremljanje se collel ne osredotoča na omejeno število sistemskih metrik, temveč lahko zbira informacije o številnih različnih sistemskih virih, kot so procesor, disk, pomnilnik, omrežje, vtičnice, tcp, inode, infiniband, lesk, spomin, nfs, procesi, kvadriki, plošče in buddyinfo.

Zelo dobra stvar pri uporabi collel je, da lahko igra tudi vlogo pripomočkov, ki so zasnovani samo z določenim namenom, kot so top, ps, iotop in mnogi drugi. Katere funkcije omogočajo, da je colleclt uporabno orodje?

Po veliko raziskavah sem za vas sestavil seznam nekaterih najpomembnejših lastnosti pripomočka za ukazno vrstico collel.

  1. Lahko deluje interaktivno, kot demon ali oboje.
  2. Rezultate lahko prikaže v številnih oblikah.
  3. Ima možnost spremljanja skoraj vseh podsistemov.
  4. Lahko igra vlogo številnih drugih pripomočkov, kot so ps, top, iotop, vmstat.
  5. Ima možnost snemanja in predvajanja zajetih podatkov.
  6. Podatke lahko izvozi v različnih oblikah datotek. (to je zelo koristno, če želite podatke analizirati z zunanjimi orodji).
  7. Lahko deluje kot storitev za nadzor oddaljenih računalnikov ali celotne strežniške gruče.
  8. Prikaže lahko podatke v terminalu, zapiše v datoteko ali vtičnico.

Kako namestiti collel v Linux

Pripomoček collel deluje v vseh distribucijah Linuxa, edina stvar, ki jo potrebuje za zagon, je perl, zato se prepričajte, da je Perl nameščen v vaši napravi, preden namestite collel v vaš računalnik.

Naslednji ukaz lahko uporabite za namestitev pripomočka collel v stroje, ki temeljijo na Debianu, kot je Ubuntu.

$ sudo apt-get install collectl

Če uporabljate distro distribucijo, ki temelji na Red Hat, jo lahko z ukazom yum enostavno zajamete iz repojev.

# yum install collectl

Nekaj praktičnih primerov orodja collel

Ko je namestitev zbirnega orodja končana, jo lahko preprosto zaženete s terminala, tudi brez kakršne koli možnosti. Naslednji ukaz bo prikazal informacije o statistiki procesorja, diska in omrežja v zelo kratki in razumljivi obliki.

# collectl

waiting for 1 second sample...
#
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
  13   5   790   1322      0      0     92      7      4     13      0       5 
  10   2   719   1186      0      0      0      0      3      9      0       4 
  12   0   753   1188      0      0     52      3      2      5      0       6 
  13   2   733   1063      0      0      0      0      1      1      0       1 
  25   2   834   1375      0      0      0      0      1      1      0       1 
  28   2   870   1424      0      0     36      7      1      1      0       1 
  19   3   949   2271      0      0     44      3      1      1      0       1 
  17   2   809   1384      0      0      0      0      1      6      0       6 
  16   2   732   1348      0      0      0      0      1      1      0       1 
  22   4   993   1615      0      0     56      3      1      2      0       3

Kot lahko vidite iz zgornjega izhoda, ki je prikazan na terminalskem zaslonu, je zelo enostavno delati z vrednostmi sistemskih meritev, ki so prisotne v izhodu ukaza, ker je prikazan v eni vrstici.

Ko se pripomoček collel zažene brez možnosti, prikaže informacije o naslednjih podsistemih:

  1. procesor
  2. diski
  3. omrežje

Opomba: V našem primeru je podsistem vse vrste sistemskih virov, ki jih je mogoče izmeriti.

Statistične podatke lahko prikažete tudi za vse podsisteme, razen plošč, tako da ukaz kombinirate z možnostjo –all, kot je prikazano spodaj.

# collectl --all

waiting for 1 second sample...
#
#cpu sys inter  ctxsw Cpu0 Cpu1 Free Buff Cach Inac Slab  Map   Fragments KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut   IP  Tcp  Udp Icmp  Tcp  Udp  Raw Frag Handle Inodes  Reads Writes Meta Comm 
  16   3   817   1542  430  390   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0     24      3      1      1      0       1    0    0    0    0  623    0    0    0   8160 240829      0      0    0    0 
  11   1   745   1324  316  426   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0      0      0      0      3      0       2    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  15   2   793   1683  371  424   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0      0      0      1      1      0       1    0    0    0    0  622    0    0    0   8160 240829      0      0    0    0 
  16   2   872   1875  427  446   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0     24      3      1      1      0       1    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  24   2   842   1383  473  368   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0    168      6      1      1      0       1    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  27   3   844   1099  478  365   1G 175M   1G 683M 193M   1G nsslkjjebbk      0      0      0      0      1      6      1       9    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  26   5   823   1238  396  428   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0      0      0      2     11      3       9    0    0    0    0  622    0    0    0   8160 240828      0      0    0    0 
  15   1   753   1276  361  391   1G 175M   1G 683M 193M   1G ssslkjjebbk      0      0     40      3      1      2      0       3    0    0    0    0  623    0    0    0   8160 240829      0      0    0    0

Toda kako spremljate uporabo procesorja s pomočjo pripomočka? Z možnostjo '-s' je treba nadzorovati, kateri podatki podsistema naj se zbirajo ali predvajajo.

Za nadzor povzetka uporabe procesorja lahko na primer uporabite naslednji ukaz.

# collectl -sc

waiting for 1 second sample...
#
#cpu sys inter  ctxsw 
  15   2   749   1155 
  16   3   772   1445 
  14   2   793   1247 
  27   4   887   1292 
  24   1   796   1258 
  16   1   743   1113 
  15   1   743   1179 
  14   1   706   1078 
  15   1   764   1268

Kaj se zgodi, če ukaz kombinirate z "scdn"? Najboljši način, kako se naučiti uporabe orodij ukazne vrstice, je, da čim več vadite, zato v terminalu zaženite naslednji ukaz in poglejte, kaj se bo zgodilo.

# collectl -scdn

waiting for 1 second sample...
#
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
  25   4   943   3333      0      0      0      0      1      1      0       2 
  27   3   825   2910      0      0      0      0      1      1      0       1 
  27   5   886   2531      0      0      0      0      0      0      0       1 
  20   4   872   2406      0      0      0      0      1      1      0       1 
  26   1   854   2091      0      0     20      2      1      1      0       1 
  39   4  1004   3398      0      0      0      0      2      8      3       6 
  41   6   955   2464      0      0     40      3      1      2      0       3 
  25   7   890   1609      0      0      0      0      1      1      0       1 
  16   2   814   1165      0      0    796     43      2      2      0       2 
  14   1   779   1383      0      0     48      6      1      1      0       1 
  11   2   795   1285      0      0      0      0      2     14      1      14

Zlahka lahko razumete, da je privzeta možnost »cdn«, pomeni cpu, diske in omrežne podatke. Rezultat ukaza je enak rezultatu “collectl -scn”

Če želite zbrati podatke o pomnilniku, uporabite naslednji ukaz.

# collectl -sm

waiting for 1 second sample...
#
#Free Buff Cach Inac Slab  Map 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G 
   1G 177M   1G 684M 193M   1G

Zgornji izhod je zelo koristen, če želite dobiti podrobne informacije o porabi pomnilnika, prostem pomnilniku in drugih pomembnih stvareh za delovanje vašega sistema.

Kaj pa nekateri podatki o tcp? Za to uporabite naslednji ukaz.

# collectl -st

waiting for 1 second sample...
#
#  IP  Tcp  Udp Icmp 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0 
    0    0    0    0

Ko pridobite nekaj izkušenj, lahko enostavno kombinirate možnosti, da dobite želene rezultate. Kombinirate lahko na primer "t" za tcp in "c" za cpu. Naslednji ukaz to stori.

# collectl -stc

waiting for 1 second sample...
#
#cpu sys inter  ctxsw   IP  Tcp  Udp Icmp 
  23   8   961   3136    0    0    0    0 
  24   5   916   3662    0    0    0    0 
  21   8   848   2408    0    0    0    0 
  30  10   916   2674    0    0    0    0 
  38   3   826   1752    0    0    0    0 
  31   3   820   1408    0    0    0    0 
  15   5   781   1335    0    0    0    0 
  17   3   802   1314    0    0    0    0 
  17   3   755   1218    0    0    0    0 
  14   2   788   1321    0    0    0    0

Ljudje si težko zapomnimo vseh razpoložljivih možnosti, zato objavljam zbirni seznam podsistemov, ki jih podpira orodje.

  1. b - informacije o prijatelju (razdrobljenost spomina)
  2. c - CPU
  3. d - disk
  4. f - Podatki NFS V3
  5. i - Inode in datotečni sistem
  6. j - Prekinitve
  7. l - lesk
  8. m - spomin
  9. n - Omrežja
  10. s - Vtičnice
  11. t - TCP
  12. x - medsebojna povezava
  13. y - plošče (predpomnilniki sistemskih objektov)

Zelo pomemben podatek za sistemskega skrbnika ali uporabnika Linuxa so podatki, zbrani o uporabi diska. Naslednji ukaz vam bo pomagal spremljati uporabo diska.

# collectl -sd

waiting for 1 second sample...
#
#KBRead  Reads KBWrit Writes 
      0      0      0      0 
      0      0      0      0 
      0      0     92      7 
      0      0      0      0 
      0      0     36      3 
      0      0      0      0 
      0      0      0      0 
      0      0    100      7 
      0      0      0      0

Za zbiranje podatkov na posameznih diskih lahko uporabite tudi možnost »-sD«, vendar morate vedeti, da se informacije o skupnih diskih ne bodo poročale.

# collectl -sD

waiting for 1 second sample...

# DISK STATISTICS (/sec)
#           Pct
#Name       KBytes Merged  IOs Size  KBytes Merged  IOs Size  RWSize  QLen  Wait SvcTim Util
sda              0      0    0    0      52     11    2   26      26     1     8      8    1
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0      24      0    2   12      12     0     0      0    0
sda              0      0    0    0     152      0    4   38      38     0     0      0    0
sda              0      0    0    0     192     45    3   64      64     1    20     20    5
sda              0      0    0    0     204      0    2  102     102     0     0      0    0
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0     116     26    3   39      38     1    16     16    4
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0       0      0    0    0       0     0     0      0    0
sda              0      0    0    0      32      5    3   11      10     1    16     16    4
sda              0      0    0    0       0      0    0    0       0     0     0      0    0

Za zbiranje podrobnih podatkov lahko uporabite tudi druge podrobne podsisteme. Sledi seznam podrobnih podsistemov.

  1. C - CPU
  2. D - disk
  3. E - okoljski podatki (ventilator, moč, temperatura) prek ipmitool
  4. F - podatki NFS
  5. J - Prekinitve
  6. L - podrobnosti o Luster OST ALI podrobnosti o odjemalskem datotečnem sistemu
  7. N - Omrežja
  8. T - 65 števci TCP so na voljo samo v obliki ploskve
  9. X - Medsebojna povezava
  10. Y - plošče (predpomnilniki sistemskih objektov)
  11. Z - procesi

V pripomočku collel je na voljo veliko možnosti, vendar ni dovolj časa in prostora, da bi vse zajeli v samo enem članku. Vendar je vredno omeniti in se naučiti, kako uporabljati pripomoček kot top in ps.

Zelo enostavno je, da collel deluje kot zgornji pripomoček, samo zaženite naslednji ukaz v terminalu in videli boste podoben izhod, ki ga daje zgornje orodje, ko se izvaja v vašem sistemu Linux.

# collectl --top

# TOP PROCESSES sorted by time (counters are /sec) 13:11:02
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
^COuch!tecmint  20     1   40 R    1G  626M  0  0.01  0.14  15  28:48.24    0    0    0  109 /usr/lib/firefox/firefox 
 3403  tecmint  20     1   40 R    1G  626M  1  0.00  0.20  20  28:48.44    0    0    0  600 /usr/lib/firefox/firefox 
 5851  tecmint  20  4666    0 R   17M   13M  0  0.02  0.06   8  00:01.28    0    0    0    0 /usr/bin/perl 
 1682  root     20  1666    2 R  211M   55M  1  0.02  0.01   3  03:10.24    0    0    0   95 /usr/bin/X 
 3454  tecmint  20  3403    8 S  216M   45M  1  0.01  0.02   3  01:23.32    0    0    0    0 /usr/lib/firefox/plugin-container 
 4658  tecmint  20  4657    3 S  207M   17M  1  0.00  0.02   2  00:08.23    0    0    0  142 gnome-terminal 
 2890  tecmint  20  2571    3 S  340M   68M  0  0.00  0.01   1  01:19.95    0    0    0    0 compiz 
 3521  tecmint  20     1   24 S  710M  148M  1  0.01  0.00   1  01:47.84    0    0    0    0 skype 
    1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init 
    2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0 
    5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H 
    7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H 
    8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0 
    9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh 
   10  root     20     2    0 R     0     0  0  0.00  0.00   0  00:02.22    0    0    0    0 rcu_sched 
   11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0 
   12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1 
   13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1 
   14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1 
   16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H 
   17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset

In zdaj nenazadnje, če želite uporabiti pripomoček collel kot orodje ps, v vašem terminalu zaženite naslednji ukaz. Informacije o procesih v vašem sistemu boste dobili na enak način kot pri zagonu ukaza “ps” v terminalu.

# collectl -c1 -sZ -i:1

waiting for 1 second sample...

### RECORD    1 >>> tecmint-vgn-z13gn <<< (1397979716.001) (Sun Apr 20 13:11:56 2014) ###

# PROCESS SUMMARY (counters are /sec)
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
    1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init 
    2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd 
    3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0 
    5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H 
    7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H 
    8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0 
    9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh 
   10  root     20     2    0 S     0     0  0  0.00  0.00   0  00:02.24    0    0    0    0 rcu_sched 
   11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0 
   12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1 
   13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1 
   14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1 
   16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H 
   17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset 
   18  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 khelper 
   19  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kdevtmpfs 
   20  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 netns 
   21  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 bdi-default 
   22  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kintegrityd

Prepričan sem, da bo to orodje všeč mnogim sistemskim skrbnikom Linuxa in bodo ob popolni uporabi začutili njegovo moč. Če želite svoje znanje o zbirki znanja napredovati na naslednjo stopnjo, si oglejte strani z navodili in nadaljujte z vadbo.

V svoj terminal vnesite naslednji ukaz in začnite brati.

# man collectl

Referenčne povezave

collectl Domača stran