Come utilizzare Top, Netstat, Du e altri strumenti per monitorare le risorse del server

Introduzione

Ogni sistema informatico beneficia di una corretta amministrazione e monitoraggio. Tenere d’occhio il funzionamento del tuo sistema ti aiuterà a scoprire eventuali problemi e risolverli rapidamente.

Esistono molti strumenti a riga di comando creati a questo scopo. Questa guida ti presenterà alcune delle applicazioni più utili da avere nel tuo set di strumenti.

Prerequisiti

Per seguire questa guida, avrai bisogno di accesso a un computer con un sistema operativo basato su Linux. Questo può essere un server virtuale privato a cui ti sei connesso con SSH o il tuo computer locale. Tieni presente che questo tutorial è stato validato utilizzando un server Linux con Ubuntu 20.04, ma gli esempi forniti dovrebbero funzionare su un computer con qualsiasi versione di qualsiasi distribuzione Linux.

Se prevedi di utilizzare un server remoto per seguire questa guida, ti incoraggiamo a completare prima la nostra Guida all’Configurazione Iniziale del Server. Farlo ti fornirà un ambiente server sicuro, incluso un utente non root con privilegi sudo e un firewall configurato con UFW, che puoi utilizzare per sviluppare le tue competenze su Linux.

Passaggio 1 – Come visualizzare i processi in esecuzione in Linux

Puoi vedere tutti i processi in esecuzione sul tuo server utilizzando il comando top:

  1. top
Output
top - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers Swap: 0k total, 0k used, 0k free, 258976k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs

Le prime righe di output forniscono statistiche di sistema, come il carico della CPU/della memoria e il numero totale di attività in esecuzione.

Puoi vedere che c’è 1 processo in esecuzione e 55 processi che sono considerati in attesa perché non stanno utilizzando attivamente i cicli della CPU.

Il resto dell’output visualizzato mostra i processi in esecuzione e le loro statistiche di utilizzo. Per impostazione predefinita, top li ordina automaticamente in base all’utilizzo della CPU, quindi puoi vedere prima i processi più impegnativi. top continuerà a essere eseguito nel tuo shell finché non lo interrompi utilizzando la combinazione di tasti standard Ctrl+C per uscire da un processo in esecuzione. Questo invia un segnale kill, istruendo il processo a interrompersi delicatamente se è in grado di farlo.

Una versione migliorata di top, chiamata htop, è disponibile nella maggior parte dei repository dei pacchetti. Su Ubuntu 20.04, puoi installarlo con apt:

  1. sudo apt install htop

Dopo ciò, il comando htop sarà disponibile:

  1. htop
Output
Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05 CPU[ 0.0%] Tasks: 21, 3 thr; 1 running Swp[ 0/0MB] Uptime: 00:58:11 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init 311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid 314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae 389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys 407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5 408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5 553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br

htop offre una migliore visualizzazione dei thread CPU multipli, una migliore consapevolezza del supporto dei colori nei terminali moderni e più opzioni di ordinamento, tra le altre caratteristiche. A differenza di top, non è sempre installato per impostazione predefinita, ma può essere considerato un sostituto diretto. Puoi uscire da htop premendo Ctrl+C come con top.

Ecco alcuni tasti di scelta rapida che ti aiuteranno a utilizzare htop in modo più efficace:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: Accedere all’aiuto
  • k: Kill current/tagged process
  • F2: Configurare htop. Qui puoi scegliere le opzioni di visualizzazione.
  • /:: Cerca processi

Ci sono molte altre opzioni a cui puoi accedere tramite l’aiuto o la configurazione. Questi dovrebbero essere i tuoi primi passi nell’esplorare la funzionalità di htop. Nel prossimo passaggio, imparerai come monitorare la larghezza di banda di rete.

Passaggio 2 – Come Monitorare la Tua Larghezza di Banda di Rete

Se la tua connessione di rete sembra sovrautilizzata e non sei sicuro quale applicazione ne sia la causa, un programma chiamato nethogs è una buona scelta per scoprirlo.

Su Ubuntu, puoi installare nethogs con il seguente comando:

  1. sudo apt install nethogs

Dopo di ciò, il comando nethogs sarà disponibile:

  1. nethogs
