Hoe Top, Netstat, Du en andere tools te gebruiken om serverresources te monitoren

Introductie

Elk computersysteem profiteert van een goede administratie en monitoring. Het in de gaten houden van hoe je systeem draait, zal je helpen problemen te ontdekken en ze snel op te lossen.

Er zijn genoeg command line-hulpprogramma’s gemaakt voor dit doel. Deze gids zal je introduceren aan enkele van de meest behulpzame toepassingen om in je gereedschapskist te hebben.

Vereisten

Om deze gids te volgen, heb je toegang nodig tot een computer met een op Linux gebaseerd besturingssysteem. Dit kan een virtuele privéserver zijn waarop je verbinding hebt gemaakt met SSH of je lokale machine. Let op: deze tutorial is gevalideerd met een Linux-server met Ubuntu 20.04, maar de voorbeelden zouden moeten werken op een computer met elke versie van elke Linux-distributie.

Als je van plan bent een externe server te gebruiken om deze gids te volgen, moedigen we je aan om eerst onze Handleiding voor het initiële serverconfiguratie te voltooien. Hierdoor krijg je een veilige serveromgeving – inclusief een niet-root gebruiker met sudo-rechten en een firewall geconfigureerd met UFW – die je kunt gebruiken om je Linux-vaardigheden op te bouwen.

Stap 1 – Hoe processen bekijken in Linux

U kunt alle processen die op uw server draaien bekijken door het top-commando te gebruiken:

  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

De eerste paar regels van de uitvoer geven systeemstatistieken weer, zoals CPU/geheugenbelasting en het totale aantal draaiende taken.

U kunt zien dat er 1 draaiend proces is en 55 processen die als slapend worden beschouwd omdat ze geen CPU-cycli actief gebruiken.

Het resterende deel van de weergegeven uitvoer toont de draaiende processen en hun gebruikstatistieken. Standaard sorteert top deze automatisch op CPU-gebruik, zodat u eerst de drukste processen kunt zien. top blijft actief in uw shell totdat u het stopt met de standaard toetsencombinatie Ctrl+C om een draaiend proces af te sluiten. Dit verzendt een kill-signaal, waardoor het proces op een nette manier wordt gestopt als het daartoe in staat is.

Een verbeterde versie van top, genaamd htop, is beschikbaar in de meeste pakketrepositories. Op Ubuntu 20.04 kunt u het installeren met apt:

  1. sudo apt install htop

Daarna is het htop-commando beschikbaar:

  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 biedt een betere visualisatie van meerdere CPU-threads, een beter bewustzijn van de kleurenondersteuning in moderne terminals en meer sorteeropties, onder andere functies. In tegenstelling tot top, wordt het niet altijd standaard geïnstalleerd, maar kan het worden beschouwd als een vervanging die direct kan worden gebruikt. Je kunt htop afsluiten door op Ctrl+C te drukken, net zoals bij top.

Hier zijn enkele sneltoetsen die je zullen helpen htop effectiever te gebruiken:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: Toegang tot hulp
  • k: Kill current/tagged process
  • F2: Configureer htop. Hier kun je weergaveopties kiezen.
  • /: Zoek processen

Er zijn nog veel andere opties die je kunt raadplegen via de hulpfunctie of de instellingen. Dit zou je eerste stap moeten zijn bij het verkennen van de functionaliteit van htop. In de volgende stap leer je hoe je je netwerkbandbreedte kunt monitoren.

Stap 2 – Hoe je je netwerkbandbreedte kunt monitoren

Als je netwerkverbinding overbelast lijkt en je niet zeker weet welke toepassing de boosdoener is, is een programma genaamd nethogs een goede keuze om erachter te komen.

Op Ubuntu kun je nethogs installeren met de volgende opdracht:

  1. sudo apt install nethogs

Nadat dat is geïnstalleerd, is het nethogs-commando beschikbaar:

  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 koppelt elke toepassing aan zijn netwerkverkeer.

Er zijn slechts een paar commando’s die je kunt gebruiken om nethogs te controleren:

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

iptraf-ng is een andere manier om het netwerkverkeer te monitoren. Het biedt verschillende interactieve monitoringinterfaces.

Let op: IPTraf vereist een schermgrootte van minimaal 80 kolommen bij 24 regels.

Op Ubuntu kun je iptraf-ng installeren met het volgende commando:

  1. sudo apt install iptraf-ng

iptraf-ng moet worden uitgevoerd met rootrechten, dus je moet het vooraf laten gaan door sudo:

  1. sudo iptraf-ng

Je krijgt een menu te zien dat gebruikmaakt van een populaire command line interface-framework genaamd ncurses.

Met dit menu kun je selecteren welke interface je wilt openen.

Bijvoorbeeld, om een overzicht te krijgen van al het netwerkverkeer, kun je het eerste menu selecteren en vervolgens “Alle interfaces”. Het geeft je een scherm dat er zo uitziet:

Hier kun je zien met welke IP-adressen je communiceert op al je netwerkinterfaces.

