Διακομιστής συλλογής αρχείων καταγραφής. Linux. Rsyslog. Κεντρική συλλογή κορμών. Ας εγκαταστήσουμε το rsyslog και ας το ρυθμίσουμε ώστε να λαμβάνει αρχεία καταγραφής

Χαιρετισμούς, αναγνώστη του ιστολογίου μου. Πάει καιρός που έγραψα ένα άρθρο. Πολλές αλλαγές ζωής... Το σημερινό άρθρο θα είναι αφιερωμένο syslog, είτε rsyslog, το οποίο υλοποιείται ενεργά αντί του παλιού syslogd (γνωστός και ως sysklogd) στις πιο πρόσφατες εκδόσεις διανομών (για παράδειγμα, κ.λπ.). Έδωσα μια βασική περιγραφή της απόδοσης στο αντίστοιχο άρθρο. Επομένως, πριν διαβάσετε όσα περιγράφονται παρακάτω, συνιστώ ανεπιφύλακτα να διαβάσετε. Η τρέχουσα αποστολή μου είναι συλλογή αρχείων καταγραφής συστήματος καταγραφής συστήματος από εξοπλισμό δικτύουσε ποσότητα ~100 κεντρικών υπολογιστών με επακόλουθη αύξηση του αριθμού τους. Θα προσπαθήσω να εφαρμόσω αυτήν τη λειτουργικότητα σε αυτό το άρθρο, έχοντας περιγράψει προηγουμένως και. Όλο αυτό το θέμα θα περιγραφεί με βάση το Debian 6, σε άλλες διανομές, αν έχετε εμπειρία, με ελάχιστες κινήσεις με ένα αρχείο, νομίζω ότι δεν θα είναι πολύ δύσκολο να το ρυθμίσετε. Λοιπόν, ας ξεκινήσουμε...

Εισαγωγή στο rsyslog

Όπως είπα ήδη, rsyslogέχει γίνει το προεπιλεγμένο πακέτο στις περισσότερες διανομές Linux (ίσως όλες). Rsyslogσυμπίπτει απόλυτα πρωτόκολλο syslogπεριγράφεται και περιέχει επίσης ορισμένες πρόσθετες λειτουργίες. Όπως μεταφορά TCP, φιλτράρισμα και ταξινόμηση μηνυμάτων, αποθήκευση μηνυμάτων σε DBMS, κρυπτογράφηση και πολλά άλλα. Στο άρθρο θα προσπαθήσω να εξετάσω την περιγραφή, την περιγραφή ελέγξτε τον δαίμονα rsyslogdΚαι .

Εγκατάσταση του rsyslogd

Η εγκατάσταση του rsyslog (αν για κάποιο λόγο δεν είναι εγκατεστημένο από προεπιλογή) καταλήγει σε μία εντολή:

Aptitude εγκατάσταση rsyslog # στο κόκκινο καπέλο, η επιλογή yum install rsyslog είναι δυνατή

Οδηγίες διαμόρφωσης

Οι οδηγίες διαμόρφωσης ονομάζονται μερικές φορές καθολικές οδηγίες και προσδιορίζουν γενικές παράμετροι του δαίμονα rsyslogd. Η οδηγία έχει τη μορφή Παράμετρος $Directive

############################### ΠΑΓΚΟΣΜΙΕΣ ΟΔΗΓΙΕΣ #### ############ ############### # Καθορίζει τη χρήση της κλασικής μορφής χρονικής σήμανσης (ΗΗ Μήνας ΩΩ:ΛΛ:ΔΔ). # Για να ενεργοποιήσετε τη μορφή χρονοσήμανσης unix, πρέπει να σχολιάσετε τη γραμμή. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # # Ορίζει την προεπιλογή για τα αρχεία καταγραφής. $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 # # Ρυθμίζει τη θέση της ουράς και των στατικών αρχείων (για την αποθήκευση αρχείων όπως η ουρά μηνυμάτων) $WorkDirectory /var/spool/sclude/rsyslog #. conf από τον κατάλογο /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf

Μπορείτε να βρείτε την πιο πλήρη λίστα παγκόσμιων οδηγιών.

Πρότυπα rsyslog

Πολύ σημαντικό και βασικό χαρακτηριστικό του rsyslogdείναι η δυνατότητα χρήσης προτύπων. Το πρότυπο επιτρέπει: 1. ορίστε τη μορφή των πληροφοριών εξόδου, 2. χρησιμοποιήστε δυναμικά ονόματα αρχείων καταγραφής με βάση κάποιον κανόνα. Στην πραγματικότητα, ΟλαΤα μηνύματα εξόδου στο rsyslogd δημιουργούνται βάσει προτύπων. Εδώ μπορεί να προκύψει ένα αντίστοιχο ερώτημα - πώς δημιουργείται η έξοδος εάν δεν καθορίσετε κανένα πρότυπο στο rsyslog.conf(τελικά, κανένα πρότυπο δεν καθορίζεται από προεπιλογή); Είναι απλό. Υπάρχουν μερικά πρότυπα (πάρθηκαν από συμβατά και γραμμένα στατικά στις πηγές rsyslog). Απόδειξη αυτού μπορείτε να βρείτε στο αρχείο πηγαίου κώδικα syslogd.c αναζητώντας "template_" (θα βρείτε /* τυπικά πρότυπα με σκληρό κώδικα (χρησιμοποιούνται για προεπιλογές) */). Τα πρότυπα πρέπει να προσδιορίζονται πρινχρήση στους κανόνες.

Πρότυπο σύνταξης

Γενικά, η δομή του προτύπου μπορεί να αναπαρασταθεί με την ακόλουθη σύνταξη:

$template template_name, template_description[,επιλογές (όπως απαιτείται)]

Ας δούμε κάθε σημείο. $πρότυπο- υποδεικνύει ότι θα ακολουθήσει περιγραφή του προτύπου. όνομα_προτύπου- μια αυθαίρετη τιμή που περιγράφει ξεκάθαρα τι είναι το πρότυπο και γιατί (το όνομα θα χρησιμοποιηθεί για αναφορά στο πρότυπο). επιλογές- μπορεί να πάρει νόημα sql Και sqlstd Αυτό αναγκάζει το τελικό αποτέλεσμα του προτύπου να μορφοποιηθεί σε μια φόρμα κατάλληλη για MySQL ή τυπική SQL, αντίστοιχα (στην πραγματικότητα, αντικαθιστά ορισμένους ειδικούς χαρακτήρες στο μήνυμα syslog σε μια μορφή που υποστηρίζεται από τον διακομιστή SQL). Οι επιλογές ισχύουν μόνο για πρότυπα για έξοδο σε sql.

template_description είναι σε εισαγωγικά. Σε εισαγωγικά, οποιοδήποτε κείμενο λαμβάνεται κυριολεκτικά (ως έχει), εκτός από το κείμενο που περικλείεται σε σημεία ποσοστού ( %κείμενο%). Αυτό το κείμενο είναι μια μεταβλητή και σας επιτρέπει να "πρόσβαση" στα εσωτερικά περιεχόμενα του εισερχόμενου μηνύματος και έτσι να επιτύχετε κάθε είδους διασκεδαστικές δυνατότητες τροποποίησης). Επίσης, το λεγόμενο μπορεί να χρησιμοποιηθεί σε εισαγωγικά. ακολουθίες διαφυγής με τη μορφή ανάστροφης κάθετου και κάποιου χαρακτήρα πίσω από τη γραμμή (για παράδειγμα, \n - νέα γραμμή, \7 - ...).

Χρήση μεταβλητών σε πρότυπα rsyslog

Ας ταξινομήσουμε τη δομή των τιμών που υποδεικνύονται σε %%.

%proper_name [:αρχή γραμμής :τέλος γραμμής :options [:fieldname]]%

