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:
Outputtop - 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
:
Daarna is het htop
-commando beschikbaar:
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:
Nadat dat is geïnstalleerd, is het nethogs
-commando beschikbaar:
OutputNetHogs 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:
iptraf-ng
moet worden uitgevoerd met rootrechten, dus je moet het vooraf laten gaan door sudo
:
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
:
Standaard geeft het netstat
commando op zichzelf een lijst weer van open sockets:
OutputActive 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:
OutputActive 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:
OutputActive 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:
OutputIp:
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:
OutputFilesystem 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:
OutputFilesystem 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:
OutputFilesystem 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:
Output4 ./.cache
8 ./.ssh
28 .
Nogmaals, je kunt leesbare uitvoer specificeren door -h
door te geven:
Output4.0K ./.cache
8.0K ./.ssh
28K .
Om bestandsgroottes en mappen te zien, typ je het volgende:
Output0 ./.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:
Output4 ./.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:
Output28 .
Er is ook een ncurses
-interface voor du
, toepasselijk genaamd ncdu
, die je kunt installeren:
Dit zal je schijfgebruik grafisch weergeven:
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:
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:
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:
Outputprocs -----------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:
Outputprocs -----------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:
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:
OutputCache 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.