Als je deze IP-adressen wilt laten vertalen naar domeinen, kun je reverse DNS-lookup inschakelen door het verkeersscherm te verlaten, Configureren te selecteren en vervolgens Reverse DNS-lookups in te schakelen.

Je kunt ook TCP/UDP-servicenamen inschakelen om de namen van de services te zien die worden uitgevoerd in plaats van de poortnummers.

Met beide opties ingeschakeld, kan het scherm er zo uitzien:

Het netstat-commando is een ander veelzijdig hulpmiddel voor het verzamelen van netwerkgegevens.

netstat is standaard geïnstalleerd op de meeste moderne systemen, maar je kunt het zelf installeren door het te downloaden van de standaard pakketrepositories van je server. Op de meeste Linux-systemen, inclusief Ubuntu, is het pakket dat netstat bevat net-tools:

  1. sudo apt install net-tools

Standaard geeft het netstat commando op zichzelf een lijst weer van open sockets:

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

Als je een -a optie toevoegt, zal het alle poorten, luisterend en niet-luisterend, weergeven:

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

Als je alleen TCP- of UDP-verbindingen wilt zien, gebruik dan respectievelijk de -t of -u vlaggen:

  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

Zie statistieken door de “-s” vlag door te geven:

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

Als je de uitvoer continu wilt bijwerken, kun je de -c vlag gebruiken. Er zijn nog veel meer opties beschikbaar voor netstat die je kunt leren door de handleiding te bekijken.

In de volgende stap leer je enkele nuttige manieren om je schijfgebruik te controleren.

Stap 3 – Hoe je je schijfgebruik kunt controleren

Voor een snel overzicht van hoeveel schijfruimte er nog beschikbaar is op je aangesloten schijven, kun je het df programma gebruiken.

Zonder enige opties ziet de uitvoer er als volgt uit:

  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

Dit geeft schijfgebruik weer in bytes, wat misschien wat moeilijk te lezen is.

Om dit probleem op te lossen, kun je de uitvoer specificeren in een leesbaar formaat voor mensen:

  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

Als je de totale schijfruimte wilt zien die beschikbaar is op alle bestandssystemen, kun je de optie --total doorgeven. Dit voegt een rij onderaan toe met samenvattende informatie:

  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 kan een handig overzicht bieden. Een andere opdracht, du, geeft een uitsplitsing per map.

du zal het gebruik analyseren voor de huidige map en alle submappen. De standaarduitvoer van du die wordt uitgevoerd in een bijna lege thuismap ziet er zo uit:

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

Nogmaals, je kunt leesbare uitvoer specificeren door -h door te geven:

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

Om bestandsgroottes en mappen te zien, typ je het volgende:

  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 .

Voor een totaal onderaan kun je de optie -c toevoegen:

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

Als je alleen geïnteresseerd bent in het totaal en niet in de details, kun je het volgende uitvoeren:

  1. du -s
Output
28 .

Er is ook een ncurses-interface voor du, toepasselijk genaamd ncdu, die je kunt installeren:

  1. sudo apt install ncdu

Dit zal je schijfgebruik grafisch weergeven:

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

Je kunt door het bestandssysteem bladeren door de pijltoetsen omhoog en omlaag te gebruiken en op Enter te drukken op een willekeurige mapvermelding.

In de laatste sectie leer je hoe je je geheugengebruik kunt controleren.

Stap 4 – Hoe je je geheugengebruik kunt controleren

Je kunt het huidige geheugengebruik op je systeem controleren door het free-commando te gebruiken.

Wanneer gebruikt zonder opties, ziet de uitvoer er zo uit:

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

Om weer te geven in een meer leesbaar formaat, kunt u de -m optie doorgeven om de uitvoer in megabytes weer te geven:

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

De Mem regel bevat het geheugen dat wordt gebruikt voor buffering en caching, dat wordt vrijgemaakt zodra het nodig is voor andere doeleinden. Swap is geheugen dat naar een swapbestand op schijf is geschreven om actief geheugen te behouden.

Tenslotte kan het vmstat commando verschillende informatie over uw systeem uitvoeren, inclusief geheugen, swap, schijf I/O en CPU-informatie.

U kunt het commando gebruiken om een ander beeld te krijgen van het geheugengebruik:

  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

Dit kunt u in megabytes zien door eenheden te specificeren met de -S vlag:

  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

Om wat algemene statistieken over geheugengebruik te krijgen, typ:

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

Om informatie te krijgen over het cachegebruik van individuele systeemprocessen, typ:

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

Dit geeft u details over wat voor soort informatie is opgeslagen in de cache.

Conclusie

Met behulp van deze tools zou u moeten kunnen beginnen met het monitoren van uw server vanaf de commandoregel. Er zijn veel andere monitoringshulpprogramma’s die worden gebruikt voor verschillende doeleinden, maar dit zijn een goed startpunt.

Volgende, je wilt misschien leren over Linux procesbeheer met behulp van ps, kill en nice.

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