όνομα_κατάλληλο(γνωστός και ως όνομα ιδιοκτησίας, είναι το ίδιο variable_name) - καθορίζει το όνομα της ιδιότητας (μια ιδιότητα σε αυτό το πλαίσιο μπορεί να θεωρηθεί ως κάποια ιδιότητα\πεδίο του μηνύματος syslog που διέρχεται από τον δαίμονα), εδώ είναι μερικές από τις πιο χρησιμοποιούμενες με ιδιότητες rsyslog:

  • μήνυμα- σώμα μηνύματος
  • όνομα κεντρικού υπολογιστή- όνομα κεντρικού υπολογιστή\ip από μήνυμα
  • fromhost- όνομα του οικοδεσπότη από τον οποίο προήλθε το μήνυμα
  • fromhost-ip- διεύθυνση του κεντρικού υπολογιστή από τον οποίο προήλθαν τα μηνύματα (127.0.0.1 για τοπικά μηνύματα)
  • syslogtag- όνομα και αριθμός της διαδικασίας ("rsyslogd:") που εξέδωσε το μήνυμα (εξάγεται από το μήνυμα)
  • όνομα προγράμματος- όνομα της διαδικασίας που εξέδωσε το μήνυμα (εξάγεται από το μήνυμα)
  • pri- πηγή και προτεραιότητα, ως αριθμός
  • προ-κείμενο- αποκωδικοποιημένη πηγή και προτεραιότητα ( ευκολία.προτεραιότητα, για παράδειγμα syslog.emer)
  • syslogfacility- μόνο πηγή ως αριθμός
  • syslogfacility-κείμενο- μόνο αποκωδικοποιημένη πηγή ("local0")
  • syslogseverity- μόνο προτεραιότητα ως αριθμός
  • syslogseverity-κείμενο- μόνο αποκωδικοποιημένο επίπεδο ("debug")
  • που δημιουργείται από το χρόνο- χρόνος απόκτησης (υψηλή ανάλυση)
  • χρονολογείται- χρόνος που εξάγεται από το μήνυμα
  • όνομα εισόδου- όνομα μονάδας εισαγωγής
  • $ώρα, $λεπτό- τρέχουσα ώρα
  • $myhostname- Επεξεργασία ονόματος κεντρικού υπολογιστή

Όπως μπορείτε να δείτε, ορισμένες ιδιότητες ξεκινούν με το σύμβολο του δολαρίου - θεωρούνται τοπικό\σύστημα.

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

  • κεφαλαίο- μετατροπή σε κεφαλαίο
  • πεζά- μετατροπή σε πεζά
  • ημερομηνία-mysql- μετατροπή σε μορφή ημερομηνίας MySQL
  • χώρο-cc- αντικαταστήστε τους χαρακτήρες ελέγχου με κενά
  • drop-cc- αφαιρέστε χαρακτήρες ελέγχου

όνομα πεδίου- αυτό το πεδίο είναι διαθέσιμο από την έκδοση 6.3.9+ και έχει πολύ συγκεκριμένο χαρακτήρα. Μπορείς να την ξεχάσεις...

Όπως μπορείτε να δείτε από το πρότυπο μεταβλητής παραπάνω, οι τιμές από τα σγουρά άγκιστρα είναι προαιρετικές, δηλαδή μπορείτε απλά να καθορίσετε, για παράδειγμα, %hostname%. Αλλά εάν χρησιμοποιούνται επιλογές, τότε πρέπει να καθοριστούν και τα προηγούμενα κενά πεδία, για παράδειγμα %hostname:::πεζά%. Λείπουν πεδία μεταξύ άνω και κάτω τελείας start_of_line και end_of_line. Ταυτόχρονα, για κάποιο λόγο το όνομα πεδίου δεν υποδεικνύεται ως κενό.

Πρότυπα που είναι κωδικοποιημένα με σκληρό κώδικα σε rsyslog (αλλά τα οποία μπορούν να αλλάξουν με μια οδηγία $ActionFileDefaultTemplate):

Μορφή RSYSLOG_SyslogProtocol23- η μορφή που ορίζεται στο προσχέδιο IETF πρότυπο ietf-syslog-protocol-23 ακολουθεί το πρότυπο:

"<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n\"

RSYSLOG_FileFormat- η παραδοσιακή μορφή αρχείου καταγραφής, με την προσθήκη κλασμάτων του δευτερολέπτου και ζώνης, αντιστοιχεί στο πρότυπο:

"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"

RSYSLOG_TraditionalFileFormat- η παραδοσιακή μορφή αρχείου καταγραφής για εγγραφή σε αρχείο, αντιστοιχεί στο ακόλουθο μοτίβο:

"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"

RSYSLOG_ForwardFormat- η παραδοσιακή μορφή αρχείου καταγραφής για μετάδοση με την προσθήκη κλασμάτων δευτερολέπτου και ζώνης, αντιστοιχεί στο πρότυπο:

"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"

RSYSLOG_TraditionalForwardFormat- παραδοσιακή μορφή αρχείου καταγραφής για μεταφορά σε απομακρυσμένο διακομιστή

"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"

Κανόνες ταξινόμησης rsyslog (γραμμή κανόνα)

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

Στα τυπικά χαρακτηριστικά επιλογείς καταγραφής συστήματοςέχουν προστεθεί κάποιες επιπλέον λειτουργίες (να σας υπενθυμίσω ότι κλασικά είναι επιλογέας πηγή.προτεραιότητα, γνωστός και ως ευκολία.προτεραιότητα). Στο rsyslog μπορείτε να χρησιμοποιήσετε τιμές ως επιλογέα. Στο rsyslog, η χρήση μεταβλητών σε έναν επιλογέα ονομάζεται Φίλτρα. Παραπάνω στο άρθρο, καθώς και στην κλασική προσέγγιση του φιλτραρίσματος με βάση πηγή.προτεραιότητα(το λεγόμενο "παραδοσιακοί" επιλογείς αυστηρότητας και εγκαταστάσεων). Εκτός από το παραδοσιακό φιλτράρισμα, υπάρχουν και τα ακόλουθα είδη φιλτραρίσματος: Φίλτρα βασισμένα σε RainerScript(φιλτράρισμα με βάση τη γλώσσα RainerScript - στην πραγματικότητα το συνηθισμένο εάν - τότε - αλλιώς), φίλτρα που βασίζονται σε ιδιότητες(φιλτράρισμα με βάση τις ιδιότητες του μηνύματος (όπως στο)). Ας δούμε και τα δύο:

Φίλτρα βασισμένα σε RainerScript

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

αν συνθήκη τότε action_block αλλιώς action_block

Αντίστοιχα, αν τότε- αυτοί είναι υποχρεωτικοί τελεστές που ορίζουν την κατασκευή της συνθήκης, αλλού- αναγκαστικά. action_block - μπορεί να περιέχει μία ενέργεια (), ή ένα ένθετο μπλοκ συνθηκών. Εάν ένα μπλοκ συνθηκών περιέχει πολλές ενέργειες, περικλείεται σε παρένθεση. κατάσταση- περιέχει μια συνθήκη για την επιλογή μηνυμάτων για το action_block. Στην κατάσταση μπορείτε να χρησιμοποιήσετε:

  1. λογικές εκφράσεις(και, ή, όχι), καθώς και ομαδοποίηση αυτών των εκφράσεων στη μορφή: όχι συνθήκη0 και (συνθήκη 1 και συνθήκη 2).
  2. ιδιότητες- οι μεταβλητές καθορίζονται με τη μορφή $variable_name (για παράδειγμα $hostname ή $msg)
  3. εργασίες σύγκρισης(== - ίσο, != - όχι ίσο, > - μεγαλύτερο,< - меньше, <= - меньше или равно, >= - μεγαλύτερο ή ίσο με, (!)περιέχει - (δεν) περιέχει, (!)ξεκινά με - (δεν) αρχίζει με)
  4. σχόλια /* σχόλια */(αμφίβολο σημείο...χρειάζεται να ξεφύγει όπως στο bash;;;)

Cisco

as53xx231#conf t Εισαγάγετε εντολές διαμόρφωσης, μία ανά γραμμή. Τέλος με CNTL/Z. as53xx231(config)#logging 10.0.0.1 as53xx231(config)#exit

VMware ESXi

Για έναν παλιό hypervisor:

Πρέπει να προσθέσετε τα ακόλουθα στο /etc/syslog.conf:

*.* @10.0.0.1 # στο τείχος προστασίας πρέπει να επιτρέψετε το syslog και να το αποθηκεύσετε: esxcfg-firewall -o 514,udp,out,syslog esxcfg-firewall -l # επανεκκίνηση υπηρεσίας καταγραφής syslog επανεκκίνηση

