Ρυθμίστε έναν κεντρικό διακομιστή καταγραφής με το Rsyslog στο CentOS/RHEL 8


Προκειμένου οι διαχειριστές συστήματος να αναγνωρίζουν ή να αναλύουν προβλήματα σε έναν διακομιστή CentOS 8 ή RHEL 8, είναι σημαντικό να γνωρίζουν και να προβάλλουν τα συμβάντα που συνέβησαν στον διακομιστή σε ένα συγκεκριμένη χρονική περίοδο από αρχεία καταγραφής που βρίσκονται στον κατάλογο /var/log του συστήματος.

Το σύστημα Syslog (System Logging Protocol) στον διακομιστή μπορεί να λειτουργήσει ως κεντρικό σημείο παρακολούθησης καταγραφής σε ένα δίκτυο όπου όλοι οι διακομιστές, οι συσκευές δικτύου, οι μεταγωγείς, οι δρομολογητές και οι εσωτερικές υπηρεσίες που δημιουργούν αρχεία καταγραφής, είτε συνδέονται με το συγκεκριμένο εσωτερικό ζήτημα είτε απλώς ενημερωτικά μηνύματα μπορούν να στείλουν τα αρχεία καταγραφής τους.

Σε έναν διακομιστή CentOS/RHEL 8, ο δαίμονας Rsyslog είναι ο πιο σημαντικός διακομιστής καταγραφής που είναι προεγκατεστημένος από προεπιλογή, ακολουθούμενος από τον Systemd Journal Daemon (journald).

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

Απαιτήσεις

  1. Εγκατάσταση του "CentOS 8.0" με Στιγμιότυπα οθόνης
  2. Εγκατάσταση RHEL 8 με Στιγμιότυπα οθόνης

Για να ρυθμίσετε έναν κεντρικό διακομιστή καταγραφής σε έναν διακομιστή CentOS/RHEL 8, πρέπει να ελέγξετε ότι το διαμέρισμα /var έχει αρκετό χώρο (ελάχιστο λίγα GB ) για αποθήκευση όλων των εγγεγραμμένων αρχείων καταγραφής στο σύστημα που αποστέλλονται από άλλες συσκευές στο δίκτυο. Σας συνιστούμε να έχετε μια ξεχωριστή μονάδα δίσκου (LVM ή RAID) για να προσαρτήσετε τον κατάλογο /var/log/.

Πώς να ρυθμίσετε τις παραμέτρους του διακομιστή Rsyslog στο CentOS/RHEL 8

1. Όπως είπα, η υπηρεσία Rsyslog εγκαθίσταται και εκτελείται αυτόματα στον διακομιστή CentOS/RHEL 8. Για να επαληθεύσετε ότι ο δαίμονας εκτελείται στο σύστημα, εκτελέστε την ακόλουθη εντολή.

systemctl status rsyslog.service

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

systemctl start rsyslog.service

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


dnf install rsyslog
systemctl start rsyslog.service

3. Μόλις εγκατασταθεί το βοηθητικό πρόγραμμα Rsyslog, μπορείτε τώρα να διαμορφώσετε το rsyslog ως κεντρικό διακομιστή καταγραφής ανοίγοντας το κύριο αρχείο διαμόρφωσης /etc/rsyslog.conf , προκειμένου να λαμβάνετε μηνύματα καταγραφής για εξωτερικούς πελάτες.

vi /etc/rsyslog.conf

Στο αρχείο διαμόρφωσης /etc/rsyslog.conf, βρείτε και αφαιρέστε το σχόλιο των παρακάτω γραμμών για να παραχωρήσετε λήψη μεταφοράς UDP στον διακομιστή Rsyslog μέσω της θύρας 514 . Το Rsyslog χρησιμοποιεί το τυπικό πρωτόκολλο UDP για μετάδοση αρχείων καταγραφής.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Το πρωτόκολλο UDP δεν έχει την επιβάρυνση TCP και κάνει τη μετάδοση δεδομένων ταχύτερη από το πρωτόκολλο TCP. Από την άλλη πλευρά, το πρωτόκολλο UDP δεν εγγυάται την αξιοπιστία των μεταδιδόμενων δεδομένων.

Ωστόσο, εάν θέλετε να χρησιμοποιήσετε το πρωτόκολλο TCP για τη λήψη αρχείων καταγραφής, πρέπει να βρείτε και να αφαιρέσετε το σχολιασμό των ακόλουθων γραμμών στο /etc/rsyslog.conf του αρχείου διαμόρφωσης για να διαμορφώσετε το Rsyslog δαίμονας για σύνδεση και ακρόαση μιας υποδοχής TCP στη θύρα 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

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


$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

Η οδηγία $template RemoteLogs καθοδηγεί τον δαίμονα Rsyslog να συγκεντρώσει και να γράψει όλα τα μεταδιδόμενα μηνύματα καταγραφής σε διαφορετικά αρχεία, με βάση το όνομα πελάτη και την εφαρμογή απομακρυσμένου πελάτη που δημιούργησε τα μηνύματα με βάση τις περιγραφόμενες ιδιότητες που προστέθηκαν στο διαμόρφωση προτύπου: %HOSTNAME% και %PROGRAMNAME%.

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

Ο κανόνας ανακατεύθυνσης & ~ καθοδηγεί τον τοπικό διακομιστή Rsyslog να σταματήσει την περαιτέρω επεξεργασία του ληφθέντος μηνύματος καταγραφής και να αφαιρέσει τα μηνύματα (όχι να τα γράψει σε εσωτερικά αρχεία καταγραφής).

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

Για να διαμορφώσετε πιο περίπλοκα πρότυπα Rsyslog, διαβάστε το εγχειρίδιο αρχείου διαμόρφωσης Rsyslog εκτελώντας την εντολή man rsyslog.conf ή συμβουλευτείτε την ηλεκτρονική τεκμηρίωση του Rsyslog.

man rsyslog.conf

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

service rsyslog restart

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

netstat -tulpn | grep rsyslog 

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


dnf whatprovides netstat
dnf install net-tools

8. Εάν έχετε ενεργό SELinux στο CentOS/RHEL 8, εκτελέστε την ακόλουθη εντολή για να επιτρέψετε την κυκλοφορία rsyslog ανάλογα με τον τύπο υποδοχής δικτύου.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

Εάν η εντολή semanage δεν εγκατασταθεί στο CentOS 8, μπορείτε να την εγκαταστήσετε χρησιμοποιώντας την ακόλουθη εντολή.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

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


firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

Μπορείτε επίσης να περιορίσετε τις εισερχόμενες συνδέσεις στη θύρα 514 από τις επιτρεπόμενες περιοχές IP, όπως φαίνεται.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

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