Πώς να παρακολουθείτε τη χρήση συστήματος, τις διακοπές λειτουργίας και την αντιμετώπιση προβλημάτων διακομιστών Linux - Μέρος 9


Αν και το Linux είναι πολύ αξιόπιστο, οι σοφοί διαχειριστές συστήματος θα πρέπει να βρουν έναν τρόπο να παρακολουθούν τη συμπεριφορά και τη χρήση του συστήματος ανά πάσα στιγμή. Η διασφάλιση χρόνου λειτουργίας όσο το δυνατόν πλησιέστερα στο 100% και η διαθεσιμότητα πόρων αποτελούν κρίσιμες ανάγκες σε πολλά περιβάλλοντα. Η εξέταση της προηγούμενης και της τρέχουσας κατάστασης του συστήματος θα μας επιτρέψει να προβλέψουμε και πιθανότατα να αποτρέψουμε πιθανά προβλήματα.

Παρουσίαση του προγράμματος πιστοποίησης του Linux Foundation

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

Αξιοποίηση Αποθηκευτικού Χώρου

Υπάρχουν 2 γνωστές εντολές στο Linux που χρησιμοποιούνται για την επιθεώρηση της χρήσης του αποθηκευτικού χώρου: df και du.

Το πρώτο, df (που σημαίνει "χωρίς δίσκο"), χρησιμοποιείται συνήθως για την αναφορά της συνολικής χρήσης του χώρου στο δίσκο ανά σύστημα αρχείων.

Παράδειγμα 1: Αναφορά χρήσης χώρου στο δίσκο σε byte και αναγνώσιμη από τον άνθρωπο μορφή

Χωρίς επιλογές, το df αναφέρει τη χρήση χώρου στο δίσκο σε byte. Με τη σημαία -h θα εμφανίζει τις ίδιες πληροφορίες χρησιμοποιώντας MB ή GB. Σημειώστε ότι αυτή η αναφορά περιλαμβάνει επίσης το συνολικό μέγεθος κάθε συστήματος αρχείων (σε μπλοκ 1-K), τους ελεύθερους και διαθέσιμους χώρους και το σημείο προσάρτησης κάθε συσκευής αποθήκευσης.

df
df -h

Αυτό είναι σίγουρα ωραίο - αλλά υπάρχει ένας άλλος περιορισμός που μπορεί να καταστήσει ένα σύστημα αρχείων άχρηστο, και ο οποίος εξαντλείται από inode. Όλα τα αρχεία σε ένα σύστημα αρχείων αντιστοιχίζονται σε ένα inode που περιέχει τα μεταδεδομένα του.

Παράδειγμα 2: Έλεγχος χρήσης inode από σύστημα αρχείων σε μορφή αναγνώσιμη από τον άνθρωπο με
df -hTi

μπορείτε να δείτε την ποσότητα των χρησιμοποιημένων και διαθέσιμων ινωδών:

Σύμφωνα με την παραπάνω εικόνα, υπάρχουν 146 χρησιμοποιημένοι inodes (1%) στο /home, πράγμα που σημαίνει ότι μπορείτε ακόμα να δημιουργήσετε 226K αρχεία σε αυτό το σύστημα αρχείων.

Παράδειγμα 3: Εύρεση και/ή διαγραφή κενών αρχείων και καταλόγων

Λάβετε υπόψη ότι μπορείτε να εξαντλήσετε τον αποθηκευτικό χώρο πολύ πριν εξαντληθούν τα inode και το αντίστροφο. Για το λόγο αυτό, πρέπει να παρακολουθείτε όχι μόνο τη χρήση του αποθηκευτικού χώρου αλλά και τον αριθμό των inodes που χρησιμοποιούνται από το σύστημα αρχείων.

Χρησιμοποιήστε τις ακόλουθες εντολές για να βρείτε κενά αρχεία ή καταλόγους (που καταλαμβάνουν 0B) που χρησιμοποιούν inodes χωρίς λόγο:

find  /home -type f -empty
find  /home -type d -empty

Επίσης, μπορείτε να προσθέσετε τη σημαία -delete στο τέλος κάθε εντολής, εάν θέλετε επίσης να διαγράψετε αυτά τα κενά αρχεία και καταλόγους:

find  /home -type f -empty --delete
find  /home -type f -empty

Η προηγούμενη διαδικασία διέγραψε 4 αρχεία. Ας ελέγξουμε ξανά τον αριθμό των χρησιμοποιημένων/διαθέσιμων κόμβων στο /home:

df -hTi | grep home

Όπως μπορείτε να δείτε, υπάρχουν 142 χρησιμοποιημένα inodes τώρα (4 λιγότερα από πριν).

