Website-Suche

So richten Sie den Rsyslog-Client zum Senden von Protokollen an den Rsyslog-Server in CentOS 7 ein


Die Protokollverwaltung ist eine der kritischsten Komponenten einer Netzwerkinfrastruktur. Protokollmeldungen werden ständig von zahlreicher Systemsoftware generiert, z. B. von Dienstprogrammen, Anwendungen, Daemons, Diensten im Zusammenhang mit Netzwerk, Kernel, physischen Geräten usw.

Protokolldateien erweisen sich als nützlich bei der Behebung von Linux-Systemproblemen, der Überwachung des Systems und der Überprüfung der Systemsicherheitsstärke und -probleme.

Rsyslog ist ein Open-Source-Protokollierungsprogramm, das in einer Vielzahl von Linux-Distributionen der beliebteste Protokollierungsmechanismus ist. Es ist auch der Standardprotokollierungsdienst in CentOS 7 oder RHEL 7.

Der Rsyslog-Daemon in CentOS kann so konfiguriert werden, dass er als Server ausgeführt wird, um Protokollnachrichten von mehreren Netzwerkgeräten zu sammeln. Diese Geräte fungieren als Clients und sind so konfiguriert, dass sie ihre Protokolle an einen Rsyslog-Server übertragen.

Der Rsyslog-Dienst kann jedoch auch im Client-Modus konfiguriert und gestartet werden. Dieses Setup weist den Rsyslog-Daemon an, Protokollnachrichten mithilfe der TCP- oder UDP-Transportprotokolle an einen Remote-Rsyslog-Server weiterzuleiten. Der Rsyslog-Dienst kann auch so konfiguriert werden, dass er gleichzeitig als Client und als Server ausgeführt wird.

In diesem Tutorial beschreiben wir, wie Sie einen CentOS/RHEL 7 Rsyslog-Daemon einrichten, um Protokollnachrichten an einen Remote-Rsyslog-Server zu senden. Durch diese Einrichtung wird sichergestellt, dass der Speicherplatz Ihres Computers zum Speichern anderer Daten erhalten bleibt.

Der Ort, an dem fast alle Protokolldateien in CentOS standardmäßig geschrieben werden, ist der Systempfad /var. Es ist außerdem ratsam, immer eine separate Partition für das Verzeichnis /var zu erstellen, die dynamisch erweitert werden kann, um die Partition /(root) nicht zu erschöpfen.

Ein Rsyslog-Client sendet die Protokollnachrichten immer im Klartext, sofern nicht anders angegeben. Sie sollten keinen Rsyslog-Client einrichten, um Protokollnachrichten über das Internet oder Netzwerke zu übertragen, die nicht unter Ihrer vollständigen Kontrolle stehen.

Anforderungen

  1. CentOS 7.3-Installationsverfahren
  2. RHEL 7.3 Installationsverfahren
  3. Konfigurieren Sie einen Rsyslog-Server in CentOS/RHEL 7

Schritt 1: Überprüfen Sie die Rsyslog-Installation

1. Standardmäßig ist der Rsyslog-Daemon bereits installiert und wird in einem CentOS 7-System ausgeführt. Um zu überprüfen, ob der rsyslog-Dienst im System vorhanden ist, geben Sie die folgenden Befehle ein.

rpm -q | grep rsyslog
rsyslogd -v

2. Wenn das Rsyslog-Paket nicht in CentOS installiert ist, führen Sie den folgenden Befehl aus, um den Dienst zu installieren.

yum install rsyslog

Schritt 2: Konfigurieren Sie den Rsyslog-Dienst als Client

3. Um zu erzwingen, dass der auf einem CentOS 7-System installierte Rsyslog-Daemon als Protokoll-Client fungiert und alle lokal generierten Protokollnachrichten an einen Remote-Rsyslog-Server weiterleitet, ändern Sie ihn die rsyslog-Konfigurationsdatei wie folgt:

Öffnen Sie zunächst die Hauptkonfigurationsdatei zur Bearbeitung.

vi /etc/rsyslog.conf

Hängen Sie dann die folgende Zeile am Ende der Datei an, wie im folgenden Auszug dargestellt.

*. *  @192.168.10.254:514

Stellen Sie in der obigen Zeile sicher, dass Sie die IP-Adresse des FQDN des Remote-Rsyslog-Servers entsprechend ersetzen. Die obige Zeile weist den Rsyslog-Daemon an, alle Protokollnachrichten, unabhängig von der Funktion oder dem Schweregrad, über den Port 514/UDP an den Host mit der IP 192.168.10.254 zu senden.

4. Wenn der Remote-Protokollserver so konfiguriert ist, dass er nur TCP-Verbindungen überwacht, oder Sie ein zuverlässiges Transportnetzwerkprotokoll wie TCP verwenden möchten, fügen Sie voran ein weiteres @-Zeichen hinzu des Remote-Hosts, wie im folgenden Beispiel gezeigt:

*. *  @@logs.domain.lan:514

Das Linux-Rsyslog erlaubt auch einige Sonderzeichen, wie z. B. = oder !, die den Prioritätsstufen vorangestellt werden können, um „nur diese Priorität“ anzuzeigen ” für Gleichheitszeichen und „nicht diese Priorität oder höher als diese“.

Einige Beispiele für Qualifikationsmerkmale der Rsyslog-Prioritätsstufe in CentOS 7:

  • kern.info=Kernel-Protokolle mit Informationspriorität und höher.
  • kern.=info=nur Kernel-Nachrichten mit Info-Priorität.
  • kern.info;kern.!err=nur Kernel-Meldungen mit Info-, Hinweis- und Warnprioritäten.
  • kern.debug;kern.!=warning=alle Kernel-Prioritäten außer Warnung.
  • kern.*=alle Kernel-Prioritätsmeldungen.
  • kern.none=keine zugehörigen Kernel-Funktionsmeldungen protokollieren, unabhängig von der Priorität.

Angenommen, Sie möchten beispielsweise nur Nachrichten einer bestimmten Einrichtung an einen Remote-Protokollserver senden, z. B. alle zugehörigen E-Mail-Nachrichten unabhängig von der Prioritätsstufe, fügen Sie der rsyslog-Konfigurationsdatei die folgende Zeile hinzu:

mail.* @192.168.10.254:514 

5. Um schließlich die neue Konfiguration anzuwenden, muss der Rsyslog-Dienst neu gestartet werden, damit der Daemon die Änderungen übernehmen kann, indem Sie den folgenden Befehl ausführen:

systemctl restart rsyslog.service

6. Wenn der Rsyslog-Daemon aus irgendeinem Grund während der Startzeit nicht aktiviert ist, geben Sie den folgenden Befehl ein, um den Dienst systemweit zu aktivieren:

systemctl enable rsyslog.service

Schritt 3: Senden Sie Apache- und Nginx-Protokolle an einen Remote-Protokollserver

7. Der Apache HTTP-Server kann so konfiguriert werden, dass er Protokollnachrichten an einen Remote-Syslog-Server sendet, indem er die folgende Zeile zu seiner Hauptkonfigurationsdatei hinzufügt, wie im folgenden Beispiel dargestellt.

vi /etc/httpd/conf/httpd.conf

Fügen Sie in der Apache-Hauptkonfigurationsdatei die folgende Zeile hinzu.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

Die Zeile zwingt den HTTP-Daemon dazu, die Protokollnachrichten intern in die Protokolldatei des Dateisystems zu schreiben, verarbeitet die Nachrichten aber auch weiter über ein Pipe-to-Logger-Dienstprogramm, das sie an einen entfernten Syslog-Server sendet, indem es sie als von local1 kommend markiert Einrichtung.

8. Wenn Sie Apache-Fehlerprotokollmeldungen auch an einen Remote-Syslog-Server weiterleiten möchten, fügen Sie eine neue Regel wie im obigen Beispiel hinzu, ersetzen Sie diese jedoch unbedingt den Namen der httpd-Protokolldatei und den Schweregrad der Protokolldatei entsprechend der Fehlerpriorität, wie im folgenden Beispiel gezeigt:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Sobald Sie die obigen Zeilen hinzugefügt haben, müssen Sie den Apache-Daemon neu starten, um die Änderungen zu übernehmen, indem Sie den folgenden Befehl ausgeben:

systemctl restart httpd.service                 

10. Ab Version 1.7.1 verfügt der Nginx-Webserver über integrierte Funktionen, um seine Nachrichten direkt auf einem Remote-Syslog-Server zu protokollieren, indem die folgenden Zeilen hinzugefügt werden Code in eine Nginx-Konfigurationsdatei.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Verwenden Sie für einen IPv6-Server das folgende Syntaxformat, um die IPv6-Adresse einzuschließen.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Auf dem Remote-Rsyslog-Server müssen Sie die folgende Änderung an der Rsyslog-Konfigurationsdatei vornehmen, um die vom Apache-Webserver gesendeten Protokolle zu empfangen.

local1.* @Apache_IP_address:514

Das ist alles! Sie haben den Rsyslog-Daemon erfolgreich für die Ausführung im Client-Modus konfiguriert und außerdem den Apache HTTP-Server oder Nginx angewiesen, seine Protokollnachrichten weiterzuleiten an einen Remote-Syslog-Server.

Falls Ihr System abstürzt, sollten Sie in der Lage sein, das Problem zu untersuchen, indem Sie den Inhalt der Protokolldateien überprüfen, die auf dem Remote-Syslog-Server gespeichert sind.