Οι εφαρμογές που χρησιμοποιούν τα ηλεκτρονικά ταχυδρομεία ως τον κύριο μηχανισμό για την αναφορά σφαλμάτων και εξαιρέσεων φαίνεται πάντα καλή ιδέα στην αρχή. Οπως και Προγραμματιστές Java νομίζουμε, 'γεια, θα ξέρω αμέσως πότε κάτι πάει στραβά!'
Ωστόσο, σε κάποιο σημείο θα πρέπει να συνειδητοποιήσετε ότι τα μηνύματα ηλεκτρονικού ταχυδρομείου σφάλματος απομακρύνονται από εσάς και πρέπει να καθαρίσετε τα εισερχόμενά σας. Μπορείτε να αγνοήσετε τα 404 (τις περισσότερες φορές) και μπορεί να είναι ωραίο να λαμβάνετε ειδοποιήσεις για νέες εγγραφές, αλλά στο τέλος της ημέρας μπορεί να γίνει λίγο πολύ ταραχώδης ή χρονοβόρος.
Αργά ή γρήγορα, η διάκριση «ενεργών» μηνυμάτων ηλεκτρονικού ταχυδρομείου από άσκοπες ειδοποιήσεις γίνεται δύσκολη. Μπορείτε να ρυθμίσετε κανόνες και φίλτρα στην αλληλογραφία σας, αλλά ακόμη και αυτά μπορεί να αρχίσουν να γίνονται ακατάλληλα.
Αυτό Εκμάθηση Java θα εξετάσει τη δυνατότητα χρήσης Logstash για να ανακτήσετε τον έλεγχο και να καθαρίσετε τα εισερχόμενα του email σας και να διαχειριστείτε ξανά τα μηνύματα σφάλματος, χωρίς να αλλάξετε ούτε ένα πράγμα στην εφαρμογή σας.
σε ποια γλώσσα είναι γραμμένος ο πυρήνας του linux
Το πρώτο βήμα στον οδηγό Logstash είναι να διασφαλίσουμε ότι όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου που λαμβάνετε από το σύστημά σας μεταβαίνουν σε έναν φάκελο. Εφόσον μεταφέρουμε όλη την ταξινόμηση και τη διαχείριση από τα εισερχόμενά σας, δεν θα έχει σημασία ότι είναι πλέον ένας μεγάλος φάκελος. Προχωρήστε και αφαιρέστε όλους τους φακέλους και τα φίλτρα που έχετε ήδη ρυθμίσει και μειώστε τα σε έναν φάκελο και ένα φίλτρο.
Μετακίνηση όλων των μηνυμάτων ηλεκτρονικού ταχυδρομείου από το ' [προστασία μέσω email] 'Στο φάκελο' MyAwesomeAppEmails '. Εάν έχετε ξεχωριστό γραμματοκιβώτιο για αυτά τα μηνύματα ηλεκτρονικού ταχυδρομείου, τότε θα είναι ακόμα πιο εύκολο.
Τώρα μπορούμε να ρυθμίσουμε το Logstash για δημοσκόπηση αυτού του φακέλου και να αναλύσουμε τα μηνύματα χρησιμοποιώντας το Πρόσθετο IMAP . Η έκδοση 1.4.2 υποστηρίζει μόνο λήψη email από το Inbox , αλλά υπάρχει ένα σχετικά απλό διορθώσετε που έχει εφαρμοστεί στο έκδοση 1.5 για να επιτρέψετε την ψηφοφορία συγκεκριμένου φακέλου. Εάν δεν έχετε ξεχωριστό γραμματοκιβώτιο, εφαρμόστε την ενημέρωση κώδικα στην προσθήκη IMAP στην παρουσία Logstash πριν συνεχίσετε.
# /etc/logstash/conf.d/01-imap-input.conf input { imap { host => 'imap.yourmailserver.com' user => 'username' password => 'password' secure => true fetch_count => 15 folder => 'MyAwesomeAppEmails' # This line will only work if you apply the above mentioned patch } }
Αυτό θα αρχίσει να ελέγχει νέα μηνύματα και να τα αναλύει σε συμβάντα Logstash.
Πολλά χρήσιμα δεδομένα αναλύονται από μηνύματα ηλεκτρονικού ταχυδρομείου σε διαφορετικές ιδιότητες συμβάντων - παρατηρήστε ότι η χρονική σήμανση ηλεκτρονικού ταχυδρομείου χρησιμοποιείται ως '@timestamp' για το συμβάν. Ακόμη περισσότερο, μόνο από τις κεφαλίδες μπορούμε να κάνουμε πράγματα όπως να προσδιορίσουμε τον κεντρικό υπολογιστή από τον οποίο προήλθε το σφάλμα:
filter { mutate { replace => [ 'received', '%{[received][-1]}' ] } grok { match => [ 'received', 'from %{HOSTNAME:hostname} (%{HOSTNAME:full_hostname} [%{IP:ip}])' ] } mutate { remove_field => [ 'received' ] } }
Αυτό, ωστόσο, δεν αρκεί για να εξημερώσετε τα μηνύματα ηλεκτρονικού ταχυδρομείου σφάλματος. Χρειαζόμαστε λίγο περισσότερο, συγκεκριμένα τα ακόλουθα τρία βήματα που περιγράφουν:
Ας υποθέσουμε ότι τοποθετήσατε το όνομα του σφάλματος, π.χ. 'Widget Failed', καθώς και η σοβαρότητα του σφάλματος 'ERROR' στο θέμα του email όπως αυτό: 'ERROR: Widget Failed in /var/www/myapp/foobar.php 20'.
llc s or c corp
Θα το χρησιμοποιήσουμε για να ορίσουμε πολλές ιδιότητες του συμβάντος:
filter { grok { match => [ 'subject', '%{WORD:severity}: %{DATA:type} in %{PATH:path} %{POSINT:line}' ] } }
Το Logstash συνοδεύεται από έναν αριθμό προκαθορισμένα μοτίβα που μπορείτε να περιμένετε να δείτε σε αρχεία καταγραφής και σε άλλα μέρη. Χρησιμοποιήστε αυτά για να δημιουργήσετε τα μοτίβα Grok και να τα καταστήσετε ευκολότερα στην ανάγνωση. Έχουμε χρησιμοποιήσει το 'WORD' (μία λέξη), 'DATA' (μη άπληστο catchall), 'PATH' (διαδρομή αρχείου Unix ή Windows) και 'POSINT' (θετικός ακέραιος αριθμός). Μπορείτε επίσης να χρησιμοποιήσετε το Grok Debugger για να διορθώσετε τα μοτίβα Grok. Τα μηνύματα που δεν ταιριάζουν με το μοτίβο θα επισημαίνονται με την ετικέτα '_grokparsefailure'.
Αυτό φροντίζει για τον τύπο, τη σοβαρότητα, το αρχείο προέλευσης και τη γραμμή του σφάλματος - βασικά όλα τα σχετικά μεταδεδομένα του συμβάντος. Τώρα στις λεπτομέρειες.
Μπορεί στο παρελθόν να έχετε προσθέσει μια ωραία υπογραφή κεφαλίδας ή υποσέλιδου, καθώς είστε το ευγενικό άτομο που είστε, αλλά τώρα είναι στο δρόμο. Ας το καταργήσουμε από το μήνυμα, καθώς και από οποιοδήποτε κενό διάστημα ώστε να αναλύσουμε το υπόλοιπο του μηνύματος ηλεκτρονικού ταχυδρομείου για το stacktrace σφάλματος:
filter { mutate { # gsub takes 3 elements per substitution: field, regular expression and substitution gsub => [ 'message', 'Your Dev Team', '', 'message', 'More error details:', '' ] } mutate { strip => 'message' } # Split the message into an array of lines, each containing a line of the stacktrace mutate { split => [ 'message', '
' ] } }
Η μετάλλαξη 'gsub' χρησιμοποιεί το πρότυπο Ruby Regexp αντικείμενο, οπότε όλες οι επιλογές και τα χαρακτηριστικά είναι διαθέσιμα στο αρχείο καταγραφής.
Ας το εφαρμόσουμε στη χρήση του Elasticsearch Logstash Elasticsearch έξοδο έτσι ώστε να μπορούμε εύκολα να αναζητούμε και να ποσοτικοποιούμε τα δεδομένα που συλλέγουμε:
output { if '_grokparsefailure' not in [tags] { elasticsearch { } } }
Εξαιρούμε όλα τα μηνύματα που δεν έκαναν Grok σωστά ελέγχοντας την ετικέτα '_grokparsefailure'. Η υπόθεση είναι ότι μόνο τα μηνύματα ηλεκτρονικού ταχυδρομείου των οποίων το θέμα ταιριάζει με το καθορισμένο θέμα πρέπει να ερμηνεύονται ως μηνύματα ηλεκτρονικού ταχυδρομείου σφάλματος. Διαφορετικά, είναι απλό και απλό.
Το Logstash διαθέτει πληθώρα εξόδων, οπότε ας το βελτιώσουμε ακόμη περισσότερο Έξοδος SNS για να μας ειδοποιήσετε για σημαντικά σφάλματα χρησιμοποιώντας το Amazon Απλή υπηρεσία ειδοποιήσεων (SNS). Θα υποθέσουμε ότι όλα τα σφάλματα τύπου 'κοινοποιήσιμα' πρέπει να δημιουργήσουν μια ειδοποίηση. Εάν δεν βρίσκεστε σε μια παρουσία EC2, θα πρέπει να καθορίσετε ένα κλειδί και μυστικό AWS.
Ποιες είναι οι τρεις νικηφόρες στρατηγικές ανταγωνιστικής τοποθέτησης που προτείνει ο Michael Porter;
output { if 'notifiable' in [tags] { sns { region => 'us-east-1' arn => 'arn:aws:sns:us-east-1:1234567890123456:mytopic' access_key_id => 'AWS ACCESS_KEY' # Only specify these if you're not on an EC2 instance secret_access_key => 'AWS ACCESS SECRET' # Only specify these if you're not on an EC2 instance } } }
Η επισήμανση των σφαλμάτων ως 'κοινοποιήσιμων' εξαρτάται από εσάς. Μπορείτε να το κάνετε εξετάζοντας είτε τη σοβαρότητα του σφάλματος είτε τον τύπο του σφάλματος.
Τώρα μπορείτε να διαβάσετε ξανά σημαντικά μηνύματα ηλεκτρονικού ταχυδρομείου και να είστε σίγουροι ότι δεν θα χάσετε σημαντικά μηνύματα σφάλματος. Μπορείτε επίσης να λάβετε τεκμηριωμένες αποφάσεις σχετικά με τα σφάλματα που πρέπει να διορθώσετε, καθώς μπορείτε να δείτε πόσο συχνά εμφανίζεται ένα σφάλμα και πότε συνέβη το τελευταίο. Η αναζήτηση ενός συγκεκριμένου σφάλματος είναι επίσης ευκολότερη και ταχύτερη, χάρη στις εκπληκτικές δυνάμεις αναζήτησης της Elasticsearch που περιγράφονται σε αυτό το σεμινάριο Logstash.