Μια προγραμματισμένη εργασία που έτρεξε χωρίς VPN φαίνεται εντάξει
Η κατάσταση λέει επιτυχία και τα δεδομένα λείπουν. Εξαρτήστε κάθε εκτέλεση από την ακριβή σύνδεση και καταγράψτε τις παραλείψεις ξεχωριστά αντί να εμπιστεύεστε το χρονοδιάγραμμα.
Η κατάσταση της εργασίας λέει επιτυχία, το αρχείο καταγραφής δείχνει ολοκληρωμένη εκτέλεση, και τα δεδομένα είναι παλιά ή απόντα. Αυτός ο συνδυασμός συνήθως σημαίνει ότι η προγραμματισμένη εργασία ξεκίνησε χωρίς τη διαδρομή που χρειαζόταν, και κάτι πιο κάτω κατάπιε την αποτυχία. Ένα χρονοδιάγραμμα που ενεργοποιείται στην ώρα του δεν λέει τίποτα για το αν το δίκτυο ήταν έτοιμο. Το κενό ανάμεσα σε αυτά τα δύο γεγονότα είναι το μέρος όπου ζει αυτή η αποτυχία.
Η παραδοχή ανήκει στην εκτέλεση, όχι στην ύπαρξη ενός αρχείου cron.
Μια πράσινη εκτέλεση δεν είναι ολοκληρωμένη εργασία
Ένας χρονοπρογραμματιστής σημειώνει ότι μια διεργασία ξεκίνησε και αργότερα τερματίστηκε· δεν έχει ιδέα αν αυτή η διεργασία έφτασε στον πόρο για τον οποίο υπάρχει. Ένα σενάριο που αντιμετωπίζει μια αποτυχημένη σύνδεση ως κενό αποτέλεσμα, ή πιάνει ένα σφάλμα και εξέρχεται με μηδέν, θα φαίνεται υγιές για πάντα. Το σύμπτωμα δεν είναι μια κόκκινη κατάσταση· είναι μια εύλογη κατάσταση κολλημένη σε ελλιπή εργασία.
Ονομάστε τι χρειάζεται πραγματικά η εκτέλεση πριν αποφασίσετε πώς θα την ελέγξετε. Ένα αντίγραφο ασφαλείας μπορεί να χρειάζεται ιδιωτικό DNS και πιστοποιημένο τελικό σημείο, όχι απλώς μια διεργασία σήραγγας.
Ελέγξτε τη σύνδεση, όχι το όνομα της διεπαφής
Μια διεπαφή με όνομα tun0 μπορεί να υπάρχει χωρίς τη συνεδρία που μετράει, και μια άλλη σύνδεση μπορεί να κατέχει αυτό το όνομα. Ελέγξτε το συγκεκριμένο αντικείμενο από το οποίο εξαρτάται η εργασία: μία ταυτότητα προφίλ, μία παρουσία υπηρεσίας ή μια μικρή εγκεκριμένη λειτουργία κατά του πόρου. Κρατήστε τον έλεγχο χρονικά φραγμένο, και κρατήστε τα διαπιστευτήρια έξω από ορίσματα διεργασίας και διαγνωστικά αρχεία.
Ορίστε και το αποτέλεσμα της αποσύνδεσης. Μια συνηθισμένη παράλειψη, μια επανάληψη μέσα σε σύντομο παράθυρο και μια χαμένη προθεσμία ορατή στον χειριστή είναι τρεις διαφορετικές απαντήσεις, και ένα επαναλαμβανόμενο χρονοδιάγραμμα δεν επιλέγει ανάμεσά τους.
Οι παραλείψεις και οι αποτυχίες είναι διαφορετικά αποτελέσματα
[Service] Type=oneshot User=worker ExecCondition=/usr/local/libexec/check-office-path ExecStart=/usr/local/bin/private-task
Σε μια ανάπτυξη systemd, το ExecCondition= εκτελεί αυτόν τον ελεγκτή πριν από το φόρτο εργασίας. Η συμπεριφορά εξόδου του είναι συγκεκριμένη: το μηδέν συνεχίζει, οι κωδικοί από ένα έως 254 παραλείπουν τις υπόλοιπες εντολές εκκίνησης χωρίς να σημάνουν τη μονάδα ως αποτυχημένη, και το 255 ή ένας μη φυσιολογικός τερματισμός την αποτυγχάνει. Αυτό δίνει τρία διακριτά σήματα, χρήσιμα μόνο αν το συμβόλαιο του ελεγκτή αντιστοιχιστεί σε αυτά σκόπιμα. Ρυθμίσεις που επαναπροσδιορίζουν την επιτυχία μπορούν να αλλάξουν την εικόνα, οπότε τεκμηριώστε την αντιστοίχιση.
Η καταγραφή των παραλείψεων είναι αυτό που κάνει τον σχεδιασμό έντιμο. Μια εκτέλεση που παραλείφθηκε και δεν εμφανίζεται πουθενά δεν διακρίνεται από μια εκτέλεση που πέτυχε, και η αντιμετώπιση κάθε σφάλματος ελεγκτή ως ήσυχης παράλειψης κρύβει μια χαλασμένη ανάπτυξη επ' αόριστον.
Προστατέψτε ολόκληρη την εκτέλεση, όχι μόνο την εκκίνηση
Ένας έλεγχος ετοιμότητας παρατηρεί τον κόσμο πριν από την εκκίνηση· δεν αστυνομεύει κάθε υποδοχή μετά. Όταν μια άμεση διαδρομή δεν είναι ποτέ αποδεκτή για αυτή την εργασία, επισυνάψτε μια εγκεκριμένη πολιτική εξόδου που εφαρμόζεται συνεχώς και καλύπτει DNS, IPv6 και τη δική του μεταφορά της σήραγγας. Η εναλλαγή της καθολικής κατάστασης IPv6 του κεντρικού υπολογιστή δεν υποκαθιστά μια περιορισμένη πολιτική στην εργασία.
Αποφασίστε αν ένα νέο συμβάν μπορεί να επικαλύψει μια εργασία που ακόμη εκτελείται, κρατήστε αυτόν τον κανόνα στον ιδιοκτήτη του φόρτου εργασίας, και κάντε την επανάληψη ασφαλή για τη λειτουργία δεδομένων. Η διακοπή μιας εργασίας στην αποσύνδεση περιορίζει την εργασία χωρίς να εγγυάται τίποτα για την εφεδρική κίνηση.
Αποδεχτείτε τη ροή εργασίας σε τρεις περιπτώσεις: έτοιμη διαδρομή, μη διαθέσιμη διαδρομή και απώλεια στη μέση της εκτέλεσης. Οτιδήποτε λιγότερο δοκιμάζει το χρονοδιάγραμμα, όχι την εργασία.