Στις τελευταίες εκδόσεις του hypervisor, όλα γίνονται μέσω του προγράμματος-πελάτη GUI. Στις ρυθμίσεις hypervisor Advansed -> Syslog -> remote, καθορίστε τη διεύθυνση του διακομιστή rsyslog.

Αποθήκευση του αρχείου καταγραφής rsyslog στο MySQL DBMS

Στο Debian, η ρύθμιση του χώρου αποθήκευσης σε μια βάση δεδομένων είναι πολύ απλή (σχεδόν όπως σε έναν αυτόματο πωλητή)). Σε γενικές γραμμές, αρκεί να εγκαταστήσετε το πακέτο rsyslog-mysql. Σε αυτήν την περίπτωση, το πρόγραμμα εγκατάστασης τοποθετεί τη λειτουργική μονάδα ommysql.so στον κατάλογο /usr/lib/rsysloul/spang/ και εκκινεί τον οδηγό ρύθμισης παραμέτρων, ο οποίος ζητά τον κωδικό πρόσβασης διαχειριστή MySQL, δημιουργεί έναν ξεχωριστό χρήστη και ζητά κωδικό πρόσβασης για αυτόν. Δημιουργεί την αντίστοιχη βάση δεδομένων από το σενάριο /usr/share/dbconfig-common/data/rsyslog-mysql/install/mysql. Οι ρυθμίσεις που προκύπτουν τοποθετούνται στο /etc/rsyslog.d/mysql.conf. Η διαμόρφωση αποτελείται από 2 γραμμές:

# σύνδεση μονάδας: $ModLoad ommysql # αποστολή όλων των μηνυμάτων στη MySQL (θυμηθείτε τις ενέργειες παραπάνω) *.* :ommysql:server_address, database_name, user_name, password

Διασύνδεση Ιστού για το rsyslog

