Vet hur mycket en enskild process eller systemomfattande förbrukar CPU eller minne.
Som sysadmin måste du ofta hantera en incident där applikationen är långsam eller inte svarar på grund av hög CPU/minne/nätverksanvändning. Om servern bara är värd för en process är det lätt att ta reda på när processen förbrukar alla resurser. Föreställ dig dock en delad server där flera tjänster körs och du måste hitta vilken som äter alla resurser.
Det finns många övervakningsprogram som gör detta direkt. Men om du inte har en eller letar efter en kommandobaserad lösning, så är det här. De är alla GRATIS!
topp
Du kanske vill börja med att titta på topp- eller htopresultat för att se processöversikten.
Som du kan se nedan ger det en utmärkt uppfattning om vad alla processer använder. Om du tittar på den första, som är MySQL tar 11,9% av CPU och 2,5% av CPU.
top - 11:57:33 up 0 min, 1 user, load average: 3.69, 0.96, 0.32 Tasks: 165 total, 2 running, 113 sleeping, 0 stopped, 0 zombie %Cpu(s): 21.0 us, 5.5 sy, 0.0 ni, 70.5 id, 1.7 wa, 0.0 hi, 1.3 si, 0.0 st KiB Mem : 7637308 total, 5802888 free, 849512 used, 984908 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6495648 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1986 netdata 20 0 1738856 191560 22948 S 11.6 2.5 0:02.30 mysqld 3021 www-data 20 0 255288 78420 55484 S 6.6 1.0 0:01.55 php-fpm 3138 www-data 20 0 253096 79780 59228 S 6.6 1.0 0:00.92 php-fpm 3153 www-data 20 0 255116 79088 56472 S 5.0 1.0 0:00.70 php-fpm 3037 www-data 20 0 257200 81088 56216 S 4.3 1.1 0:01.50 php-fpm 3048 www-data 20 0 257088 78740 55380 S 4.3 1.0 0:01.46 php-fpm 3054 www-data 20 0 254160 72168 52108 S 3.7 0.9 0:01.32 php-fpm 3135 www-data 20 0 255084 75912 54836 S 3.7 1.0 0:00.91 php-fpm 3051 www-data 20 0 254096 73804 51964 S 3.0 1.0 0:01.38 php-fpm 2962 www-data 20 0 45280 7284 3488 R 2.0 0.1 0:00.22 openresty 1062 netdata 20 0 338748 76144 6720 S 1.0 1.0 0:01.31 netdata 1702 netdata 20 0 21852 4232 2352 S 1.0 0.1 0:00.34 apps.plugin 1729 netdata 20 0 18636 3280 2764 S 0.7 0.0 0:00.05 bash 1980 netdata 20 0 62008 12896 5796 S 0.7 0.2 0:00.14 redis-server 11 root 20 0 0 0 0 I 0.3 0.0 0:00.14 rcu_sched 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:00.92 dockerd 1857 root 20 0 10600 5564 4276 S 0.3 0.1 0:00.03 containerd-shim 2045 root 20 0 9948 6028 5016 S 0.3 0.1 0:00.14 forego 2934 root 20 0 13616 8760 5928 S 0.3 0.1 0:00.07 docker-gen 2966 systemd+ 20 0 25784 7924 2340 S 0.3 0.1 0:00.06 nginx
Toppen är installerad på nästan all Linux-distribution.
När du har identifierat den misstänkte kanske du vill fokusera på den processen istället för allt som du såg ovan. Du kan fortfarande använda toppkommandot men med några argument.
Låt oss säga att du känner till process-id (PID); du kan använda kommandot nedan.
topp -p $PID
Nedan ett exempel på top -p 3102
top - 11:59:56 up 3 min, 1 user, load average: 0.72, 0.70, 0.31 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.1 us, 2.9 sy, 0.0 ni, 89.1 id, 0.3 wa, 0.0 hi, 0.7 si, 0.0 st KiB Mem : 7637308 total, 5802024 free, 783672 used, 1051612 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6555636 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3102 www-data 20 0 329500 82376 60640 S 0.0 1.1 0:03.35 php-fpm
Du kan också använda grep med topp. Nedan ett exempel på hur du kontrollerar Docker-användning.
[email protected]:~# top | grep docker 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.38 dockerd 2934 root 20 0 14676 9652 5928 S 0.3 0.1 0:00.54 docker-gen 1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.39 dockerd 1007 root 20 0 1347424 74524 38872 S 1.0 1.0 0:01.42 dockerd 2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.55 docker-gen 2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.56 docker-gen
htop
Liknar toppen men med mer information. Som du kan fick den kommandokolumnen, som är praktisk för att identifiera processvägen. Och den är också färgglad.
htop kanske inte är installerat som standard, men du kan alltid göra det enligt nedan.
Installera htop på Ubuntu
apt-get install htop
Installera htop på CentOS/RHEL 8.x
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf update dnf install htop
blickar
Som namnet säger får du en systemanvändningsvy på en enda skärm. Pågående processer sorteras efter deras CPU-användning.
Du kan installera blickar på CentOS 8 med DNF enligt nedan.
dnf install glances
för CentOS7 kan du använda YUM
yum install glances
ovanpå
En liknande till ovan listade men med en lysande funktion för att spela in utdata i en fil så att du kan se dem senare. Föreställ dig att det finns ett mönster av att ha ett problem vid ett specifikt tidsfönster. Du kan schemalägga att skriva utdata i en fil via crontab eller annat, och senare kan du spela upp.
För att spela in utdata i en fil:
atop -w filename
och för att spela upp:
atop -r filename
Den stöder flera argument som intervall, prover, etc. och jag rekommenderar starkt att du tar en titt på man-sidan.
Om du bara är intresserad av felsökning i realtid, kör bara på toppen och du bör se som nedan.
Du kan installera ovanpå enligt nedan.
dnf install atop
ps
Låt oss kontrollera ps-kommandot nu.
Du kan använda kommandot ps med PID för att skriva ut deras CPU- och minnesanvändning.
ps -p $PID -o %cpu,%mem
Utgången ska se ut så här.
[email protected]:~# ps -p 1048 -o %cpu,%mem %CPU %MEM 0.2 3.0 [email protected]:~#
nmon
Interaktivt kommandoradsövervakningsverktyg för CPU, minne, diskar, nätverk, NFS och virtuellt minne. För att se den översta processen (genom användning), kan du köra nmon och trycka på t-knappen.
Du kan installera nmon enligt nedan.
dnf install nmon
Monit
Monit är en webbaserad och kommandoradslösning med öppen källkod för att övervaka serverresurser, demoner, filer, kataloger, filsystem, etc.
Monit fick också en cool widget.
Dess lätta övervakningsprogramvara. Men det finns mer att utforska här.
Monitorix
Ett lättviktsverktyg med öppen källkod för att övervaka Linux-servern. Monitorix har inbyggd HTTP så att du kan kontrollera användningen och andra saker på webben. Några av de andra användningsrapporterna inkluderar:
- Kernal/temperatur
- Filsystem och I/O
- Nätverkstrafik
- Apache/Mail/FTP/Nginx
- MySQL/Lack/Memcached
Monitorix erbjuder även larmkonfiguration så att du kan få meddelanden när saker inte står rätt till. Det kommer att vara ett bra val när du hanterar molnbaserade servrar och letar efter en proaktiv övervakningslösning.
Netdata
Netdata är en prestandaövervakning i realtid för systemresurser, applikationer, webbservrar, databaser, DNS, e-post, hårdvarusensorer och mycket mer. Det är öppen källkod och det är lätt att komma igång. All data samlas in, lagras och streamas för att du ska kunna visualisera interaktivt. Data samlas in varje sekund, så att du aldrig missar något.
Älskad av många branschledare.
Så vad du väntar på, försök ta kontroll över dina Linux-servrar.
btop
btop är en praktisk resursmonitor helt interaktiv med ett vackert användargränssnitt som hjälper dig att hantera Linux-servrarna.
Du kan enkelt visualisera processerna i en trädvy, filtrera från processlistan och hantera resurssvinen. btop levereras också med en automatisk skalningsgraf som visar nätverksanvändning.
Dessutom kan du också kontrollera diskhastighet och slutföra I/O-aktivitet.
Det finns mer i detta som du kan uppleva på Linux, FreeBSD och macOS.
Slutsats
Jag hoppas att verktygen ovan hjälper dig att visualisera serveranvändningen i realtid så att du kan vidta nödvändiga åtgärder. Om du precis har börjat som systemadministratör och vill få praktisk utbildning, kolla in det här Udemy kurs.