GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie rsyslog zum Erstellen eines Linux-Protokollaggregationsservers

Als ich vor langer Zeit Systemadministrator für ein anderes Unternehmen auf einer anderen Plattform war, hatten wir keine Möglichkeit, Protokolldateien zu zentralisieren. Wenn ich morgens bei der Arbeit ankam, goss ich mir meistens eine Tasse Kaffee ein und verbrachte 20 bis 30 Minuten damit, zu jedem Server zu wechseln, die Ereignisprotokolle zu überprüfen und dann alle erkannten Probleme zu notieren. Lassen Sie mich Ihnen versichern, dass dies nicht die effizienteste Methode zur Handhabung von Protokollen war. Es war jedoch die einzige Option, die ich hatte.

Linux verwendet jedoch das Unix-basierte Syslog-Tool, um lokale Protokolldateien zu verwalten. Die meisten modernen Linux-Distributionen verwenden tatsächlich einen neuen und verbesserten Daemon namens rsyslog . rsyslog ist in der Lage, Protokolle an entfernte Server weiterzuleiten. Die Konfiguration ist relativ einfach und ermöglicht es Linux-Administratoren, Protokolldateien für die Archivierung und Fehlerbehebung zu zentralisieren. In diesem Artikel zeige ich Ihnen, wie Sie einen Server so konfigurieren, dass er als Protokolldatei-Repository fungiert, und dann, wie Sie Linux-Server so konfigurieren, dass sie ihre Protokolle an ihn weiterleiten.

Protokolldateien sind eine kritische Komponente Ihrer Serverinfrastruktur. Systemadministratoren verwenden Protokolldateien, um viele Aufgaben zu erledigen:

  • Fehlerbehebung
  • Service Level Agreement (SLA)-Audits
  • Baselining
  • Vorbeugende Wartung

Konfigurieren Sie den Protokollhost

Ich bezeichne den Server, der die Protokolldateien hostet, als Protokollhost . Dieser Server benötigt möglicherweise einige einzigartige Konfigurationen im Vergleich zu anderen Linux-Geräten. Berücksichtigen Sie die folgenden Einstellungen für Ihren Log-Host-Server.

Separate Partition für /var/log

Installationsrichtlinien raten Administratoren oft dazu, /var/log einzuhängen auf einer separaten Partition, um zu vermeiden, dass außer Kontrolle geratene Protokolle den Speicher füllen, in dem sich das Stammverzeichnis des Dateisystems befindet. Eine solche Vorgehensweise ist kritisch, wenn der Server Protokolldateien von sehr vielen Remote-Geräten empfängt.

Konfigurationsdatei

Das eigentliche rsyslog Die Konfiguration wird über eine Konfigurationsdatei im Verzeichnis /etc verwaltet Verzeichnis. Sie müssen mehrere Zeilen bearbeiten. Die Einstellungen können je nach Distribution leicht abweichen. Sichern Sie die ursprüngliche Konfigurationsdatei und öffnen Sie dann /etc/rsyslog.conf Datei mit Ihrem bevorzugten Texteditor.

Entkommentieren Sie zunächst die beiden Zeilen für UDP:

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

Sie können auch TCP als Transportprotokoll verwenden.

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

Sie finden diese Zeilen am Anfang der Konfigurationsdatei in den Modulen Abschnitt.

Konfigurieren Sie als Nächstes eine Vorlage für die eingehenden Protokolle. Wenn Sie keine Vorlage konfigurieren, vermischen sich alle Protokolleinträge von den Remote-Servern mit den lokalen Protokollen des Protokoll-Host-Servers.

$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log" 
*.* -?DynamicFile

Diese Vorlage platziert alle Protokolle von einem bestimmten Host in einem Verzeichnis, das nach diesem Host benannt ist. Beispiel:Sie haben einen Server namens WebServer1 , ein Verzeichnis namens WebServer1 erstellt und alle Protokolle dieses Servers werden in diesem Verzeichnis gespeichert. Vorlagen werden in einem Vorlagen festgelegt Abschnitt der Konfigurationsdatei. Wenn kein bestimmter Abschnitt definiert ist, stellen Sie einfach sicher, dass die Vorlagen vor den Regeln definiert werden .

Es sind viele verschiedene Vorlagenoptionen online verfügbar.