Θα διαμορφώσουμε το Loganalizer από το adiscon ως διεπαφή ιστού. Η εγκατάσταση της διεπαφής ιστού είναι αρκετά απλή. Αποτελείται από τη λήψη του αρχείου, την αποσυσκευασία του στον κατάλογο του διακομιστή web και την εκκίνηση του οδηγού εγκατάστασης γραφικών. Λοιπόν, από εδώ (http://loganalyzer.adiscon.com/downloads) κατεβάστε το αρχείο με τα αρχεία (Για παράδειγμα: http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz). Πριν από τη ρύθμιση, φυσικά, πρέπει να εγκατασταθεί ο διακομιστής Web και η μονάδα php5 (aptitude install apache2 libapache2-mod-php5). Και ναι, επίσης php5-gd για την εμφάνιση αναφορών.

~ # # Κατεβάστε το αρχείο: ~ # wget http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz ~ # # Αποσυσκευάστε το αρχείο: ~ # tar xf loganalyzer-3.5.6.tar. gz

Ο κατάλογος loganalyzer-3.5.6 θα εμφανιστεί στον τρέχοντα κατάλογο, ο οποίος περιέχει ορισμένες πληροφορίες που αξίζει να διαβάσετε:

~ # ls -l συνολικά 12 drwxr-xr-x 3 root root 4096 Σεπ 20 22:51 . drwx------ 13 root root 4096 Sep 20 23:01 .. drwxrwxr-x 5 root root 4096 Sep 10 17:26 loganalyzer-3.5.6 ~ # ls -l loganalyzer-3.5.6/rw total 11 -rw-r-- 1 root root 41186 Sep 10 17:26 ChangeLog drwxrwxr-x 2 root root 4096 Sep 20 23:01 contrib -rw-rw-r-- 1 root root 35497 Sep 10 17:26 drwxrwx COP 2 root root 4096 Sep 10 17:34 doc -rw-rw-r-- 1 root root 8449 Sep 10 17:26 INSTALL drwxrwxr-x 14 root root 4096 Sep 10 17:34 src ~ # # χρειαζόμαστε από τον κατάλογο για να αντιγράψετε περιεχόμενο στο /var/www/loganalyzer: ~ # mkdir /var/www/loganalyzer ~ # cp -r loganalyzer-3.5.6/src/* /var/www/loganalyzer ~ # # στη συνέχεια, πρέπει να δημιουργήσετε ένα κενό αρχείο διαμόρφωσης, ~ # # το οποίο θα συμπληρωθεί αυτόματα από το πρόγραμμα εγκατάστασης ~ # touch /var/www/loganalyzer/config.php ~ # # ορίστε δικαιώματα εγγραφής (μετά την εγκατάσταση, αυτά τα δικαιώματα μπορούν να αφαιρεθούν) ~ # chmod 666 / var/www/loganalyzer/config.php

Κάντε κλικ ΕΔΩ

Βλέπουμε γιατί δώσαμε δικαιώματα 666, κάντε κλικ στο Επόμενο

Εδώ επιλέγουμε τις επιθυμητές ρυθμίσεις. Η παράμετρος Enable User Database απαιτεί ιδιαίτερη προσοχή. Εάν το επιλέξετε, θα δημιουργηθεί μια ξεχωριστή βάση δεδομένων για την αποθήκευση των ρυθμίσεων της διεπαφής Web. Επίσης, θα είναι διαθέσιμη η δυνατότητα δημιουργίας χρηστών και ομάδων. Κάντε κλικ στο επόμενο.

Υπάρχει μια μικρή προσθήκη - ο διακομιστής web δεν έχει πρόσβαση σε κανονικά αρχεία στον κατάλογο /var/log/. Επομένως, το αρχείο καταγραφής ενδέχεται να μην εμφανίζεται. Για να λύσετε αυτό το πρόβλημα, πρέπει να προσθέσετε τον χρήστη www-data στην ομάδα adm:

~ # usermod -G adm www-data

Εκτός από το Loganalyzer, υπάρχει και το Logzilla, το οποίο έχει την ίδια λειτουργικότητα. Αξίζει επίσης να προσπαθήσετε να το εγκαταστήσετε αν θέλετε.

Μερικές συμβουλές και κόλπα για το rsyslog

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

~ # cat /etc/default/rsyslog RSYSLOGD_OPTIONS="-c5 -x"

Για να επιτρέψετε τη διέλευση πακέτων UDP, πρέπει να χρησιμοποιήσετε την εντολή:

~ # iptables -A INPUT -p udp -s source_subnet --dport 514 -i interface -j ACCEPT

Μερικά παραδείγματα κανόνων με σχόλια:

# εάν δημιουργήσετε έναν επιλογέα όπως αυτός: εάν το $fromhost-ip ξεκινά με "10.0.1." τότε /something/ # θα πρέπει να δώσετε προσοχή στην τελευταία κουκκίδα της διεύθυνσης, # διαφορετικά οι διευθύνσεις από το υποδίκτυο 10.0.111.0, 10.0.12.0 και άλλες θα εμπίπτουν στον κανόνα

Για έναν κεντρικό διακομιστή για τη συλλογή αρχείων καταγραφής από συσκευές δικτύου, μπορείτε να ορίσετε την πηγή (εγκατάσταση) στις συσκευές δικτύου σε οποιαδήποτε τιμή από το local0-local7. Αυτό θα σας επιτρέψει να ταξινομήσετε εύκολα τα μηνύματα, για παράδειγμα:

# cisco: net-device-cisco#conf t Εισαγάγετε εντολές διαμόρφωσης, μία ανά γραμμή. Τέλος με CNTL/Z.<...>net-device-cisco(config)#logging facility local2<...># rsyslog-server local2.* /var/log/remote-cisco.log & ~

Με αυτόν τον τρόπο, μπορείτε εύκολα να φιλτράρετε τοπικά μηνύματα από απομακρυσμένα.

Ακολουθούν ορισμένες ρυθμίσεις παραμέτρων που σας επιτρέπουν να στέλνετε ειδοποιήσεις αλληλογραφίας για συμβάντα (!!! ο διακομιστής αλληλογραφίας πρέπει να δέχεται μηνύματα χωρίς έλεγχο ταυτότητας):

$ModLoad ommail $ActionMailSMTPSδιακομιστής smtp_address $ActionMailSMTPPport 25 $ActionMailFrom sender@address $ActionMailTo recipient@address $template mail_subject,"Στον κεντρικό υπολογιστή %hostname%, επίπεδο σφάλματος κατά διακομιστή" $logerFlatecility%.s_s. syslogpriority% στο %timegenerated% στον κεντρικό υπολογιστή: %HOSTNAME%\r\n %msg%" $ActionMailSubject mail_subject # χρονικό διάστημα (παύση μεταξύ των γραμμάτων) $ActionExecOnlyOnceEveryInterval 10 # φίλτρο επιλογής και ενέργεια αν όχι (το $msg περιέχει "κάτι"\ ή Το $msg περιέχει "κάτι άλλο"\ ή το $msg περιέχει "ίσως_κάτι άλλο")\ και ($syslogseverity-text =="err"\ ή $syslogseverity-text =="crit"\ ή $syslogseverity-text =="ειδοποίηση "\ or $syslogseverity-text =="emerg")\ then:ommail:;mail_body

Αντιμετώπιση προβλημάτων

Για τη διάγνωση της λειτουργίας του syslog, ένα παράδειγμα εντολής για παρακολούθηση είναι πολύ χρήσιμο:

~ # tcpdump -vvv -nn -i interface udp port 514

Και, φυσικά, το ίδιο το /var/log/syslog.

Το Badoo έχει αρκετές δεκάδες «σπιτικούς» δαίμονες. Τα περισσότερα από αυτά είναι γραμμένα σε C, με ένα να παραμένει στη C++ και πέντε ή έξι στο Go. Λειτουργούν σε περίπου εκατό διακομιστές σε τέσσερα κέντρα δεδομένων.

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

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

Επιλογή εργαλείων

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

Splunk

Πρώτα απ 'όλα, δοκιμάσαμε το Splunk. Το Splunk είναι ένα σύστημα με το κλειδί στο χέρι, μια κλειστή και πληρωμένη λύση, το κόστος της οποίας εξαρτάται άμεσα από την κίνηση που εισέρχεται στο σύστημα. Το χρησιμοποιούμε ήδη για δεδομένα στο τμήμα τιμολόγησης. Οι συνάδελφοι είναι πολύ χαρούμενοι.

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

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

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

ELK: Elastic Search + Logstash + Kibana


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

Το ELK αποτελείται από τρία συστατικά:

  • Ελαστική αναζήτηση. Σύστημα αποθήκευσης και ανάκτησης δεδομένων που βασίζεται στον κινητήρα Lucene.
  • Logstash. Ένας «σωλήνας» με μια δέσμη χαρακτηριστικών μέσω των οποίων τα δεδομένα (πιθανώς επεξεργασμένα) εισέρχονται στην Elastic Search.
  • Κιμπάνα. Διεπαφή Ιστού για αναζήτηση και οπτικοποίηση δεδομένων από την Elastic Search.

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

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

Παρά το γεγονός ότι τα ΕΛΚ μας ταίριαξαν απόλυτα, υπήρχε και τρίτος διεκδικητής.

Graylog 2


Συνολικά, το Graylog 2 μοιάζει πολύ με το ELK: ανοιχτού κώδικα, εύκολο στην εγκατάσταση, χρησιμοποιεί επίσης Elastic Search και μπορεί να χρησιμοποιήσει το Logstash. Η κύρια διαφορά είναι ότι το Graylog 2 είναι ένα έτοιμο προς χρήση σύστημα σχεδιασμένο ειδικά για τη συλλογή κορμών. Θυμίζει πολύ το Splunk στην ετοιμότητά του για τον τελικό χρήστη. Υπάρχει επίσης μια βολική γραφική διεπαφή με τη δυνατότητα ρύθμισης παραμέτρων ανάλυσης γραμμών απευθείας στο πρόγραμμα περιήγησης, περιορισμούς πρόσβασης και ειδοποιήσεων.

Καταλήξαμε όμως στο συμπέρασμα ότι το ELK θα μας επέτρεπε να φτιάξουμε ένα πολύ πιο ευέλικτο σύστημα, προσαρμοσμένο στις ανάγκες μας. θα σας επιτρέψει να επεκτείνετε και να αλλάξετε στοιχεία. Ως σχεδιαστής. Αν δεν σας άρεσε ένα εξάρτημα, το αντικατέστησαν με ένα άλλο. Δεν ήθελαν να πληρώσουν για έναν παρατηρητή - έφτιαξαν το δικό τους σύστημα. Ενώ στο ELK όλα τα εξαρτήματα μπορούν εύκολα να αφαιρεθούν και να αντικατασταθούν, στο Graylog 2 υπήρχε η αίσθηση ότι ορισμένα μέρη θα έπρεπε να κοπούν από τις ρίζες και μερικά απλά δεν θα μπορούσαν να εφαρμοστούν.

Αποφασίστηκε. Θα το κάνουμε στα ΕΛΚ.

Παράδοση κορμών

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

Θα μπορούσαμε να παραδώσουμε αρχεία καταγραφής στο Logstash ως εξής:

  • χρησιμοποιήστε υπάρχοντα βοηθητικά προγράμματα από το σετ ELK (logstash-forwarder, και τώρα beats). Είναι ένας ξεχωριστός δαίμονας που παρακολουθεί ένα αρχείο στο δίσκο και το ανεβάζει στο Logstash.
  • χρησιμοποιούμε τη δική μας ανάπτυξη με το όνομα LSD, η οποία μας παρέχει αρχεία καταγραφής PHP. Στην πραγματικότητα, αυτός είναι επίσης ένας ξεχωριστός δαίμονας που παρακολουθεί τα αρχεία καταγραφής στο σύστημα αρχείων και τα ανεβάζει κάπου. Από τη μία πλευρά, το LSD έλαβε υπόψη και έλυσε όλα τα προβλήματα που μπορεί να προκύψουν κατά τη μεταφόρτωση ενός τεράστιου αριθμού αρχείων καταγραφής από έναν τεράστιο αριθμό διακομιστών, αλλά το σύστημα είναι πολύ "προσαρμοσμένο" σε σενάρια PHP. Θα έπρεπε να το τελειώσουμε.
  • Παράλληλα με την εγγραφή στο δίσκο, γράψτε αρχεία καταγραφής στο τυπικό σύστημα καταγραφής UNIX.

Παρά τα μειονεκτήματα του τελευταίου, αυτή η προσέγγιση ήταν πολύ απλή και αποφασίσαμε να τη δοκιμάσουμε.

Αρχιτεκτονική

Διακομιστές και rsyslogd

Μαζί με τους διαχειριστές του συστήματος, σχεδιάσαμε μια αρχιτεκτονική που μας φαινόταν λογική: εγκαθιστούμε έναν δαίμονα rsyslogd σε κάθε διακομιστή, έναν κύριο δαίμονα rsyslogd ανά ιστότοπο, ένα Logstash ανά ιστότοπο και ένα σύμπλεγμα Elastic Search πιο κοντά μας, στη Μόσχα, δηλ. . στο κέντρο δεδομένων της Πράγας.

Στις εικόνες, ένας από τους διακομιστές έμοιαζε κάπως έτσι:

Επειδή Επειδή το Badoo χρησιμοποιεί docker σε ορισμένα σημεία, σχεδιάσαμε να περάσουμε την υποδοχή /dev/log μέσα στο κοντέινερ χρησιμοποιώντας ενσωματωμένα μέσα.

Το τελικό σχέδιο ήταν κάπως έτσι:


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

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

Μορφή γραμμής καταγραφής και Logstash


Το Logstash είναι ένας σωλήνας δεδομένων στον οποίο αποστέλλονται γραμμές. Στο εσωτερικό, αναλύονται και αποστέλλονται στην Elastic Search με τη μορφή πεδίων και ετικετών έτοιμων για ευρετηρίαση.

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

04 Μαρτίου 04:00:14.609331 <16367>storage_file.c:1212 storage___update_dump_data(): starting dump (με νήματα, ενημέρωση)

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

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

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

Έχουμε τυποποιήσει αυτό το αναγνωριστικό και περάσαμε εκεί το όνομα, το δευτερεύον όνομα και την έκδοση του δαίμονα. Π.χ meetmaker-ru.mlan-1.0.0. Με αυτόν τον τρόπο μπορούμε να διακρίνουμε αρχεία καταγραφής από διαφορετικούς δαίμονες, από διαφορετικούς τύπους του ίδιου δαίμονα (για παράδειγμα, χώρα, αντίγραφο) και να έχουμε πληροφορίες για την τρέχουσα έκδοση του δαίμονα.

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

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

Επιτρέψτε μου να αναφέρω το timing. Προσπαθήσαμε να λάβουμε υπόψη διαφορετικές επιλογές και η προεπιλεγμένη ώρα μηνύματος θα είναι η ώρα από το μήνυμα libangel, δηλ. ουσιαστικά τη στιγμή που δημιουργήθηκε αυτό το μήνυμα. Εάν για κάποιο λόγο δεν βρέθηκε αυτή η ώρα, θα πάρουμε το χρόνο από το syslog, π.χ. ώρα που το μήνυμα πήγε στον πρώτο τοπικό δαίμονα syslog. Εάν για κάποιο λόγο αυτή η ώρα δεν είναι διαθέσιμη, η ώρα του μηνύματος θα είναι η ώρα λήψης του μηνύματος στο Logstash.

Τα πεδία που προκύπτουν πηγαίνουν στην Ελαστική αναζήτηση για ευρετηρίαση.


ElasticSearch

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

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

Παρέχαμε τρεις διακομιστές για το σύμπλεγμα Elastic Search και το ρυθμίσαμε έτσι ώστε κάθε ευρετήριο να έχει ένα αντίγραφο, όπως στο διάγραμμα.


Σε μια τέτοια αρχιτεκτονική, η αποτυχία οποιουδήποτε από τους κόμβους συμπλέγματος δεν είναι μοιραία και δεν οδηγεί στη μη διαθεσιμότητα του συμπλέγματος.

Εκτός από την ίδια την ανοχή σφαλμάτων, με αυτό το σχήμα είναι βολικό να ενημερώνεται η ίδια η Elastic Search: σταματάμε έναν από τους κόμβους, τον ενημερώνουμε, τον ξεκινάμε, ενημερώνουμε τον άλλο.

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

  • Σε περίπτωση που οι διακομιστές εξαντληθεί ο χώρος στο δίσκο, είναι πολύ εύκολο να διαγράψετε παλιά δεδομένα. Αυτή είναι μια γρήγορη λειτουργία, και επιπλέον, υπάρχει ένα έτοιμο εργαλείο Curator για τη διαγραφή παλαιών δεδομένων.
  • κατά τη διάρκεια μιας έρευνας σε διάστημα μεγαλύτερο της μιας ημέρας, η έρευνα μπορεί να πραγματοποιηθεί παράλληλα. Επιπλέον, μπορεί να εκτελεστεί παράλληλα είτε σε έναν διακομιστή είτε σε πολλούς.

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

Υπάρχουν πολλές λεπτές λεπτομέρειες στη ρύθμιση της Elastic Search, που σχετίζονται τόσο με την Java όσο και απλώς με το γεγονός ότι το Lucene χρησιμοποιείται μέσα. Αλλά όλες αυτές οι λεπτές αποχρώσεις περιγράφονται στην επίσημη τεκμηρίωση και σε πολλά άρθρα, οπότε δεν θα εμβαθύνω. Επιτρέψτε μου απλώς να αναφέρω εν συντομία ότι στον διακομιστή Elastic Search πρέπει να θυμάστε να εκχωρείτε μνήμη τόσο για το Java Heap όσο και εκτός του Heap (το Lucene θα το χρησιμοποιήσει) και επίσης να καταχωρείτε "αντιστοιχίσεις" ειδικά για τα πεδία σας σε ευρετήρια για να επιταχύνετε την εργασία και να μειώσει την κατανάλωση χώρου στο δίσκο.

Κιμπάνα

Δεν υπάρχει τίποτα για να μιλήσουμε εδώ :-) Εγκαταστάθηκε και λειτουργεί. Ευτυχώς, στην τελευταία έκδοση οι προγραμματιστές έχουν προσθέσει τη δυνατότητα αλλαγής της ζώνης ώρας στις ρυθμίσεις. Προηγουμένως, η τοπική ζώνη ώρας του χρήστη είχε ληφθεί από προεπιλογή, κάτι που είναι πολύ ενοχλητικό, επειδή... Στους διακομιστές μας, το UTC είναι πάντα και παντού και έχουμε συνηθίσει να επικοινωνούμε χρησιμοποιώντας το.

