Πώς να παρακολουθείτε την CPU και τη μνήμη στο Linux;

Μάθετε πόσο μια μεμονωμένη διεργασία ή σε όλο το σύστημα καταναλώνει CPU ή μνήμη.

Ως sysadmin, συχνά πρέπει να αντιμετωπίσετε ένα περιστατικό όπου η εφαρμογή είναι αργή ή δεν ανταποκρίνεται λόγω υψηλής χρήσης CPU/μνήμης/δικτύου. Εάν ο διακομιστής φιλοξενεί μόνο μία διαδικασία, τότε είναι εύκολο να μάθετε πότε η διαδικασία καταναλώνει όλους τους πόρους. Ωστόσο, φανταστείτε έναν κοινόχρηστο διακομιστή όπου εκτελούνται πολλές υπηρεσίες και πρέπει να βρείτε ποιος τρώει όλους τους πόρους.

Υπάρχουν πολλά λογισμικά παρακολούθησης που το κάνουν αυτό από το κουτί. Αλλά αν δεν έχετε ένα ή ψάχνετε για μια λύση που βασίζεται σε εντολές, τότε ορίστε. Είναι όλα ΔΩΡΕΑΝ!

μπλουζα

Μπορεί να θέλετε να ξεκινήσετε κοιτάζοντας το κορυφαίο ή το htop αποτέλεσμα για να δείτε την επισκόπηση των διαδικασιών.

Όπως μπορείτε να δείτε παρακάτω, δίνει μια εξαιρετική ιδέα για το τι χρησιμοποιούν όλες οι διαδικασίες. Αν κοιτάξετε το πρώτο, που είναι ότι η MySQL παίρνει το 11,9% της CPU και το 2,5% της 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

Η κορυφή είναι εγκατεστημένη σε όλες σχεδόν τις διανομές Linux.

  Πώς να χρησιμοποιήσετε το Angry IP Scanner για να σαρώσετε μια διεύθυνση IP σε Linux

Μόλις εντοπίσετε τον ύποπτο, τότε μπορεί να θέλετε να εστιάσετε σε αυτή τη διαδικασία αντί σε όλα όσα είδατε παραπάνω. Μπορείτε ακόμα να χρησιμοποιήσετε την κορυφαία εντολή αλλά με κάποιο όρισμα.

Ας υποθέσουμε ότι γνωρίζετε το αναγνωριστικό διαδικασίας (PID). μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή.

top -p $PID

Παρακάτω ένα παράδειγμα 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

Μπορείτε επίσης να χρησιμοποιήσετε το grep with top. Παρακάτω ένα παράδειγμα ελέγχου χρήσης Docker.