Nachdem Sie das Transportschichtprotokoll auskommentiert und eine Vorlage festgelegt haben, speichern Sie Ihre Änderungen an der Datei. Vergessen Sie nicht, rsyslog neu zu starten .

# systemctl restart rsyslog

Firewall

rsyslog verwendet Port 514 für die Netzwerkverbindung, unabhängig davon, ob es TCP oder UDP verwendet. Sie müssen Port 514 in der Firewall auf dem Log-Host-Server öffnen. Angenommen, Sie verwenden UDP, sieht die Firewall-Konfiguration wie folgt aus:

# firewall-cmd --add-port=514/udp --permanent

# firewall-cmd --reload

Verwenden Sie den folgenden Befehl, um Ihre Konfiguration zu bestätigen:

# firewall-cmd --list-all

Logrotieren

Es kann hilfreich sein, logrotate zu konfigurieren , auch. logrotate unterstützt Administratoren bei der Verwaltung einer großen Anzahl von Protokolldateien durch die Implementierung von Archivierungs-, Komprimierungs-, Lösch- und anderen erforderlichen Verwaltungsaufgaben für Protokolldateien. Dieses Tool wurde effektiv von Edem Afenyo im Artikel Enable Sysadmin Setting Up Logrotate in Linux behandelt, daher gibt es für mich keinen Grund, es hier zu behandeln.

Dokumentieren Sie die IP-Adresse des Protokollhostservers

Verwenden Sie ifconfig oder ip addr um die IP-Adresse des Log-Host-Servers zu dokumentieren. Sie werden diese Adresse in den Client-Konfigurationsdateien verwenden.

Bonusnote :Ich empfehle die Verwendung von IP-Adressen in Konfigurationsdateien wie /etc/rsyslog.conf statt Hostnamen. Dadurch wird die Konfiguration vereinfacht und die Namensauflösung aus dem Verbindungsprozess des Computers und dem Fehlerbehebungsprozess des Systemadministrators entfernt. Es eliminiert eine ganze spätere Komplexität.

[Das könnte Ihnen auch gefallen: Logrotate unter Linux einrichten]

Konfigurieren Sie einen Log-Client

Ich beginne diesen Abschnitt mit der Konfiguration eines einfachen Linux-Servers, um seine Protokolldateien an den zuvor konfigurierten Protokoll-Host-Server weiterzuleiten. Diese Konfiguration ist um einiges kürzer. Vergessen Sie nicht, die ursprüngliche /etc/rsyslog.conf zu sichern Datei.

Öffnen Sie die /etc/rsyslog.conf Konfigurationsdatei mit Ihrem bevorzugten Editor (ich bevorzuge Vim, aber was auch immer für Sie funktioniert, ist in Ordnung). Wechseln Sie zu den Regeln Abschnitt und erstellen Sie vor allen anderen Einträgen eine neue Zeile. Zur Verdeutlichung fügen Sie diese Zeile vor der Einrichtung hinzu .Schweregrad Einträge. Dadurch können alle Übereinstimmungen an den Zielserver weitergeleitet werden.

Fügen Sie die folgenden Informationen hinzu, wobei IP die IP-Adresse des Protokollhostservers ist:

*.* @IP

Hinweis :Wenn Sie TCP verwenden, lautet die Syntax *.* @@IP

Speichern Sie Ihre Änderungen in der Konfigurationsdatei und starten Sie dann rsyslog neu Dienst:

# systemctl restart rsyslog

Testen Sie die Konfiguration

Der logger Der Befehl wird verwendet, um manuell einen Protokolldateieintrag zu erstellen. Führen Sie den folgenden Befehl aus, um einen Eintrag zu generieren:

# logger Test

Überprüfen Sie den Protokolldateieintrag mit dem tail Befehl, um die neuesten Einträge in /var/log/messages anzuzeigen Melden Sie sich auf dem lokalen Server an:

# tail /var/log/messages

Sie sollten die Testnachricht sehen.

Wechseln Sie als Nächstes zum Protokollhostserver und zeigen Sie dann den Inhalt von /var/log an :

# ls /var/log

Sie sollten ein Verzeichnis sehen, das nach dem von Ihnen konfigurierten Remote-Server benannt ist. Wenn Sie ls den Inhalt dieses Verzeichnisses, sollten Sie Protokolle sehen, die vom Server weitergeleitet werden. Sie können den tail verwenden Befehl, um den Inhalt der Protokolle im Unterverzeichnis dieses Servers anzuzeigen. Sie sollten die Testnachricht auch hier wiederholt sehen.