Σύστημα ειδοποιήσεων

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

Στον κόσμο των ΕΛΚ υπήρχαν δύο παρόμοια έτοιμα προϊόντα:

  • Watcher από την ίδια την Elastic?

Το Watcher είναι ένα κλειστό προϊόν από την Elastic που απαιτεί ενεργή συνδρομή. Το Elastalert είναι ένα προϊόν ανοιχτού κώδικα γραμμένο σε Python. Απορρίψαμε τον Watcher σχεδόν αμέσως για τον ίδιο λόγο όπως πριν - κλειστότητα και δυσκολία να επεκταθεί και να προσαρμοστεί σε εμάς. Σύμφωνα με δοκιμές, το Elastalert αποδείχθηκε εξαιρετικό προϊόν, αλλά είχε επίσης αρκετά μειονεκτήματα (αν και όχι πολύ κρίσιμα):

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

Αφού παίξαμε με το Elastalert και μελετήσαμε τον πηγαίο κώδικα του, αποφασίσαμε να γράψουμε το προϊόν σε PHP χρησιμοποιώντας το τμήμα πλατφόρμας. Ως αποτέλεσμα, ο Denis Karasik Battlecat έγραψε ένα προϊόν «προσαρμοσμένο» για εμάς σε 2 εβδομάδες: είναι ενσωματωμένο στο backoffice και έχει μόνο την απαραίτητη λειτουργικότητα.



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



"Τσουγκράνα"

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

Πρόβλημα 1 (syslog + docker)

Ο τυπικός τρόπος επικοινωνίας μεταξύ του δαίμονα του syslog και του προγράμματος είναι η υποδοχή unix /dev/log. Όπως αναφέρθηκε παραπάνω, το προωθήσαμε μέσα στο κοντέινερ χρησιμοποιώντας τυπικά εργαλεία docker. Αυτός ο συνδυασμός λειτούργησε εξαιρετικά μέχρι να χρειαστεί να επανεκκινήσουμε τον δαίμονα του syslog.

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

Εάν προωθήσετε ολόκληρο τον κατάλογο, τότε μπορεί να υπάρχει μια υποδοχή Unix μέσα χωρίς κανένα πρόβλημα και η επανεκκίνηση του δαίμονα δεν θα σπάσει τίποτα. Στη συνέχεια, όμως, η ρύθμιση όλου αυτού του πλούτου γίνεται πιο περίπλοκη, επειδή η libc αναμένει ότι η υποδοχή θα είναι στο /dev/log.

Η δεύτερη επιλογή που εξετάσαμε ήταν να χρησιμοποιήσουμε UDP ή TCP για να στείλουμε αρχεία καταγραφής εξωτερικά. Αλλά εδώ το πρόβλημα είναι το ίδιο όπως στην προηγούμενη περίπτωση: το libc μπορεί να γράψει μόνο στο /dev/log. Θα έπρεπε να γράψουμε τον δικό μας πελάτη syslog, αλλά σε αυτό το στάδιο δεν θέλαμε να το κάνουμε αυτό.

Στο τέλος, αποφασίσαμε να εκτελέσουμε έναν δαίμονα syslog σε κάθε κοντέινερ και να συνεχίσουμε να γράφουμε στο /dev/log χρησιμοποιώντας τις τυπικές συναρτήσεις libc openlog()/syslog().

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

Πρόβλημα 2 (αποκλεισμός καταγραφής συστήματος)

Στο σύμπλεγμα ανάπτυξης, παρατηρήσαμε ότι ένας από τους δαίμονες παγώνει περιοδικά. Ενεργοποιώντας το εσωτερικό φύλακα του δαίμονα, λάβαμε πολλά backtraces που έδειχναν τον δαίμονα να κρέμεται στο syslog() -> write().