Output
NetHogs version 0.8.0 PID USER PROGRAM DEV SENT RECEIVED 3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec 820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.912 0.233 KB/sec

nethogs associa ciascuna applicazione al suo traffico di rete.

Ci sono solo alcuni comandi che puoi utilizzare per controllare nethogs:

  • M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
  • R: Sort by traffic received.
  • S: Sort by traffic sent.
  • Q: quit

iptraf-ng è un altro modo per monitorare il traffico di rete. Fornisce diverse interfacce di monitoraggio interattive.

Nota: IPTraf richiede una dimensione dello schermo di almeno 80 colonne per 24 righe.

Su Ubuntu, puoi installare iptraf-ng con il seguente comando:

  1. sudo apt install iptraf-ng

iptraf-ng deve essere eseguito con privilegi di root, quindi dovresti precederlo con sudo:

  1. sudo iptraf-ng

Ti verrà presentato un menu che utilizza un framework di interfaccia a riga di comando chiamato ncurses.

Con questo menu, puoi selezionare quale interfaccia desideri accedere.

Ad esempio, per ottenere una panoramica di tutto il traffico di rete, puoi selezionare il primo menu e poi “Tutte le interfacce”. Ti darà uno schermo che appare così:

Qui puoi vedere quali indirizzi IP stai comunicando su tutte le tue interfacce di rete.

Se desideri che quegli indirizzi IP vengano risolti in domini, puoi abilitare la ricerca DNS inversa uscendo dalla schermata del traffico, selezionando Configura e poi attivando Ricerca DNS inversa.

Puoi anche abilitare i Nomi dei servizi TCP/UDP per vedere i nomi dei servizi in esecuzione invece dei numeri di porta.

Con entrambe queste opzioni abilitate, la visualizzazione potrebbe apparire così:

Il comando netstat è un altro strumento versatile per raccogliere informazioni di rete.

netstat è installato per impostazione predefinita su molti sistemi moderni, ma è possibile installarlo manualmente scaricandolo dai repository di pacchetti predefiniti del server. Su gran parte dei sistemi Linux, inclusa Ubuntu, il pacchetto contenente netstat è net-tools:

  1. sudo apt install net-tools

Per impostazione predefinita, il comando netstat da solo stampa un elenco di socket aperti:

  1. netstat
Output
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 5 [ ] DGRAM 6559 /dev/log unix 3 [ ] STREAM CONNECTED 9386 unix 3 [ ] STREAM CONNECTED 9385 . . .

Se aggiungi l’opzione -a, elencherà tutte le porte, sia in ascolto che non in ascolto:

  1. netstat -a
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket . . .

Se desideri filtrare per vedere solo connessioni TCP o UDP, utilizza rispettivamente i flag -t o -u:

  1. netstat -at
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN

Visualizza le statistiche passando il flag “-s”:

  1. netstat -s
Output
Ip: 13500 total packets received 0 forwarded 0 incoming packets discarded 13500 incoming packets delivered 3078 requests sent out 16 dropped because of missing route Icmp: 41 ICMP messages received 0 input ICMP message failed. ICMP input histogram: echo requests: 1 echo replies: 40 . . .

Se desideri aggiornare continuamente l’output, puoi utilizzare il flag -c. Ci sono molte altre opzioni disponibili per netstat che puoi apprendere consultando la sua pagina del manuale.

Nel prossimo passaggio, imparerai alcuni modi utili per monitorare l’utilizzo del disco.

Passaggio 3 – Come monitorare l’utilizzo del disco

Per una rapida panoramica di quanto spazio su disco è rimasto sui tuoi dischi collegati, puoi utilizzare il programma df.

Senza alcuna opzione, il suo output appare così:

  1. df
Output
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda 31383196 1228936 28581396 5% / udev 505152 4 505148 1% /dev tmpfs 203920 204 203716 1% /run none 5120 0 5120 0% /run/lock none 509800 0 509800 0% /run/shm

Questo visualizza l’utilizzo del disco in byte, che potrebbe essere un po’ difficile da leggere.

Per risolvere questo problema, puoi specificare l’output in un formato leggibile dall’uomo:

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm

Se vuoi vedere lo spazio totale disponibile su tutti i filesystem, puoi passare l’opzione --total. Questo aggiungerà una riga in fondo con informazioni di riepilogo:

  1. df -h --total
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm total 32G 1.2G 29G 4%

df può fornire una panoramica utile. Un’altra comando, du, fornisce una suddivisione per directory.

du analizzerà l’utilizzo per la directory corrente e eventuali sottodirectory. L’output predefinito di du in esecuzione in una directory home quasi vuota appare così:

  1. du
Output
4 ./.cache 8 ./.ssh 28 .

Ancora una volta, puoi specificare un output leggibile dall’utente passando -h:

  1. du -h
Output
4.0K ./.cache 8.0K ./.ssh 28K .

Per vedere le dimensioni dei file così come delle directory, digita quanto segue:

  1. du -a
Output
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .

Per un totale in fondo, puoi aggiungere l’opzione -c:

  1. du -c
Output
4 ./.cache 8 ./.ssh 28 . 28 total

Se sei interessato solo al totale e non ai dettagli, puoi eseguire:

  1. du -s
Output
28 .

C’è anche un’interfaccia ncurses per du, chiamata in modo appropriato ncdu, che puoi installare:

  1. sudo apt install ncdu

Questo rappresenterà graficamente l’utilizzo del disco:

  1. ncdu
Output
--- /root ---------------------------------------------------------------------- 8.0KiB [##########] /.ssh 4.0KiB [##### ] /.cache 4.0KiB [##### ] .bashrc 4.0KiB [##### ] .profile 4.0KiB [##### ] .bash_history

Puoi navigare nel filesystem utilizzando le frecce su e giù e premendo Invio su qualsiasi voce di directory.

Nella sezione seguente, imparerai come monitorare l’utilizzo della memoria.

Passo 4 – Come Monitorare l’Utilizzo della Memoria

Puoi controllare l’utilizzo attuale della memoria sul tuo sistema utilizzando il comando free.

Quando utilizzato senza opzioni, l’output appare così:

  1. free
Output
total used free shared buff/cache available Mem: 1004896 390988 123484 3124 490424 313744 Swap: 0 0 0

Per visualizzare in un formato più leggibile, è possibile passare l’opzione -m per visualizzare l’output in megabyte:

  1. free -m
Output
total used free shared buff/cache available Mem: 981 382 120 3 478 306 Swap: 0 0 0

La riga Mem include la memoria utilizzata per il buffering e la cache, che viene liberata non appena necessaria per altri scopi. Swap è la memoria che è stata scritta su un file di swap su disco per conservare la memoria attiva.

Infine, il comando vmstat può produrre varie informazioni sul sistema, inclusa la memoria, lo swap, l’I/O del disco e le informazioni sulla CPU.

Puoi utilizzare il comando per ottenere un’altra vista sull’utilizzo della memoria:

  1. vmstat
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0

Puoi vedere questo in megabyte specificando le unità con il flag -S:

  1. vmstat -S M
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0

Per ottenere alcune statistiche generali sull’utilizzo della memoria, digita:

  1. vmstat -s -S M
Output
495 M total memory 398 M used memory 252 M active memory 119 M inactive memory 96 M free memory 120 M buffer memory 242 M swap cache 0 M total swap 0 M used swap 0 M free swap . . .

Per ottenere informazioni sull’utilizzo della cache dei singoli processi di sistema, digita:

  1. vmstat -m -S M
Output
Cache Num Total Size Pages ext4_groupinfo_4k 195 195 104 39 UDPLITEv6 0 0 768 10 UDPv6 10 10 768 10 tw_sock_TCPv6 0 0 256 16 TCPv6 11 11 1408 11 kcopyd_job 0 0 2344 13 dm_uevent 0 0 2464 13 bsg_cmd 0 0 288 14 . . .

Questo ti darà dettagli su che tipo di informazioni sono memorizzate nella cache.

Conclusion

Utilizzando questi strumenti, dovresti iniziare a poter monitorare il tuo server dalla riga di comando. Ci sono molte altre utilità di monitoraggio utilizzate per scopi diversi, ma queste sono un buon punto di partenza.

Successivamente, potresti voler apprendere la gestione dei processi Linux utilizzando ps, kill e nice.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources