Ενότητα 8 · 8.3
Παρακολούθηση του server σας
Ενότητα 8: Αντίγραφα ασφαλείας και παρακολούθηση · Χρόνος ανάγνωσης: 10 λεπτά
Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να αποφασίσετε τι παρακολουθείτε στον server σας (από έξω και από μέσα), ποια όρια έχουν νόημα και πώς εξασφαλίζετε ότι μια ειδοποίηση σας φτάνει πραγματικά, χωρίς να πνιγείτε σε ειδοποιήσεις.
Βασικές έννοιες: παρακολούθηση από έξω, παρακολούθηση από μέσα, uptime, έλεγχος http, έλεγχος θύρας, λήξη πιστοποιητικού, χώρος δίσκου, μνήμη, load, heartbeat (dead man's switch), όριο, κανάλι ειδοποιήσεων, κόπωση από ειδοποιήσεις, γραφήματα του παρόχου
Γιατί παρακολούθηση;
Χωρίς παρακολούθηση μαθαίνετε για τα προβλήματα από τους πελάτες σας ή δεν μαθαίνετε καθόλου. Ένας ιστότοπος που είναι εκτός λειτουργίας από το Σάββατο, ένα πιστοποιητικό που έληξε, ένας δίσκος που γέμισε, ένα αντίγραφο ασφαλείας που αποτυγχάνει σιωπηλά εδώ και τρεις εβδομάδες: όλα αυτά θα μπορούσατε να τα είχατε δει εγκαίρως. Παρακολούθηση σημαίνει: ένα πρόγραμμα ελέγχει συνεχώς και σας προειδοποιεί όταν κάτι δεν πάει καλά.
Μια καλή παρακολούθηση απαντά σε δύο ερωτήματα:
- Λειτουργεί για τον χρήστη; Αυτό το μετράτε από έξω.
- Θα στραβώσει κάτι σύντομα; Αυτό το μετράτε από μέσα: δίσκος, μνήμη, ενημερώσεις, αντίγραφα ασφαλείας.
Από έξω: τι βλέπει ο χρήστης
Η παρακολούθηση από έξω εκτελείται σε άλλο μηχάνημα από τον server σας, κατά προτίμηση σε άλλον πάροχο. Είναι λογικό: αν ο server σας είναι εκτός λειτουργίας, δεν μπορεί ο ίδιος να σας προειδοποιήσει.
| Έλεγχος | Τι κάνει | Γιατί |
|---|---|---|
| http(s) | ανακτά μια σελίδα κάθε λεπτό και ελέγχει τον κωδικό κατάστασης (200) και, αν θέλετε, μια λέξη στη σελίδα | ο ιστότοπος λειτουργεί πραγματικά, όχι μόνο ο server |
| θύρα | συνδέεται για παράδειγμα στη θύρα 22 ή 443 | η υπηρεσία ακούει και είναι προσβάσιμη |
| ping | στέλνει ένα πακέτο ICMP | ο server είναι ζωντανός (αλλά δεν λέει τίποτα για τον ιστότοπό σας) |
| πιστοποιητικό | διαβάζει το πιστοποιητικό και την ημερομηνία λήξης | προειδοποιεί αρκετά πριν λήξει |
| DNS | ζητά το A record | το όνομα δείχνει ακόμη στον σωστό server |
Το πιστοποιητικό αξίζει ιδιαίτερη προσοχή. Τα πιστοποιητικά της Let's Encrypt έχουν σύντομη διάρκεια ισχύος και ανανεώνονται αυτόματα (μάθημα 7.3), αλλά αν η ανανέωση αποτύχει σιωπηλά, το καταλαβαίνετε μόνο όταν οι επισκέπτες δουν μια προειδοποίηση. Η ίδια η Let's Encrypt δεν στέλνει πλέον από τον Ιούνιο του 2025 υπενθυμίσεις μέσω email για πιστοποιητικά που λήγουν και συνιστά η ίδια την παρακολούθηση. Ένας έλεγχος πιστοποιητικού που προειδοποιεί όταν απομένουν λιγότερες από 14 ημέρες ισχύος δεν είναι λοιπόν πολυτέλεια.
Ένα διαδεδομένο πρόγραμμα για να το κάνετε μόνοι σας είναι το Uptime Kuma, το οποίο θα εγκαταστήσετε σε container στο μάθημα 9.4. Κατά προτίμηση μην το βάλετε στον ίδιο server που πρέπει να παρακολουθεί, ή συνδυάστε το με έναν δεύτερο, εξωτερικό έλεγχο. Υπάρχουν επίσης υπηρεσίες τρίτων που κάνουν το ίδιο. Επιλέξτε μία που σας ταιριάζει και προσέξτε πού είναι εγκατεστημένες, αν οι ειδοποιήσεις μπορεί να περιέχουν δεδομένα των πελατών σας.
Από μέσα: τι θα στραβώσει σύντομα
Ορισμένα προβλήματα τα βλέπετε από έξω μόνο όταν είναι πια αργά. Αυτά τα μετράτε στον ίδιο τον server:
| Τι | Πώς το βλέπετε | Ένα λογικό όριο |
|---|---|---|
| Χώρος δίσκου | df -h | προειδοποίηση πάνω από 80%, συναγερμός πάνω από 90% |
| Inodes (αριθμός αρχείων) | df -i | το ίδιο. Ένας δίσκος μπορεί να είναι "γεμάτος" με εκατομμύρια μικρά αρχεία |
| Μνήμη | free -h, μηνύματα "Out of memory" στο journalctl -k | κάθε μήνυμα OOM είναι ένα σήμα |
| Load | uptime, top | για μεγάλο διάστημα υψηλότερο από τον αριθμό των vCPU |
| Υπηρεσίες που απέτυχαν | systemctl --failed (μάθημα 6.1) | κάθε υπηρεσία που απέτυχε |
| Ενημερώσεις και επανεκκίνηση | /var/run/reboot-required, apt list --upgradable (μάθημα 4.2) | ενημέρωση ασφαλείας παλαιότερη από δύο ημέρες |
| Αντίγραφα ασφαλείας | το τέλος του script αντιγράφων ασφαλείας σας (μάθημα 8.2) | κάθε εκτέλεση που απέτυχε ή δεν έγινε |
Αυτό μπορεί να γίνει με ένα απλό script και έναν timer (μάθημα 6.3) που στέλνει ειδοποίηση όταν ξεπεραστεί ένα όριο, ή με ένα πρόγραμμα παρακολούθησης με agent στον server (γνωστά παραδείγματα ανοιχτού κώδικα είναι το Netdata και ο συνδυασμός Prometheus με node_exporter). Ξεκινήστε μικρά: ο δίσκος, οι υπηρεσίες που απέτυχαν και τα αντίγραφα ασφαλείας πιάνουν τα περισσότερα προβλήματα.
Τα γραφήματα στον πίνακα ελέγχου του παρόχου σας (επεξεργαστής, μνήμη, δίκτυο, δίσκος για διάστημα από μία ημέρα έως ένα έτος) αποτελούν εξαιρετικό συμπλήρωμα για να βλέπετε τάσεις: αν ο δίσκος σας μεγαλώνει κάθε μήνα κατά λίγες ποσοστιαίες μονάδες, ξέρετε πότε θα γεμίσει. Στο WebOké βρίσκονται στην οθόνη του VPS, και σε άλλους παρόχους κάπου αντίστοιχα. Συνήθως δεν στέλνουν ειδοποιήσεις, επομένως δεν αντικαθιστούν την παρακολούθηση.
Το heartbeat: ειδοποίηση όταν δεν συμβαίνει τίποτα
Ορισμένα πράγματα πρέπει να τα παρακολουθείτε ακριβώς για την απουσία ενός σήματος. Το καλύτερο παράδειγμα είναι το νυχτερινό αντίγραφο ασφαλείας: αν το script δεν ξεκινήσει καν (timer απενεργοποιημένος, server κλειστός, script χαλασμένο), δεν έρχεται ούτε μήνυμα σφάλματος.
Η λύση ονομάζεται heartbeat ή dead man's switch: η παρακολούθησή σας περιμένει ένα σήμα κάθε ημέρα. Το script αντιγράφων ασφαλείας στέλνει στο τέλος, μόνο αν όλα πέτυχαν, ένα μικρό αίτημα http σε μια σταθερή, μυστική URL της παρακολούθησής σας:
restic backup ... && restic check && curl -fsS -m 10 https://status.example.com/api/push/Xyz123abc?status=up >/dev/nullΑν το σήμα δεν έρθει μία ημέρα, λαμβάνετε ειδοποίηση. Το Uptime Kuma έχει γι' αυτό τον τύπο monitor Push. Υπάρχουν επίσης προγράμματα που μπορείτε να φιλοξενήσετε μόνοι σας, όπως το Healthchecks. Έτσι ελέγχετε με μία γραμμή αν το αντίγραφο ασφαλείας σας εκτελέστηκε πραγματικά.
Ειδοποιήσεις που φτάνουν, και όχι υπερβολικά πολλές
Μια ειδοποίηση που δεν τη διαβάζει κανείς δεν είναι παρακολούθηση. Φροντίστε για τρία πράγματα:
- Ένα κανάλι ειδοποιήσεων που πραγματικά βλέπετε: ένα push μήνυμα στο τηλέφωνό σας, ένα κανάλι chat, sms. Το email είναι μια επιλογή, αλλά μόνο αν ο server σας μπορεί να στέλνει email αξιόπιστα, και το email εύκολα περνά απαρατήρητο. Για τις σημαντικότερες ειδοποιήσεις χρησιμοποιήστε δύο κανάλια.
- Ανεξάρτητο από αυτό που παρακολουθείτε. Αν ο ίδιος ο server σας στέλνει το email για τον γεμάτο δίσκο, αυτό δεν θα έρθει όταν ο δίσκος είναι γεμάτος. Η παρακολούθηση από έξω και ένα heartbeat καλύπτουν αυτή την περίπτωση.
- Λίγες, αλλά δικαιολογημένες. Αν λαμβάνετε κάθε ημέρα δέκα ειδοποιήσεις για τις οποίες δεν κάνετε τίποτα, θα αρχίσετε να τις αγνοείτε, και εκείνη που έχει σημασία. Αυτό ονομάζεται κόπωση από ειδοποιήσεις. Ορίστε τα όρια ώστε μια ειδοποίηση να σημαίνει: πρέπει να κάνετε κάτι. Αφήστε μια ειδοποίηση να ενεργοποιείται μόνο μετά από μερικούς διαδοχικούς αποτυχημένους ελέγχους (για παράδειγμα τρεις φορές), ώστε ένα χαμένο πακέτο να μη σας ξυπνήσει.
Δοκιμάστε τις ειδοποιήσεις σας: σταματήστε για λίγο μια υπηρεσία και δείτε αν έρχεται η ειδοποίηση και πόσο χρόνο χρειάστηκε.
Τι δεν πρέπει να κάνετε
- Σελίδες παρακολούθησης ανοιχτές σε όλους με εσωτερικά ονόματα και διευθύνσεις. Μια δημόσια σελίδα κατάστασης επιτρέπεται, αλλά να δείχνει μόνο όσα επιτρέπεται να γνωρίζουν οι επισκέπτες.
- Ένας λογαριασμός διαχειριστή της παρακολούθησής σας χωρίς ισχυρό κωδικό πρόσβασης και 2FA. Όποιος έχει πρόσβαση στην παρακολούθησή σας μπορεί να απενεργοποιήσει τις ειδοποιήσεις.
- Agents με περισσότερα δικαιώματα από όσα χρειάζονται. Ένας agent παρακολούθησης συνήθως δεν χρειάζεται να είναι root.
Σύνοψη
- Παρακολουθήστε από έξω αν λειτουργεί (http, θύρα, πιστοποιητικό, DNS), από άλλο μηχάνημα, και από μέσα αν θα στραβώσει κάτι σύντομα (δίσκος, μνήμη, υπηρεσίες, ενημερώσεις, αντίγραφα ασφαλείας).
- Τα πιστοποιητικά αξίζουν δικό τους έλεγχο: η Let's Encrypt δεν στέλνει πλέον υπενθυμίσεις μέσω email από τον Ιούνιο του 2025.
- Ένα heartbeat ειδοποιεί όταν λείπει ένα σήμα. Ιδανικό για αντίγραφα ασφαλείας και προγραμματισμένες εργασίες.
- Επιλέξτε ένα κανάλι ειδοποιήσεων που πραγματικά βλέπετε, ανεξάρτητο από τον ίδιο τον server, και ορίστε τα όρια ώστε κάθε ειδοποίηση να απαιτεί ενέργεια.
- Τα γραφήματα του παρόχου σας δείχνουν τάσεις, αλλά συνήθως δεν στέλνουν ειδοποιήσεις.
Κουίζ
Άσκηση
Άσκηση O8.3: Η λίστα παρακολούθησής σας. Δημιουργήστε για τον δικό σας server μια λίστα παρακολούθησης: ποιοι έλεγχοι από έξω (με ποιο διάστημα και από πού), ποιοι από μέσα (με όρια), ποιο ή ποια heartbeat και μέσω ποιου καναλιού έρχονται οι ειδοποιήσεις. Ρυθμίστε τουλάχιστον έναν εξωτερικό έλεγχο http ή πιστοποιητικού και ένα heartbeat (για παράδειγμα για το αντίγραφο ασφαλείας σας) και δοκιμάστε την ειδοποίηση σταματώντας για λίγο μια υπηρεσία. Σημειώστε πόσο χρόνο χρειάστηκε μέχρι να έρθει η ειδοποίηση.
Άσκηση O8.3: Η λίστα παρακολούθησής σας
Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.
Έλεγχος από έξω σε άλλο μηχάνημα (κατά προτίμηση σε άλλον πάροχο), κάθε 1 έως 5 λεπτά με μερικές επαναλήψεις. Πιστοποιητικό 14 ημέρες, δίσκος 80/90%, systemctl --failed, heartbeat μόνο μετά από επιτυχημένο αντίγραφο ασφαλείας. Ειδοποιήσεις που δεν απαιτούν ενέργεια: αφαιρέστε τες ή αυξήστε το όριο.
Τα τικ και οι σημειώσεις σας παραμένουν μόνο σε αυτό το πρόγραμμα περιήγησης· δεν τα στέλνουμε πουθενά. Αν έχετε εγγραφεί, αποθηκεύουμε στο Τα μαθήματά μου μόνο ότι έχετε ολοκληρώσει την άσκηση.
Για περαιτέρω μελέτη
- Δεν έχετε πια πρόσβαση στο VPS σας: τι κάνετε;
- Let's Encrypt, Expiration Notification Service Has Ended: https://letsencrypt.org/2025/06/26/expiration-notification-service-has-ended
- Uptime Kuma (GitHub): https://github.com/louislam/uptime-kuma