Παράδειγμα 4: Εξέταση χρήσης δίσκου ανά κατάλογο

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

Το παράδειγμα δίνεται για το /var, το οποίο όπως μπορείτε να δείτε στην πρώτη εικόνα παραπάνω, χρησιμοποιείται στο 67%.

du -sch /var/*

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

Διαβάστε επίσης

  1. 12 Χρήσιμες εντολές «df» για έλεγχο χώρου στο δίσκο
  2. 10 Χρήσιμες εντολές "du" για να βρείτε τη χρήση δίσκου αρχείων και καταλόγων

Μνήμη και χρήση CPU

Το κλασικό εργαλείο στο Linux που χρησιμοποιείται για να εκτελέσει έναν συνολικό έλεγχο της χρήσης της CPU/μνήμης και της διαχείρισης διεργασιών είναι η κορυφαία εντολή. Επιπλέον, το επάνω μέρος εμφανίζει μια προβολή σε πραγματικό χρόνο ενός συστήματος που λειτουργεί. Υπάρχουν και άλλα εργαλεία που θα μπορούσαν να χρησιμοποιηθούν για τον ίδιο σκοπό, όπως το htop, αλλά έχω συμβιβαστεί με το top επειδή είναι εγκατεστημένο εκτός συσκευασίας σε οποιαδήποτε διανομή Linux.

Παράδειγμα 5: Εμφάνιση μιας ζωντανής κατάστασης του συστήματός σας με την κορυφή

Για να ξεκινήσετε από την κορυφή, απλώς πληκτρολογήστε την ακόλουθη εντολή στη γραμμή εντολών σας και πατήστε Enter.

top

Ας εξετάσουμε μια τυπική κορυφαία έξοδο:

Στις σειρές 1 έως 5 εμφανίζονται οι ακόλουθες πληροφορίες:

1. Η τρέχουσα ώρα (8:41:32 μ.μ.) και η ώρα λειτουργίας (7 ώρες και 41 λεπτά). Μόνο ένας χρήστης είναι συνδεδεμένος στο σύστημα και ο μέσος όρος φόρτωσης κατά τα τελευταία 1, 5 και 15 λεπτά, αντίστοιχα. 0,00, 0,01 και 0,05 υποδεικνύουν ότι σε αυτά τα χρονικά διαστήματα, το σύστημα ήταν αδρανές για 0% του χρόνου (0,00: καμία διεργασία δεν περίμενε την CPU), στη συνέχεια υπερφορτώθηκε κατά 1% (0,01: κατά μέσο όρο 0,01 διεργασίες περίμεναν την CPU) και 5% (0,05). Εάν είναι μικρότερο από 0 και όσο μικρότερος είναι ο αριθμός (0,65, για παράδειγμα), το σύστημα ήταν αδρανές για 35% τα τελευταία 1, 5 ή 15 λεπτά, ανάλογα με το πού εμφανίζεται το 0,65.

2. Αυτήν τη στιγμή εκτελούνται 121 διεργασίες (μπορείτε να δείτε την πλήρη λίστα σε 6). Μόνο 1 από αυτά εκτελείται (πάνω σε αυτήν την περίπτωση, όπως μπορείτε να δείτε στη στήλη %CPU) και τα υπόλοιπα 120 περιμένουν στο παρασκήνιο, αλλά βρίσκονται σε κατάσταση ύπνου και θα παραμείνουν σε αυτήν την κατάσταση μέχρι να τους καλέσουμε. Πως? Μπορείτε να το επαληθεύσετε ανοίγοντας μια προτροπή mysql και να εκτελέσετε μερικά ερωτήματα. Θα παρατηρήσετε πώς αυξάνεται ο αριθμός των διεργασιών που εκτελούνται.

Εναλλακτικά, μπορείτε να ανοίξετε ένα πρόγραμμα περιήγησης ιστού και να πλοηγηθείτε σε οποιαδήποτε δεδομένη σελίδα που εξυπηρετείται από τον Apache και θα έχετε το ίδιο αποτέλεσμα. Φυσικά, αυτά τα παραδείγματα προϋποθέτουν ότι και οι δύο υπηρεσίες είναι εγκατεστημένες στον διακομιστή σας.

3. us (χρόνος που εκτελούνται διεργασίες χρήστη με μη τροποποιημένη προτεραιότητα), sy (διεργασίες πυρήνα που εκτελούνται χρονικά), ni (διεργασίες χρήστη που εκτελούνται χρονικά με τροποποιημένη προτεραιότητα), wa (χρόνος αναμονής για ολοκλήρωση εισόδου/εξόδου), γεια (χρόνος που δαπανάται για διακοπές υλικού συντήρησης), si (χρόνος που δαπανάται για διακοπές λογισμικού), st (χρόνος που έχει κλαπεί από το τρέχον vm από τον hypervisor – μόνο σε εικονικά περιβάλλοντα).

4. Χρήση φυσικής μνήμης.

5. Εναλλαγή χρήσης χώρου.

Παράδειγμα 6: Επιθεώρηση χρήσης φυσικής μνήμης

Για να ελέγξετε τη μνήμη RAM και να αλλάξετε τη χρήση, μπορείτε επίσης να χρησιμοποιήσετε την εντολή δωρεάν.

free

Φυσικά, μπορείτε επίσης να χρησιμοποιήσετε τους διακόπτες -m (MB) ή -g (GB) για να εμφανίσετε τις ίδιες πληροφορίες σε αναγνώσιμη από τον άνθρωπο μορφή:

free -m

Είτε έτσι είτε αλλιώς, πρέπει να γνωρίζετε το γεγονός ότι ο πυρήνας διατηρεί όσο το δυνατόν περισσότερη μνήμη και την καθιστά διαθέσιμη στις διεργασίες όταν το ζητήσουν. Ειδικότερα, η γραμμή "-/+ buffers/cache" εμφανίζει τις πραγματικές τιμές αφού ληφθεί υπόψη αυτή η κρυφή μνήμη I/O.

Με άλλα λόγια, η ποσότητα της μνήμης που χρησιμοποιείται από τις διεργασίες και η διαθέσιμη ποσότητα σε άλλες διεργασίες (σε αυτήν την περίπτωση, 232 MB που χρησιμοποιούνται και 270 MB διαθέσιμα, αντίστοιχα). Όταν οι διεργασίες χρειάζονται αυτή τη μνήμη, ο πυρήνας θα μειώσει αυτόματα το μέγεθος της κρυφής μνήμης I/O.

Διαβάστε επίσης: 10 Χρήσιμες "δωρεάν" εντολή για τον έλεγχο της χρήσης μνήμης Linux

Ρίχνοντας μια πιο προσεκτική ματιά στις διαδικασίες

Ανά πάσα στιγμή, υπάρχουν πολλές διεργασίες που εκτελούνται στο σύστημα Linux μας. Υπάρχουν δύο εργαλεία που θα χρησιμοποιήσουμε για να παρακολουθούμε στενά τις διαδικασίες: ps και pstree.

Παράδειγμα 7: Εμφάνιση ολόκληρης της λίστας διεργασιών στο σύστημά σας με ps (πλήρης τυπική μορφή)

Χρησιμοποιώντας τις επιλογές -e και -f συνδυασμένες σε μία (-ef), μπορείτε να απαριθμήσετε όλες τις διεργασίες που εκτελούνται αυτήν τη στιγμή στο σύστημά σας. Μπορείτε να διοχετεύσετε αυτήν την έξοδο σε άλλα εργαλεία, όπως το grep (όπως εξηγείται στο Μέρος 1 της σειράς LFCS) για να περιορίσετε την έξοδο στις επιθυμητές διεργασίες:

ps -ef | grep -i squid | grep -v grep

Η παραπάνω λίστα διαδικασίας εμφανίζει τις ακόλουθες πληροφορίες:

κάτοχος της διεργασίας, PID, Parent PID (η γονική διαδικασία), χρήση επεξεργαστή, ώρα έναρξης της εντολής, tty (το ? υποδηλώνει ότι είναι δαίμονας), ο αθροιστικός χρόνος CPU και η εντολή που σχετίζεται με τη διαδικασία.

Παράδειγμα 8: Προσαρμογή και ταξινόμηση της εξόδου του ps

Ωστόσο, ίσως δεν χρειάζεστε όλες αυτές τις πληροφορίες και θέλετε να δείξετε στον κάτοχο της διαδικασίας, την εντολή που την ξεκίνησε, το PID και το PPID της και το ποσοστό της μνήμης που χρησιμοποιεί αυτήν τη στιγμή – με αυτή τη σειρά και ταξινόμηση κατά χρήση μνήμης με φθίνουσα σειρά (σημειώστε ότι το ps από προεπιλογή ταξινομείται κατά PID).

ps -eo user,comm,pid,ppid,%mem --sort -%mem

Όπου το σύμβολο μείον μπροστά από το %mem υποδεικνύει ταξινόμηση με φθίνουσα σειρά.

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

Signal name Signal number Description
 SIGTERM 15  Kill the process gracefully.
 SIGINT 2  This is the signal that is sent when we press Ctrl + C. It aims to interrupt the process, but the process may ignore it.
 SIGKILL 9  This signal also interrupts the process but it does so unconditionally (use with care!) since a process cannot ignore it.
 SIGHUP 1  Short for “Hang UP”, this signals instructs daemons to reread its configuration file without actually stopping the process.
 SIGTSTP 20  Pause execution and wait ready to continue. This is the signal that is sent when we type the Ctrl + Z key combination.
 SIGSTOP 19  The process is paused and doesn’t get any more attention from the CPU cycles until it is restarted.
 SIGCONT 18  This signal tells the process to resume execution after having received either SIGTSTP or SIGSTOP. This is the signal that is sent by the shell when we use the fg or bg commands.
Παράδειγμα 9: Παύση της εκτέλεσης μιας διεργασίας που εκτελείται και συνέχιση της στο παρασκήνιο

Όταν η κανονική εκτέλεση μιας συγκεκριμένης διαδικασίας υποδηλώνει ότι δεν θα σταλεί έξοδο στην οθόνη ενώ εκτελείται, μπορεί να θέλετε είτε να την ξεκινήσετε στο παρασκήνιο (προσθέτοντας ένα συμπλεκτικό σύμβολο στο τέλος της εντολής).

process_name &

ή,
Μόλις αρχίσει να εκτελείται στο προσκήνιο, διακόψτε το και στείλτε το στο παρασκήνιο με

Ctrl + Z
kill -18 PID

Παράδειγμα 10: Δολοφονία με τη βία μιας διαδικασίας

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

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

ps -ef | grep apache
kill -9 3821

Λοιπόν.. Τι Συνέβη/Συμβαίνει;

Όταν έχει υπάρξει οποιοδήποτε είδος διακοπής λειτουργίας στο σύστημα (είτε είναι μια διακοπή ρεύματος, μια βλάβη υλικού, μια προγραμματισμένη ή μη προγραμματισμένη διακοπή μιας διαδικασίας ή οποιαδήποτε ανωμαλία), τα αρχεία καταγραφής στο /var/log είναι οι καλύτεροί σας φίλοι για να προσδιορίσετε τι συνέβη ή τι μπορεί να προκαλεί τα προβλήματα που αντιμετωπίζετε.

cd /var/log

Μερικά από τα στοιχεία στο /var/log είναι κανονικά αρχεία κειμένου, άλλα είναι κατάλογοι και άλλα είναι συμπιεσμένα αρχεία περιστρεφόμενων (ιστορικών) αρχείων καταγραφής. Θα θελήσετε να ελέγξετε αυτά με τη λέξη σφάλμα στο όνομά τους, αλλά η επιθεώρηση των υπολοίπων μπορεί επίσης να σας φανεί χρήσιμη.

Παράδειγμα 11: Εξέταση αρχείων καταγραφής για σφάλματα σε διεργασίες

Φανταστείτε αυτό το σενάριο. Οι πελάτες LAN δεν μπορούν να εκτυπώσουν σε εκτυπωτές δικτύου. Το πρώτο βήμα για την αντιμετώπιση αυτής της κατάστασης είναι να μεταβείτε στον κατάλογο /var/log/cups και να δείτε τι υπάρχει εκεί.

Μπορείτε να χρησιμοποιήσετε την εντολή tail για να εμφανίσετε τις τελευταίες 10 γραμμές του αρχείου error_log ή tail -f error_log για προβολή του αρχείου καταγραφής σε πραγματικό χρόνο.

cd /var/log/cups
ls
tail error_log

Το παραπάνω στιγμιότυπο οθόνης παρέχει ορισμένες χρήσιμες πληροφορίες για να κατανοήσετε τι μπορεί να προκαλεί το πρόβλημά σας. Λάβετε υπόψη ότι το να ακολουθήσετε τα βήματα ή να διορθώσετε τη δυσλειτουργία της διαδικασίας εξακολουθεί να μην λύνει το συνολικό πρόβλημα, αλλά αν εξαρχής συνηθίσετε να ελέγχετε τα αρχεία καταγραφής κάθε φορά που προκύπτει ένα πρόβλημα (είτε είναι τοπικό είτε δικτυακό) Σίγουρα θα είναι στο σωστό δρόμο.

Παράδειγμα 12: Εξέταση των αρχείων καταγραφής για αστοχίες υλικού

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

Η παρακάτω εικόνα έχει ληφθεί από το /var/log/messages αφού αναζητήσετε τη λέξη σφάλμα χρησιμοποιώντας την ακόλουθη εντολή:

less /var/log/messages | grep -i error

Μπορούμε να δούμε ότι αντιμετωπίζουμε πρόβλημα με δύο συσκευές αποθήκευσης: /dev/sdb και /dev/sdc, οι οποίες με τη σειρά τους προκαλούν πρόβλημα με τη συστοιχία RAID.

συμπέρασμα

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

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