WATCHDOG ==== ετικέτα: IPC_SNAPSHOT_SYNC_STATE εκκίνηση: 3991952 δευτ. 50629335 nsec τώρα: 3991953 δευτ. 50661797 nsec Backtrace: /lib64/libc.so.6(__49_ks/send 0x3 ba)/ lib64 /libc.so.6(syslog+0x8f) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(zlog1+0x225) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: εκτέλεση /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(storage_save_sync_done+0x68) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(ipc_game_loop+0x7f9) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(game+0x25b) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(service_late_init+0x193) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: running(main+0x40a) /lib64/libc.so.6(__libc_start_main+0xf5) /local/meetmaker/bin/meetmaker-3.1.0_2782 | shard1: τρέχει ==== WATCHDOG ====

Έχοντας κατεβάσει γρήγορα τις πηγές libc και εξετάσαμε την υλοποίηση του προγράμματος-πελάτη syslog, συνειδητοποιήσαμε ότι η συνάρτηση syslog() είναι σύγχρονη και τυχόν καθυστερήσεις στην πλευρά του rsyslog θα επηρεάσουν τους δαίμονες.

Κάτι έπρεπε να γίνει γι' αυτό και όσο πιο γρήγορα τόσο το καλύτερο. Αλλά δεν είχαμε χρόνο…

Λίγες μέρες αργότερα πατήσαμε την πιο δυσάρεστη τσουγκράνα της σύγχρονης αρχιτεκτονικής - την καταρράκτη αστοχία.

Το Rsyslog έχει ρυθμιστεί από προεπιλογή έτσι ώστε αν η εσωτερική ουρά γεμίσει για κάποιο λόγο, αρχίζει να "γκάζι", π.χ. επιβραδύνετε την «καταγραφή» νέων μηνυμάτων.

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

Και οι δαίμονες, όπως είπα παραπάνω, γράφουν στο /dev/log συγχρονισμένα και χωρίς κανένα χρονικό όριο.
Το αποτέλεσμα είναι προβλέψιμο: λόγω ενός flooding test daemon, όλοι οι δαίμονες που γράφουν στο syslog με τουλάχιστον κάποια σημαντική συχνότητα άρχισαν να επιβραδύνουν.

Ένα άλλο λάθος ήταν ότι δεν ενημερώσαμε τους διαχειριστές του συστήματος για το πιθανό πρόβλημα και χρειάστηκε περισσότερο από μία ώρα για να μάθουμε την αιτία και να απενεργοποιήσουμε το rsyslog.

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

Όμως αργά ή γρήγορα τα αρχεία καταγραφής γίνονται πολύ μεγάλα, καταλαμβάνουν όλο το χώρο στο δίσκο και αυτό οδηγεί σε νέα σφάλματα. Επομένως, είναι σημαντικό να ελέγχετε πώς και πού αποθηκεύονται τα αρχεία καταγραφής. Για πολλά χρόνια, το λειτουργικό σύστημα Linux χρησιμοποιεί την υπηρεσία Syslog για τη διαχείριση αρχείων καταγραφής. Σε σύγχρονες εκδόσεις, χρησιμοποιείται η τροποποίησή του - rsyslog.

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

Η ανάπτυξη του rsyslog ξεκίνησε το 2004, ως ένα fork της τότε χρησιμοποιούμενης υπηρεσίας Syslog. Το πρόγραμμα κέρδισε γρήγορα δημοτικότητα μεταξύ των χρηστών και πλέον περιλαμβάνεται από προεπιλογή σε πολλές διανομές Linux.

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

Εδώ είναι τα κύρια χαρακτηριστικά:

  • Multithreading;
  • TCP, SSL, TLS, RELP;
  • Υποστήριξη MySQL, PostgreSQL, Oracle.
  • Φιλτράρισμα καταγραφής.
  • Πλήρως προσαρμόσιμη μορφή εξόδου.

Πώς λειτουργεί η καταγραφή;

Όλα τα προγράμματα Linux καταγράφονται στέλνοντας μηνύματα σφάλματος ή την κατάστασή τους χρησιμοποιώντας την υποδοχή syslog ή απλώς γράφοντας όλα τα μηνύματα σε ένα αρχείο που θα βρίσκεται στον κατάλογο /var/log/.

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

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

  • KERN_EMERG- το σύστημα δεν λειτουργεί.
  • KERN_ALERT- πρέπει να ληφθούν άμεσα μέτρα.
  • KERN_CRIT- κρίσιμο σφάλμα.
  • KERN_ERR- ένα κοινό λάθος
  • KERN_ΠΡΟΕΙΔΟΠΟΙΗΣΗ- προειδοποίηση
  • KERN_NOTICE- παρατήρηση
  • KERN_INFO- Ανακοίνωση
  • KERN_DEBUG- εντοπισμός σφαλμάτων μηνυμάτων.

Παρόμοια επίπεδα αρχείων καταγραφής υποστηρίζονται στα περισσότερα προγράμματα που διατηρούν αρχεία καταγραφής.

Ρύθμιση του Rsyslog σε Linux

Όλες οι ρυθμίσεις Rsyslog βρίσκονται στο αρχείο /etc/rsyslog.conf και σε άλλα αρχεία διαμόρφωσης από το /etc/rsyslog.d. Μπορείτε να δείτε εάν υπάρχουν αυτά τα αρχεία εκτελώντας:

rsyslog.conf rsyslog.d/

Το κύριο αρχείο διαμόρφωσης είναι το /etc/rsyslog.conf, περιέχει όλα τα αρχεία από το φάκελο rsyslog.d χρησιμοποιώντας την οδηγία IncludeConfig στην αρχή του αρχείου:

IncludeConfig /etc/rsyslog.d/*.conf

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

Η σύνταξη του αρχείου διαμόρφωσης είναι πολύ απλή:

$μεταβλητή τιμή

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

Το ModLoad imuxsock # παρέχει υποστήριξη για καταγραφή τοπικού συστήματος
Το $ModLoad imklog # παρέχει υποστήριξη καταγραφής πυρήνα
Το #$ModLoad immark # παρέχει δυνατότητα μηνυμάτων --MARK--

Το # παρέχει λήψη συστήματος αρχείου UDP

#$ModLoad imudp
#$UDPServerRun 514

Το # παρέχει λήψη συστήματος TCP

#$ModLoad imtcp
#$InputTCPServerRun 514

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

  • Μονάδες εισόδου- μπορεί να θεωρηθεί ως ένας τρόπος συλλογής πληροφοριών από διάφορες πηγές, ξεκινώντας από το im.
  • Μονάδες εξόδου- σας επιτρέπει να στέλνετε μηνύματα σε αρχεία ή μέσω του δικτύου ή σε μια βάση δεδομένων, το όνομα αρχίζει με om.
  • Μονάδες φιλτραρίσματος- σας επιτρέπει να φιλτράρετε τα μηνύματα με διαφορετικές παραμέτρους, ξεκινώντας από το fm.
  • Ενότητες ανάλυσης- παρέχει προηγμένες δυνατότητες ανάλυσης μηνυμάτων, ξεκινώντας από μ.μ.

Πρώτον, φορτώνεται η μονάδα imuxsock, η οποία επιτρέπει στην υπηρεσία να λαμβάνει μηνύματα από την υποδοχή και το δεύτερο imklog λαμβάνει μηνύματα πυρήνα. Η μονάδα σήμανσης φορτώνεται στη συνέχεια, η οποία σας επιτρέπει να επισημάνετε συνδέσεις ή να εμφανίσετε μηνύματα ότι το σύστημα καταγραφής εξακολουθεί να εκτελείται. Για παράδειγμα, μπορείτε να ζητήσετε από το rsyslog να εκτυπώνει μηνύματα κάθε 20 λεπτά:

ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

Σε αυτή τη γραμμή υποδεικνύουμε ότι πρέπει να χρησιμοποιήσουμε την τυπική μορφή αποθήκευσης χρόνου, σε δευτερόλεπτα από το 1970.

Ρίζα FileOwner
$FileGroupadm
$FileCreateMode 0640
$DirCreateMode 0755
0022 $ Umask

Μετά τη δημιουργία αυτών των αρχείων, τα δικαιώματά τους μπορούν να αλλάξουν σε αυτά που χρειάζεστε.

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

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
δαίμονας.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
χρήστη.* -/var/log/user.log

Κάθε κανόνας έχει τη δική του σύνταξη, πρώτα έρχεται η πηγή και η προτεραιότητα και μετά η ενέργεια. Εάν η πηγή και η προτεραιότητα ταιριάζουν, το μήνυμα αποστέλλεται στο καθορισμένο αρχείο. Για παράδειγμα, μπορούμε να στείλουμε περισσότερα μηνύματα στο αρχείο καταγραφής συστήματος linux /var/messages:

*.info;mail.none;authpriv.none;cron.none /var/log/messages

Σε αυτή τη γραμμή επιλέγουμε όλα τα μηνύματα σε επίπεδο πληροφοριών εκτός από το mail, το authpriv και το cron. Το μοτίβο mail.none σημαίνει ότι δεν χρειάζεται να καταγραφεί κανένα επίπεδο μηνύματος. Κατά συνέπεια, η κατασκευή *.info σημαίνει καταγραφή μηνυμάτων από όλες τις πηγές, αλλά μόνο με το επίπεδο πληροφοριών, *.* σημαίνει όλα τα μηνύματα γενικά, με όλα τα επίπεδα.

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

  • auth;
  • authpriv;
  • cron?
  • δαίμονας;
  • kern?
  • ταχυδρομείο;
  • σημάδι;
  • Νέα;
  • ασφάλεια (ισοδύναμη με auth)·
  • syslog;
  • χρήστης;
  • uucp;
  • local0 ... local7;

Και ως προτεραιότητες μπορείτε να χρησιμοποιήσετε:

  • emerg (πρώην πανικός)?
  • συναγερμός;
  • crit?
  • σφάλμα (πρώην err)?
  • προειδοποίηση (παλαιότερα προειδοποίηση).
  • ειδοποίηση;
  • πληροφορίες?
  • εντοπισμός σφαλμάτων?

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

Μπορείτε να φιλτράρετε μηνύματα χρησιμοποιώντας αυτήν τη σύνταξη:

:field, σύγκριση, "value" file_path

Ως λειτουργία σύγκρισης, μπορείτε να χρησιμοποιήσετε τις ακόλουθες επιλογές:

  • περιέχει- το πεδίο περιέχει την καθορισμένη τιμή.
  • είναι ίσο- το πεδίο πρέπει να είναι πανομοιότυπο με την τιμή.
  • ξεκινάει με- το πεδίο πρέπει να ξεκινά με μια τιμή.
  • regex- συγκρίνει το πεδίο με μια κανονική έκφραση.

Για παράδειγμα, ας φιλτράρουμε μηνύματα μόνο από ένα συγκεκριμένο πρόγραμμα:

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& να σταματήσει

Επιπλέον, μπορείτε να χρησιμοποιήσετε απλούστερη σύνταξη, με τη μορφή μιας δήλωσης if. Εδώ είναι η βασική σύνταξη:

αν $field σύγκριση "value" τότε αρχείο

Χρησιμοποιεί τα ίδια εξαρτήματα, απλά φαίνεται λίγο πιο απλό. Για παράδειγμα:

αν $syslogtag == "giomanager" τότε /var/log/giomanager.log

Ρύθμιση syslog για απομακρυσμένη καταγραφή

Θα ήταν πολύ βολικό εάν τα αρχεία καταγραφής από όλους τους διακομιστές δικτύου συγκεντρώνονταν σε ένα μηχάνημα. Όλα τα σημαντικά μηνύματα σφάλματος και τα προβλήματα θα είναι εδώ. Θα μπορούσατε να τα αναλύσετε όλα αυτά πολύ γρήγορα. Η αποστολή ενός αρχείου καταγραφής σε έναν απομακρυσμένο διακομιστή είναι αρκετά απλή για να γίνει αυτό, απλώς καθορίστε τη διεύθυνση @ και ip του απομακρυσμένου μηχανήματος στο οποίο εκτελείται το rsyslog:

*.info;mail.none;authpriv.none;cron.none @xx.xx.xx.xx:514

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

αν το $fromhost-ip περιέχει "192.168.1.10" τότε /var/log/proxyserver.log

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

συμπεράσματα

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

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

Για να ολοκληρώσετε το βίντεο στα Αγγλικά σχετικά με τη ρύθμιση του Logrotate:

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

Συλλογή αρχείων καταγραφής https χρησιμοποιώντας το FiddlerCap

Εγκατάσταση του FiddlerCap

Πρέπει να κατεβάσετε και να εκτελέσετε την εφαρμογή.

Στο παράθυρο που ανοίγει, κάντε κλικ στο κουμπί "Εγκατάσταση". Η γραμμή φακέλου προορισμού θα υποδεικνύει τη διαδρομή προς το φάκελο όπου θα εγκατασταθεί το FiddlerCap. Από προεπιλογή, η επιφάνεια εργασίας εμφανίζεται εκεί.

Περιμένετε να ολοκληρωθεί η εγκατάσταση και κάντε κλικ στο κουμπί «Κλείσιμο».

Συλλογή αρχείων καταγραφής χρησιμοποιώντας το FiddlerCap

Βρείτε το φάκελο FiddlerCap στον κατάλογο που επιλέχθηκε κατά το στάδιο της εγκατάστασης. Από προεπιλογή, το FiddlerCap είναι εγκατεστημένο στην επιφάνεια εργασίας. Στο φάκελο FiddlerCap, εκτελέστε το αρχείο "FiddlerCap.exe".

Στο στοιχείο "Ρυθμίσεις λήψης", επιλέξτε τρία πλαίσια:

  • αποθήκευση δυαδικών δεδομένων,
  • αποκρυπτογράφηση της κυκλοφορίας HTTPS,
  • αποθήκευση cookies και φόρμες POST.

Εάν εμφανιστεί μια προειδοποίηση σχετικά με την εγκατάσταση ενός πιστοποιητικού, κάντε κλικ στο κουμπί «Ναι». Εάν είναι απαραίτητο, θα σας ζητηθεί να διαγράψετε το πιστοποιητικό κατά την αποθήκευση αρχείων καταγραφής.

Κλείστε όλα τα προγράμματα περιήγησης που είναι ανοιχτά στον υπολογιστή σας. Κάντε κλικ στο κουμπί "Έναρξη λήψης". Ανοίξτε το πρόγραμμα που παράγει σφάλμα κατά την εργασία με αυτό (για παράδειγμα, Contour.Extern),και αναπαράγετε το σφάλμα.

Αφού αναπαραχθεί το σφάλμα, πρέπει να κάνετε κλικ στο κουμπί «Stop Capture» στο παράθυρο του προγράμματος FiddlerCap. Η καταγραφή θα ολοκληρωθεί.

Επιλέξτε έναν φάκελο για αποθήκευση.

Το αρχείο καταγραφής θα αποθηκευτεί στον επιλεγμένο φάκελο.

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

Καταγραφή κίνησης δικτύου στον Internet Explorer

Για να καταγράψετε την κίνηση δικτύου στον Internet Explorer, πρέπει να ανοίξετε την απαιτούμενη σελίδα στον Internet Explorer. Στον Internet Explorer, μεταβείτε στο μενού "Εργαλεία"\u003e "Εργαλεία προγραμματιστή F12" ("Εργαλεία"\u003e "Εργαλεία προγραμματιστή F12") F12.

Εάν δεν εμφανίζεται το μενού "Service", πατήστε το πλήκτρο "Alt" στο πληκτρολόγιο.

Μεταβείτε στην καρτέλα «Δίκτυο» > «Ctrl+4». Ενεργοποίηση συλλογής κίνησης δικτύου: στον Internet Explorer 9, κάντε κλικ στην επιλογή "Έναρξη συλλογής". Στον Internet Explorer 11, κάντε κλικ στο κουμπί με πράσινο τρίγωνο.

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

ΣΕ επιλέξτε ένα φάκελο για αποθήκευση, πληκτρολογήστε ένα όνομα αρχείου, πατήστεεπιλέξτε «Αποθήκευση». Το αρχείο θα δημιουργηθεί σε μορφή xml. Η δημιουργία αρχείου καταγραφής ολοκληρώθηκε.

Καταγραφή κίνησης δικτύου στο Mozilla Firefox

Για να καταγράψετε την κίνηση δικτύου στο Mozilla Firefox, πρέπει να ανοίξετε την απαιτούμενη σελίδα στο Mozilla Firefox. Στο IMozilla Firefox, μεταβείτε στα Εργαλεία > Ανάπτυξη > Εργαλεία προγραμματιστή (Ctrl + Shift + I)ή πατήστε το πλήκτρο στο πληκτρολόγιο F12.

Μεταβείτε στην καρτέλα Δίκτυο και ανανεώστε τη σελίδα κάνοντας κλικ πλήκτρο στο πληκτρολόγιο F5. Αναπαράγετε το σφάλμα.

Επιλέξτε οποιαδήποτε καταχώρηση από το αρχείο καταγραφής - κάντε δεξί κλικ σε αυτήν και κάντε κλικ στο "Αποθήκευση όλων ως HAR".

Καταγραφή κίνησης δικτύου στο Google Chrome

Για να καταγράψετε την κίνηση δικτύου στο Google Chrome, πρέπει να ανοίξετε την απαιτούμενη σελίδα στο Google Chrome. Στο Google Chrome, μεταβείτε στα Εργαλεία > Περισσότερα εργαλεία > Εργαλεία προγραμματιστή (Ctrl + Shift + I)ή πατήστε το πλήκτρο στο πληκτρολόγιο F12.

Μεταβείτε στην ενότητα Δίκτυο και ανανεώστε τη σελίδα πατώντας το F5 στο πληκτρολόγιό σας. Αναπαράγετε το σφάλμα.

Εάν η εγγραφή αρχείων καταγραφής δεν ξεκινήσει αυτόματα, κάντε κλικ στο κουμπί «Εγγραφή αρχείου καταγραφής δικτύου».

Επιλέξτε οποιαδήποτε καταχώρηση από το αρχείο καταγραφής, κάντε δεξί κλικ πάνω της και κάντε κλικ στο «Αποθήκευση ως HAR με περιεχόμενο».

Επιλέξτε ένα φάκελο για αποθήκευση, πληκτρολογήστε ένα όνομα αρχείου, κάντε κλικ στην αποθήκευση. Το αρχείο θα αποθηκευτεί σε μορφή har.

Εγκατάσταση

Απαιτείται λήψη πηγαίνετε και τρέξτε την εφαρμογή . Όταν σας ζητηθεί να ξεκινήσετε την εγκατάσταση, απαντήστε καταφατικά κάνοντας κλικ στο κουμπί «Ναι».


Στο παράθυρο που ανοίγει, κάντε κλικ στο κουμπί "Επόμενο".


Στο επόμενο παράθυρο, πρέπει να επιλέξετε το διακόπτη «Αποδέχομαι τους όρους της Άδειας Χρήσης» και να κάνετε κλικ στο κουμπί «Επόμενο».


Επιλέξτε τον τύπο εγκατάστασης «Τυπικό».


Επιλέξτε την επιλογή «Δημιουργία συντόμευσης για την οθόνη δικτύου Microsoft στην επιφάνεια εργασίας» και κάντε κλικ στο κουμπί «Εγκατάσταση».

Κάντε κλικ στο κουμπί «Τέλος» για να ολοκληρώσετε την εγκατάσταση.


Μετά την ολοκλήρωση της εγκατάστασης, πρέπει να περιμένετε έως ότου ολοκληρωθεί η αυτόματη ρύθμιση παραμέτρων του στοιχείου Microsoft Network Monitor 3.4 Parsers.


Ξεκινήστε την καταγραφή

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

Στο κύριο παράθυρο του προγράμματος, επιλέξτε το μενού «Αρχείο» > «Νέο» > «Λήψη».

Κάντε κλικ στο κουμπί "Έναρξη", στη συνέχεια κλείστε το πρόγραμμα και αναπαραγάγετε το σφάλμα.

Αναπαράγετε το σφάλμα και κάντε κλικ στο κουμπί «Διακοπή».


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

Παρακολούθηση διαδικασίας

Για να ξεκινήσετε την καταγραφή χρησιμοποιώντας το Process Monitor, πρέπει να ολοκληρώσετε τα ακόλουθα βήματα:

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

Μετά την εκκίνηση του προγράμματος, επιλέξτε το μενού «Αρχείο» > «Λήψη συμβάντων». Η καταγραφή θα διακοπεί. Επιλέξτε το μενού «Επεξεργασία» > «Διαγραφή οθόνης». Το αυτόματα καταγεγραμμένο αρχείο καταγραφής θα διαγραφεί. Το πρόγραμμα είναι έτοιμο για χρήση.

Επιλέξτε το μενού «Αρχείο» > «Λήψη συμβάντων». Η καταγραφή θα ξεκινήσει. Ελαχιστοποιήστε την εφαρμογή και αναπαραγάγετε το σφάλμα.

Επαναφέρετε την εφαρμογή και επιλέξτε Αρχείο > Λήψη συμβάντων. Η καταγραφή θα διακοπεί. Επιλέξτε το μενού «Αρχείο» > «Αποθήκευση». Ρυθμίστε το κουμπί επιλογής "Όλα τα συμβάντα".

Κάντε κλικ στο κουμπί με τις τρεις κουκκίδες στα δεξιά του πεδίου "Διαδρομή", καθορίστε τον φάκελο που θέλετε να αποθηκεύσετε και το όνομα του αρχείου (συνιστάται να το αφήσετε ως προεπιλογή) και κάντε κλικ στο κουμπί "Αποθήκευση".

Στο παράθυρο επιλογών αποθήκευσης αρχείων, κάντε κλικ στο κουμπί "Αποθήκευση". Η δημιουργία αρχείου καταγραφής ολοκληρώθηκε.

1. Εγκαταστήστε το rsyslog και ρυθμίστε το ώστε να λαμβάνει αρχεία καταγραφής.

Εγκατάσταση:

# παρέχει λήψη συστήματος αρχείου καταγραφής UDP $ModLoad imudp $UDPServerRun 514 # παρέχει λήψη συστήματος καταγραφής TCP $ModLoad imtcp $InputTCPServerRun 514 #Devices $template RemoteHost,"/var/log/devices/%HOSTNAME%/%HOSTNAME?log" Απομακρυσμένος υπολογιστής

και επανεκκινήστε το rsyslog

apt-get εγκαταστήστε το rsyslog

προσθέστε τις γραμμές στο αρχείο /etc/rsyslog.conf

υλοτομία 10.10.10.10

Η προώθηση αρχείων καταγραφής ξεκίνησε στις 10/10/10/10

3. Διαμόρφωση αρχείων καταγραφής αποστολής από διακομιστές Windows.

Τα αρχεία καταγραφής προωθούνται χρησιμοποιώντας το βοηθητικό πρόγραμμα Evtsys - Eventlog to Syslog Utility.
Ψάχνουν για. Ας κατεβάσουμε. Μετακινήστε τα αρχεία evtsys.dll και evtsys.exe στο %SystemRoot%\System32 (για τα Windows 2008 R2 η διαδρομή θα είναι %WinDir%\sysWOW64). Αφού εκκινήσετε την κονσόλα με δικαιώματα διαχειριστή, μεταβείτε στον κατάλογο %SystemRoot%\System32 (%WinDir%\sysWOW64) και πληκτρολογήστε την εντολή:

καθαρή εκκίνηση evtsys

για Windows Server 2008 R2
Μπαίνουμε στο μητρώο και αλλάζουμε τους καθορισμένους κλάδους για την παράμετρο ImagePath:
Όνομα ενότητας: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\EvtSys;
Όνομα ενότητας: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\services\EvtSys;
Παράμετρος: ImagePath
Τύπος: REG_EXPAND_SZ
Εννοια: %windir%\sysWOW64\evtsys.exe

4. Ρύθμιση logrotatμι
Προσθέστε τις ακόλουθες γραμμές στο αρχείο /etc/logrotate.conf:

00 1 * * * root logrotate /etc/logrotate.conf

Συγχαρητήρια, ο κεντρικός συλλέκτης κορμών έχει διαμορφωθεί!