Ετικέτα: Uptime

  • Περιστατικά και post-mortem: τι κάνεις όταν πέφτει ένα site πελάτη

    Περιστατικά και post-mortem: τι κάνεις όταν πέφτει ένα site πελάτη

    Κάθε ομάδα που φτιάχνει sites θα δει κάποια στιγμή ένα να πέφτει. Η διαφορά ανάμεσα σε μια κακή μέρα και σε έναν χαμένο πελάτη σπάνια είναι η βλάβη. Είναι το πόσο γρήγορα το έμαθες, πόσο καθαρά το είπες και αν έμαθες κάτι για την επόμενη φορά.

    Τα πρώτα 15 λεπτά

    1. Ένας αναλαμβάνει. Όποιος απαντήσει πρώτος στην ειδοποίηση το λέει στην ομάδα: «το έχω». Δύο άνθρωποι που ψάχνουν το ίδιο πράγμα χωρίς να το ξέρουν χάνουν χρόνο.
    2. Επιβεβαίωσε από άλλο σημείο. Άνοιξε το site από το κινητό, εκτός δικτύου γραφείου. Έλεγξε αν πέφτει όλο ή μια σελίδα.
    3. Άνοιξε το runbook του project. Εκεί λέει πού τρέχει, πώς γίνεται restart, πού είναι τα logs και ποιον πάροχο καλείς. Αν δεν υπάρχει runbook, αυτό είναι το πρώτο εύρημα του post-mortem. Δες τι γράφει ένα runbook.
    4. Ενημέρωσε τον πελάτη πριν σε πάρει. Δύο γραμμές αρκούν: «Το site είναι εκτός από τις 10:42. Το ψάχνουμε, θα σας ενημερώσουμε ως τις 11:15.»
    Πρώτα επαναφορά, μετά εξήγησηΣτόχος του περιστατικού είναι να ξαναδουλέψει το site. Η αναζήτηση της βαθύτερης αιτίας μπορεί να περιμένει μέχρι να είναι όλα πάνω: ένα rollback τώρα αξίζει περισσότερο από μια τέλεια διάγνωση σε μία ώρα.

    Οι συνηθισμένοι ύποπτοι

    Σύμπτωμα Συχνή αιτία Πρώτος έλεγχος
    Δεν απαντά καθόλου Server κάτω, γεμάτος δίσκος, λήξη hosting Πίνακας παρόχου, χρήση πόρων
    Σφάλμα 500 Πρόσφατο deploy, plugin, αναβάθμιση PHP ή Node Τι άλλαξε την τελευταία μέρα
    «Error establishing a database connection» Βάση κάτω, αλλαγμένος κωδικός, όριο συνδέσεων Η βάση και τα στοιχεία σύνδεσης
    Προειδοποίηση πιστοποιητικού SSL που δεν ανανεώθηκε Ημερομηνία λήξης, εγγραφές DNS
    Σελίδα στάθμευσης Domain που έληξε Ο registrar. Δες τι γίνεται όταν λήγει domain

    Η σελίδα κατάστασης

    Μια δημόσια σελίδα κατάστασης ανά πελάτη απαντά στο «είναι μόνο σε μένα;» χωρίς τηλέφωνο. Ο πελάτης βλέπει ποιες υπηρεσίες του λειτουργούν και τη διαθεσιμότητα των τελευταίων ημερών. Δεν βλέπει διευθύνσεις servers, IP ή μηνύματα σφάλματος.

    Στείλε τον σύνδεσμο στον πελάτη τη μέρα της παράδοσης, όχι τη μέρα της βλάβης. Έτσι τον ξέρει όταν τον χρειαστεί.

    Το κλείσιμο

    Όταν ο έλεγχος ξαναπετύχει, το περιστατικό κλείνει και ο χρόνος εκτός λειτουργίας μένει καταγεγραμμένος. Πριν το ξεχάσεις, γράψε δύο πράγματα στο ίδιο το περιστατικό: την αιτία σε μία γραμμή και σημειώσεις για το τι έκανες. Αυτές οι σημειώσεις είναι το προσχέδιο του post-mortem.

    Και στείλε στον πελάτη το τελευταίο μήνυμα: τι έγινε, πόσο κράτησε, ότι λύθηκε και τι αλλάζει.

    Post-mortem σε μία σελίδα

    Δεν χρειάζεται έκθεση δέκα σελίδων. Χρειάζεται μια σελίδα που διαβάζεται σε δύο λεπτά και αλλάζει κάτι:

    1. Τι έγινε: μία παράγραφος, σε γλώσσα που καταλαβαίνει και ο πελάτης.
    2. Χρονολόγιο: πότε ξεκίνησε, πότε το μάθαμε, πότε ενημερώσαμε, πότε λύθηκε.
    3. Αιτία: η άμεση αιτία και, αν υπάρχει, η βαθύτερη («ο δίσκος γέμισε» και «δεν παρακολουθούσαμε τον δίσκο»).
    4. Τι πήγε καλά: για να το κρατήσεις.
    5. Τι αλλάζει: 1 έως 3 συγκεκριμένες ενέργειες, με υπεύθυνο και ημερομηνία.
    Χωρίς ενόχουςΤο post-mortem ρωτά «τι επέτρεψε να γίνει», όχι «ποιος το έκανε». Αν ένα λάθος ενός ανθρώπου μπορεί να ρίξει το site, το πρόβλημα είναι η διαδικασία. Μια ομάδα που φοβάται να πει τι έγινε κρύβει τα επόμενα.

    Μετά από μερικούς μήνες

    Τα περιστατικά, μαζεμένα, λένε μια ιστορία. Ποια projects πέφτουν συχνότερα; Ποιος πάροχος; Πόσο γρήγορα αντιδράτε; Η μηνιαία αναφορά ανά πελάτη τα δείχνει δίπλα στη διαθεσιμότητα, και συχνά είναι το καλύτερο επιχείρημα για μια αναβάθμιση hosting που ο πελάτης ανέβαλλε. Δες τι γράφει μια μηνιαία αναφορά.

    Συχνές ερωτήσεις

    Πρέπει να λέμε στον πελάτη κάθε περιστατικό;

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

    Χρειάζεται post-mortem για κάθε περιστατικό;

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

    Τι γίνεται αν η βλάβη είναι στον πάροχο;

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

  • Παρακολούθηση uptime, SSL και λήξεων για όλα τα sites πελατών: ο πλήρης οδηγός

    Παρακολούθηση uptime, SSL και λήξεων για όλα τα sites πελατών: ο πλήρης οδηγός

    Ο χειρότερος τρόπος να μάθεις ότι έπεσε ένα site είναι από τον πελάτη. Ο δεύτερος χειρότερος είναι από έναν συναγερμό που χτυπά κάθε φορά που ο server αργεί ένα δευτερόλεπτο. Η σωστή παρακολούθηση βρίσκεται ανάμεσα: σε ειδοποιεί για ό,τι μετρά, μία φορά, στον σωστό άνθρωπο.

    Τρία πράγματα που παρακολουθείς

    1. Λειτουργία (uptime): απαντά το site ή η υπηρεσία;
    2. Πιστοποιητικά SSL: είναι έγκυρα και πότε λήγουν;
    3. Λήξεις πόρων: domains, hosting, συνδρομές, άδειες.

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

    Έλεγχοι λειτουργίας: τι είδους

    Έλεγχος Τι ελέγχει Για τι
    HTTP, κωδικός απάντησης Ότι η σελίδα απαντά με 200 έως 399 Κάθε site
    HTTP, λέξη-κλειδί Ότι η σελίδα περιέχει ένα συγκεκριμένο κείμενο Sites που «απαντούν» αλλά δείχνουν σελίδα σφάλματος
    HTTP, health endpoint Ότι η εφαρμογή και η βάση της δουλεύουν Εφαρμογές και APIs
    TCP Ότι μια θύρα δέχεται συνδέσεις Βάσεις, SSH, mail
    Η παγίδα του 200Ένα WordPress με χαλασμένη βάση μπορεί να απαντά 200 με τη σελίδα «Error establishing a database connection». Ο έλεγχος λέξης-κλειδιού (π.χ. το όνομα του καταστήματος στη σελίδα) το πιάνει.

    Πόσο συχνά

    • Κάθε 1 λεπτό: e-shops, εφαρμογές με χρήστες, APIs που καλούν συνεργάτες.
    • Κάθε 5 λεπτά: εταιρικά sites πελατών με επισκεψιμότητα.
    • Κάθε 15 ή 60 λεπτά: landing pages, staging, εσωτερικά εργαλεία.

    Πότε ανοίγει περιστατικό

    Μια αποτυχία δεν είναι περιστατικό. Μπορεί να είναι ένα δίκτυο που κόλλησε ένα δευτερόλεπτο. Ο κανόνας που δουλεύει: δύο συνεχόμενες αποτυχίες ανοίγουν περιστατικό και στέλνουν ειδοποίηση. Η πρώτη επιτυχία το κλείνει, με τον χρόνο εκτός λειτουργίας καταγεγραμμένο.

    Έτσι η ειδοποίηση σημαίνει πάντα κάτι. Και η ομάδα δεν μαθαίνει να την αγνοεί.

    Ποιος ειδοποιείται και πώς

    • Email για όλη την ομάδα: καλό για ιστορικό, αργό για επείγοντα.
    • Telegram για τον υπεύθυνο βάρδιας: φτάνει αμέσως, και στο σπίτι.
    • Push στο κινητό για όσους δουλεύουν στο συγκεκριμένο project, ώστε να μη χτυπούν όλα τα τηλέφωνα για κάθε site.

    Κάθε κανάλι διαλέγει τα γεγονότα του: εκτός λειτουργίας, επαναφορά, SSL, λήξεις, ασφάλεια. Και κάθε ειδοποίηση στέλνεται μία φορά.

    Πιστοποιητικά SSL

    Τα πιστοποιητικά του Let’s Encrypt διαρκούν 90 ημέρες και ανανεώνονται αυτόματα, μέχρι τη μέρα που η ανανέωση αποτυγχάνει σιωπηλά: ένα DNS που άλλαξε, ένας proxy που μπλοκάρει την επαλήθευση, ένας server που μετακόμισε. Επιπλέον, η μέγιστη διάρκεια όλων των δημόσιων πιστοποιητικών μικραίνει σταδιακά τα επόμενα χρόνια, οπότε οι ανανεώσεις θα γίνονται όλο και συχνότερα.

    Γι’ αυτό ελέγχεις το ίδιο το πιστοποιητικό που σερβίρει το site, κάθε 12 ώρες: ποιος το εξέδωσε, πότε λήγει, αν ταιριάζει με το domain. Αν μένουν λίγες μέρες και δεν έχει ανανεωθεί, κάτι χάλασε.

    Λήξεις domains και συνδρομών

    Εδώ η παρακολούθηση είναι ημερολόγιο. Για κάθε πόρο με λήξη, ειδοποίηση 30, 14, 7 και 1 ημέρα πριν, και την ημέρα της λήξης. Δώσε ιδιαίτερη προσοχή σε όσα δεν έχουν αυτόματη ανανέωση, και σε όσα πληρώνει ο πελάτης με δική του κάρτα. Τι συμβαίνει όταν λήγει ένα domain, μέρα με τη μέρα, θα το βρεις εδώ.

    Σελίδα κατάστασης για τους πελάτες

    Μια δημόσια σελίδα κατάστασης ανά πελάτη απαντά στο «είναι πάνω;» πριν γίνει τηλεφώνημα. Δείχνει ποιες υπηρεσίες λειτουργούν και τη διαθεσιμότητα, χωρίς διευθύνσεις, IP ή μηνύματα σφάλματος που δεν χρειάζεται να δει κανείς.

    Έτοιμες ρυθμίσεις ανά είδος project

    Project Έλεγχοι Κανάλια
    E-shop Αρχική ανά 1′ με λέξη-κλειδί, checkout ανά 5′, SSL Telegram + Push + Email
    Εφαρμογή Health endpoint ανά 1′, βάση TCP ανά 5′, SSL Telegram + Push
    Εταιρικό site Αρχική ανά 5′, SSL Email
    Staging Αρχική ανά 60′ Email

    Συχνές ερωτήσεις

    Γιατί όχι ειδοποίηση με την πρώτη αποτυχία;

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

    Ο πάροχος hosting δεν έχει ήδη παρακολούθηση;

    Παρακολουθεί τον server του, όχι το site σου. Ένα site μπορεί να είναι εκτός ενώ ο server δουλεύει τέλεια, π.χ. από ένα plugin, μια βάση ή ένα DNS.

    Τι είναι καλό ποσοστό διαθεσιμότητας;

    Για ένα site πελάτη, πάνω από 99,9% τον μήνα σημαίνει λιγότερα από 45 λεπτά εκτός. Πιο σημαντικό από τον αριθμό είναι να ξέρεις πότε και γιατί έπεσε.

    Χρειάζομαι παρακολούθηση και στο staging;

    Ελαφριά, ναι. Ένα staging που έπεσε πριν από μια παρουσίαση σε πελάτη είναι κι αυτό πρόβλημα.