Konfigurieren Sie Ihre verbleibenden Server

An dieser Stelle können Sie Ihre verbleibenden Linux-Server so konfigurieren, dass sie ihre Protokolle an den Protokollhost weiterleiten. Sie könnten eine neue Version von /etc/rsyslog.conf verteilen Datei, indem Sie rsync, SSH verwenden oder sogar die Konfiguration mit Ansible festlegen.

Spezielle Protokolle weiterleiten

Die obigen Beispieleinstellungen leiten alle Protokolle an das Protokollhostsystem weiter (daher die *.* Syntax). Sie können wählen, ob Sie nur Einträge für einzelne Einrichtungen oder Einträge für verschiedene Einrichtungen an verschiedene Protokollhostserver weiterleiten möchten.

Angenommen, Sie wollten cron senden loggt sich auf hostlogserver1 ein (wo die Systemadministratoren die Einträge überprüfen können) und FTP loggt sich auf hostlogserver2 ein (wo die Netadmins die Einträge überprüfen können). Die Konfiguration sieht in etwa so aus:

cron.* @10.1.1.15

ftp.* @10.1.1.20

Wo hostlogserver1 hat die IP-Adresse 10.1.1.15 und hostlogserver2 hat die IP-Adresse 10.1.1.20 .

Sie können dieselben Einträge auch an zwei verschiedene Server weiterleiten:

*.* @10.1.1.15

*.* @10.1.1.20

Andere Plattformen

Erinnern Sie sich daran, dass ich in der Einleitung darauf hingewiesen habe, dass dieser Protokolldateimechanismus wirklich ein Unix-System ist, keine Linux-spezifische Funktion. Das bedeutet, dass praktisch jedes Unix-basierte Gerät, das Protokolle verwaltet, teilnehmen kann.

Router zum Weiterleiten von Protokollen konfigurieren

Ich habe kürzlich in einer Laborumgebung eines Kunden gearbeitet, die einen mit VyOS konfigurierten Router verwendete. VyOS ist eine Linux-basierte Router-, VPN-, Firewall- und NAT-Distribution. Wir haben den obigen Prozess verwendet (Bearbeiten der /etc/rsyslog.conf Konfigurationsdatei), um den Router so einzustellen, dass er seine Protokolle an einen zentralen Server weiterleitet. Netzwerkadministratoren können mit rsyslog problemlos Router-, VPN- und andere Protokolle archivieren .

Ein weiteres Betriebssystem, das in der Laborumgebung verwendet wurde, war pfSense. pfSense ist ein von FreeBSD abgeleitetes Betriebssystem, das Protokolle auch an einen zentralen Ort weiterleiten kann, indem es rsyslog verwendet . Auch hier war es eine unkomplizierte Konfiguration, diesmal jedoch über eine webbasierte GUI.

[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ] 

Abschluss

Betrachten Sie die Optionen, die Systemadministratoren mit rsyslog zur Verfügung stehen Protokollweiterleitung. Ihr Netzwerkteam könnte Protokolle für alle internen und Perimeter-Router, VPN-Appliances und Firewalls zentralisieren. Systemadministratoren könnten Protokolle basierend auf Verantwortungsbereichen oder Geographie organisieren. Die Zentralisierung kann sich auf Ihre Sicherheits-, Servicedesk- und Serververwaltungsteams auswirken. rsyslog ist ein grundlegender, aber wesentlicher Linux-Dienst, und wenn Sie die Vorteile seiner Fähigkeit nutzen, Protokolle zu zentralisieren, können Sie ihn optimal nutzen.


Linux
  1. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  2. So erstellen Sie Dateien einer bestimmten Größe unter Linux

  3. So verwenden Sie Logrotate zum Verwalten von Protokolldateien

  4. So richten Sie Rsyslog Remote Logging unter Linux ein (zentraler Protokollserver)

  5. Wie verwende ich rsync vom Windows-PC zum Remote-Linux-Server?

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

So zeigen Sie Nginx-Protokolldateien unter Linux an

So zeigen Sie Apache-Protokolldateien unter Linux an

So verwenden Sie Linux-FTP-Befehle

So erstellen Sie einen Domänencontroller unter Linux für AD

So erstellen Sie eine Rsyslog-Konfiguration für die zentrale Protokollierung