Collectl: una eina avançada de control del rendiment tot en un per a Linux
El deure més important d'un administrador de sistemes Linux és assegurar-se que el sistema que està administrant està en molt bones condicions. Hi ha moltes eines disponibles per als administradors del sistema Linux que poden ajudar a supervisar i mostrar processos en un sistema com htop, però cap d'aquestes eines pot competir amb collectl.
collectl és una utilitat de línia d'ordres molt rica en funcions que es pot utilitzar per recopilar dades de rendiment que descriuen l'estat actual del sistema. A diferència de la majoria de les altres eines de monitorització, collectl no se centra en un nombre limitat de mètriques del sistema, sinó que pot recopilar informació sobre molts tipus diferents de recursos del sistema com ara CPU, disc, memòria, xarxa, sòcols, tcp, inodes, infinitband, etc. lustre, memòria, nfs, processos, quàdriques, lloses i buddyinfo.
Una cosa molt bona d'utilitzar collectl és que també pot jugar el paper d'utilitats dissenyades només amb un propòsit específic, com ara top, ps, iotop i moltes altres. Quines són algunes de les característiques que fan que la col·lecció sigui una eina útil?
Després de fer moltes investigacions, he compilat una llista amb algunes de les característiques més importants de la utilitat de línia d'ordres collectl per a vosaltres.
- Pot executar-se de manera interactiva, com a dimoni o tots dos.
- Pot mostrar la sortida en molts formats.
- Té la capacitat de supervisar gairebé qualsevol subsistema.
- Pot jugar el paper de moltes altres utilitats com ps, top, iotop, vmstat.
- Pot gravar i reproduir les dades capturades.
- Pot exportar les dades en diversos formats de fitxer. (és molt útil quan es volen analitzar les dades amb eines externes).
- Pot executar-se com a servei per supervisar màquines remotes o un clúster de servidors sencer.
- Pot mostrar les dades al terminal, escriure en un fitxer o en un sòcol.
Com instal·lar collectl a Linux
La utilitat collectl s'executa a totes les distribucions de Linux, l'únic que necessita per executar-se és perl, així que assegureu-vos que teniu Perl instal·lat a la vostra màquina abans d'instal·lar collectl a la vostra màquina.
La següent comanda es pot utilitzar per instal·lar la utilitat collectl en màquines basades en Debian com Ubuntu.
$ sudo apt-get install collectl
Si utilitzeu la distribució basada en Red Hat, podeu agafar-la fàcilment dels repositoris amb l'ordre yum.
# yum install collectl
Alguns exemples pràctics de la utilitat collectl
Un cop finalitzada la instal·lació de l'eina collectl, podeu executar-la fàcilment des del terminal, fins i tot sense cap opció. La següent comanda mostrarà informació sobre les estadístiques de la CPU, el disc i la xarxa en un format molt breu i llegible per humans.
# 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
Com podeu veure a la sortida anterior que es mostra a la pantalla del terminal, és molt fàcil treballar amb els valors de mètriques del sistema presents a la sortida de l'ordre perquè apareix en una sola línia.
Quan la utilitat collectl s'executa sense cap opció, mostra informació sobre els subsistemes següents:
- cpu
- discos
- xarxa
Nota: En el nostre cas, un subsistema és tot tipus de recurs del sistema que es pot mesurar.
També podeu mostrar les estadístiques de tots els subsistemes excepte les lloses combinant l'ordre amb l'opció –all com es mostra a continuació.
# 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
Però, com controleu l'ús de la CPU amb l'ajuda de la utilitat? L'opció -s s'ha d'utilitzar per controlar quines dades del subsistema s'han de recollir o reproduir.
Per exemple, la següent comanda es pot utilitzar per supervisar el resum de l'ús de la CPU.
# 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
Què passa quan combineu l'ordre amb scdn? La millor manera d'aprendre a utilitzar les eines de línia d'ordres és practicar tant com sigui possible, així que executeu l'ordre següent al vostre terminal i vegeu què passarà.
# 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
Podeu entendre fàcilment que l'opció predeterminada és cdn, és a dir, cpu, discs i dades de xarxa. El resultat de l'ordre és el mateix amb la sortida de collectl -scn
Si voleu recollir dades sobre la memòria, utilitzeu l'ordre següent.
# 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
La sortida anterior és molt útil quan voleu obtenir informació detallada sobre l'ús de la memòria, la memòria lliure i altres coses importants per al rendiment del vostre sistema.
Què tal algunes dades sobre tcp? Utilitzeu l'ordre següent per fer-ho.
# 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
Després d'haver adquirit una mica d'experiència, podeu combinar fàcilment les opcions per obtenir els resultats que voleu. Per exemple, podeu combinar la t per a tcp i la c per a la CPU. La següent comanda ho fa.
# 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
Ens costa als humans recordar totes les opcions disponibles, així que estic publicant la llista resum dels subsistemes compatibles amb l'eina.
- b: informació del company (fragmentació de la memòria)
- c – CPU
- d – Disc
- f – Dades NFS V3
- i – Inode i sistema de fitxers
- j – Interrupcions
- l – Lustre
- m – Memòria
- n – Xarxes
- s – Endolls
- t – TCP
- x – Interconnexió
- y – Slabs (cachés d'objectes del sistema)
Una dada molt important per a un administrador del sistema o un usuari de Linux són les dades recopilades sobre l'ús del disc. L'ordre següent us ajudarà a controlar l'ús del disc.
# 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
També podeu utilitzar l'opció -sD per recollir dades en discs individuals, però heu de saber que la informació sobre el total de discs no s'informarà.
# 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
També podeu utilitzar altres subsistemes de detall per recollir dades detallades. A continuació es mostra una llista dels subsistemes detallats.
- C – CPU
- D – Disc
- E: dades ambientals (ventilador, potència, temperatura), mitjançant ipmitool
- F – Dades NFS
- J – Interrupcions
- L: detall de lluent OST O detall del sistema de fitxers del client
- N – Xarxes
- T – 65 comptadors TCP només disponibles en format de trama
- X – Interconnexió
- Y – Slabs (cachés d'objectes del sistema)
- Z – Processos
Hi ha moltes opcions disponibles a la utilitat collectl, però no hi ha prou temps i espai per cobrir-les totes en un sol article. No obstant això, val la pena esmentar i ensenyar com utilitzar la utilitat com a superior i ps.
És molt fàcil fer que collectl funcioni com a utilitat principal, només cal que executeu l'ordre següent al vostre terminal i veureu la sortida similar que us ofereix l'eina superior quan s'executa al vostre sistema 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
I ara, per últim, però no menys important, per utilitzar la utilitat collectl com a eina ps, executeu l'ordre següent al vostre terminal. Obtindreu informació sobre els processos del vostre sistema de la mateixa manera que ho feu quan executeu l'ordre ps al vostre terminal.
# 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
Estic molt segur que a molts administradors de sistemes Linux els agradarà aquesta eina i sentiran el seu poder quan l'utilitzin al màxim. Si voleu avançar els vostres coneixements sobre collectl al següent nivell, consulteu les seves pàgines de manual i seguiu practicant.
Només cal que escriviu la següent comanda al vostre terminal i comenceu a llegir.
# man collectl
Enllaços de referència
Col·lecció pàgina d'inici