[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

Παρόμοια με την κορυφή αλλά με περισσότερες πληροφορίες. Όπως μπορείτε, έλαβε τη στήλη εντολών, η οποία είναι χρήσιμη για τον προσδιορισμό της διαδρομής της διαδικασίας. Και επίσης είναι πολύχρωμο.

  Πώς να χρησιμοποιήσετε την εντολή εμφάνισης στο Linux

Το htop μπορεί να μην είναι εγκατεστημένο από προεπιλογή, αλλά μπορείτε πάντα να το κάνετε όπως παρακάτω.

Εγκαταστήστε το htop στο Ubuntu

apt-get install htop

Εγκαταστήστε το htop σε CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

ματιές

Όπως λέει και το όνομα, λαμβάνετε μια προβολή χρήσης συστήματος σε μία οθόνη. Οι διεργασίες που εκτελούνται ταξινομούνται ανάλογα με τη χρήση της CPU.

Μπορείτε να εγκαταστήσετε Glances στο CentOS 8 χρησιμοποιώντας DNF όπως παρακάτω.

dnf install glances

για το CentOS7, μπορείτε να χρησιμοποιήσετε το YUM

yum install glances

κορυφή

Παρόμοιο με το παραπάνω, αλλά με εξαιρετική δυνατότητα εγγραφής της εξόδου σε ένα αρχείο, ώστε να μπορείτε να τα προβάλετε αργότερα. Φανταστείτε ότι υπάρχει ένα μοτίβο να αντιμετωπίζετε ένα πρόβλημα σε ένα συγκεκριμένο χρονικό παράθυρο. Μπορείτε να προγραμματίσετε την εγγραφή της εξόδου σε ένα αρχείο μέσω του crontab ή άλλου, και αργότερα μπορείτε να κάνετε αναπαραγωγή.

Για να καταγράψετε την έξοδο σε ένα αρχείο:

atop -w filename

και για αναπαραγωγή:

atop -r filename

Υποστηρίζει πολλαπλά ορίσματα όπως διάστημα, δείγματα κ.λπ. και θα συνιστούσα ανεπιφύλακτα να ρίξετε μια ματιά στη σελίδα man.

Εάν σας ενδιαφέρει απλώς η αντιμετώπιση προβλημάτων σε πραγματικό χρόνο, τότε απλώς εκτελέστε το από πάνω και θα δείτε όπως παρακάτω.

Μπορείτε να εγκαταστήσετε στο επάνω μέρος όπως παρακάτω.

dnf install atop

ΥΣΤΕΡΟΓΡΑΦΟ

Ας ελέγξουμε την εντολή ps τώρα.

Μπορείτε να χρησιμοποιήσετε την εντολή ps με το PID για να εκτυπώσετε τη χρήση της CPU και της μνήμης τους.

ps -p $PID -o %cpu,%mem

Η έξοδος πρέπει να μοιάζει με αυτό.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

Διαδραστικό εργαλείο παρακολούθησης γραμμής εντολών για χρήση CPU, μνήμης, δίσκων, δικτύου, NFS και εικονικής μνήμης. Για να δείτε την κορυφαία διαδικασία (κατά χρήση), μπορείτε να εκτελέσετε nmon και να πατήσετε το κουμπί t.

  Πώς να σαρώσετε ανοιχτές θύρες σε υπολογιστή Linux με το Zenmap

Μπορείτε να εγκαταστήσετε το nmon όπως παρακάτω.

dnf install nmon

Monit

Monit είναι μια λύση ανοιχτού κώδικα βασισμένη στον ιστό και γραμμή εντολών για την παρακολούθηση πόρων διακομιστών, δαιμόνων, αρχείων, καταλόγων, συστημάτων αρχείων κ.λπ.

Η Monit απέκτησε επίσης ένα ωραίο widget.

Το ελαφρύ λογισμικό παρακολούθησης του. Όμως, υπάρχουν περισσότερα για εξερεύνηση εδώ.

Monitorix

Ένα ελαφρύ βοηθητικό πρόγραμμα ανοιχτού κώδικα για την παρακολούθηση του διακομιστή Linux. Monitorix έλαβε ενσωματωμένο HTTP ώστε να μπορείτε να ελέγχετε τη χρήση και άλλα πράγματα στον ιστό. Μερικές από τις άλλες αναφορές χρήσης περιλαμβάνουν:

  • Πυρήνα/θερμοκρασία
  • Σύστημα αρχείων και I/O
  • Κυκλοφορία δικτύου
  • Apache/Mail/FTP/Nginx
  • MySQL/Varnish/Memcached

Το Monitorix προσφέρει επίσης διαμόρφωση ειδοποίησης, ώστε να μπορείτε να λαμβάνετε ειδοποιήσεις όταν τα πράγματα δεν είναι καλά. Θα είναι μια καλή επιλογή όταν διαχειρίζεστε διακομιστές που βασίζονται σε σύννεφο και αναζητάτε μια προληπτική λύση παρακολούθησης.

Netdata

Netdata είναι μια παρακολούθηση απόδοσης σε πραγματικό χρόνο για πόρους συστήματος, εφαρμογές, διακομιστές ιστού, βάσεις δεδομένων, DNS, αλληλογραφία, αισθητήρες υλικού και πολλά άλλα. Είναι ανοιχτού κώδικα και είναι εύκολο να ξεκινήσετε. Όλα τα δεδομένα συλλέγονται, αποθηκεύονται και μεταδίδονται σε ροή για να τα οπτικοποιήσετε διαδραστικά. Τα δεδομένα συλλέγονται κάθε δευτερόλεπτο, ώστε να μην χάνετε ποτέ τίποτα.

Αγαπήθηκε από πολλούς ηγέτες του κλάδου.

Αυτό που περιμένετε λοιπόν, προσπαθήστε να πάρετε τον έλεγχο των διακομιστών σας Linux.

btop

btop είναι μια εύχρηστη οθόνη πόρων πλήρως διαδραστική με ένα όμορφο περιβάλλον χρήστη που σας βοηθά να διαχειρίζεστε τους διακομιστές Linux.

Μπορείτε εύκολα να οπτικοποιήσετε τις διεργασίες σε μια προβολή δέντρου, να φιλτράρετε από τη λίστα διεργασιών και να διαχειριστείτε τους πόρους. Το btop τροφοδοτείται επίσης με ένα γράφημα αυτόματης κλιμάκωσης που δείχνει τη χρήση του δικτύου.

Επιπλέον, μπορείτε επίσης να ελέγξετε την ταχύτητα του δίσκου και να ολοκληρώσετε τη δραστηριότητα I/O.

Υπάρχουν περισσότερα σε αυτό που μπορείτε να ζήσετε σε Linux, FreeBSD και macOS.

συμπέρασμα

Ελπίζω τα παραπάνω εργαλεία να σας βοηθήσουν να οπτικοποιήσετε τη χρήση του διακομιστή σε πραγματικό χρόνο, ώστε να μπορείτε να κάνετε τις απαραίτητες ενέργειες. Αν μόλις ξεκινήσατε ως διαχειριστής συστήματος και θέλετε να λάβετε πρακτική εκπαίδευση, τότε ρίξτε μια ματιά σε αυτό Μάθημα Udemy.