Zoeken op website

Hoe Rsyslog Client in te stellen om logboeken naar Rsyslog Server te verzenden in CentOS 7


Logboekbeheer is een van de meest kritische componenten in een netwerkinfrastructuur. Logboekberichten worden voortdurend gegenereerd door talloze systeemsoftware, zoals hulpprogramma's, applicaties, daemons, services gerelateerd aan het netwerk, de kernel, fysieke apparaten enzovoort.

Logbestanden blijken nuttig te zijn bij het oplossen van Linux-systeemproblemen, het monitoren van het systeem en het beoordelen van de sterkte en problemen van de systeembeveiliging.

Rsyslog is een Open Source logprogramma, het meest populaire logmechanisme in een groot aantal Linux-distributies. Het is ook de standaardregistratieservice in CentOS 7 of RHEL 7.

De Rsyslog-daemon in CentOS kan worden geconfigureerd om als server te worden uitgevoerd om logberichten van meerdere netwerkapparaten te verzamelen. Deze apparaten fungeren als clients en zijn geconfigureerd om hun logs naar een rsyslog-server te verzenden.

De Rsyslog-service kan echter ook worden geconfigureerd en gestart in clientmodus. Deze opstelling instrueert de rsyslog-daemon om logberichten door te sturen naar een externe Rsyslog-server met behulp van de TCP- of UDP-transportprotocollen. De Rsyslog-service kan ook worden geconfigureerd om tegelijkertijd als client en als server te worden uitgevoerd.

In deze zelfstudie beschrijven we hoe u een CentOS/RHEL 7 Rsyslog-daemon instelt om logberichten naar een externe Rsyslog-server te verzenden. Deze opstelling zorgt ervoor dat de schijfruimte op uw machine kan worden behouden voor het opslaan van andere gegevens.

De plaats waar bijna alle logbestanden standaard in CentOS worden geschreven, is het /var systeempad. Het is ook raadzaam om altijd een aparte partitie te maken voor de map /var, die dynamisch kan worden uitgebreid, om de partitie /(root) niet uit te putten.

Een Rsyslog-client verzendt de logberichten altijd in platte tekst, tenzij anders aangegeven. U mag geen Rsyslog-client instellen om logberichten te verzenden via internet of netwerken die niet onder uw volledige controle staan.

Vereisten

  1. CentOS 7.3 Installatieprocedure
  2. RHEL 7.3 Installatieprocedure
  3. Configureer een Rsyslog-server in CentOS/RHEL 7

Stap 1: Controleer de Rsyslog-installatie

1. Standaard is de Rsyslog-daemon al geïnstalleerd en actief in een CentOS 7-systeem. Om te verifiëren of de rsyslog-service aanwezig is in het systeem, voert u de volgende opdrachten uit.

rpm -q | grep rsyslog
rsyslogd -v

2. Als het Rsyslog-pakket niet in CentOS is geïnstalleerd, voer dan de onderstaande opdracht uit om de service te installeren.

yum install rsyslog

Stap 2: Configureer de Rsyslog-service als client

3. Om de Rsyslog-daemon die op een CentOS 7-systeem is geïnstalleerd af te dwingen om als logclient te fungeren en alle lokaal gegenereerde logberichten naar een externe Rsyslog-server te routeren, wijzigt u het rsyslog-configuratiebestand als volgt:

Open eerst het hoofdconfiguratiebestand om het te bewerken.

vi /etc/rsyslog.conf

Voeg vervolgens de onderstaande regel toe aan het einde van het bestand, zoals geïllustreerd in het onderstaande fragment.

*. *  @192.168.10.254:514

Zorg ervoor dat u op de bovenstaande regel het IP-adres van de FQDN van de externe rsyslog-server dienovereenkomstig vervangt. De bovenstaande regel instrueert de Rsyslog-daemon om alle logberichten, ongeacht de faciliteit of ernst, naar de host met het IP 192.168.10.254 te sturen via de 514/UDP-poort.

4. Als de externe logserver is geconfigureerd om alleen naar TCP-verbindingen te luisteren of als u een betrouwbaar transportnetwerkprotocol wilt gebruiken, zoals TCP, voegt u nog een @-teken vooraan toe van de externe host, zoals weergegeven in het onderstaande voorbeeld:

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

De Linux rsyslog staat ook enkele speciale tekens toe, zoals = of !, die kunnen worden voorafgegaan door prioriteitsniveaus om aan te geven “alleen deze prioriteit ' voor een gelijkteken en 'niet deze prioriteit of hoger dan dit'.

Enkele voorbeelden van Rsyslog-kwalificaties op prioriteitsniveau in CentOS 7:

  • kern.info=kernellogboeken met infoprioriteit en hoger.
  • kern.=info=alleen kernelberichten met infoprioriteit.
  • kern.info;kern.!err=alleen kernelberichten met info-, kennisgeving- en waarschuwingsprioriteiten.
  • kern.debug;kern.!=warning=alle kernelprioriteiten behalve waarschuwing.
  • kern.*=alle kernelprioriteitenberichten.
  • kern.none=log geen gerelateerde kernelfaciliteitsberichten, ongeacht de prioriteit.

Als u er bijvoorbeeld van uitgaat dat u alleen specifieke faciliteitsberichten naar een externe logserver wilt sturen, zoals alle gerelateerde e-mailberichten, ongeacht het prioriteitsniveau, voegt u de onderstaande regel toe aan het rsyslog-configuratiebestand:

mail.* @192.168.10.254:514 

5. Ten slotte moet de Rsyslog-service, om de nieuwe configuratie toe te passen, opnieuw worden opgestart zodat de daemon de wijzigingen kan oppikken, door de onderstaande opdracht uit te voeren:

systemctl restart rsyslog.service

6. Als de Rsyslog-daemon om bepaalde redenen niet is ingeschakeld tijdens het opstarten, voer dan het onderstaande commando uit om de service voor het hele systeem in te schakelen:

systemctl enable rsyslog.service

Stap 3: Stuur Apache- en Nginx-logboeken naar een externe logserver

7. De Apache HTTP-server kan worden geconfigureerd om logberichten naar een externe syslog-server te verzenden door de volgende regel toe te voegen aan het hoofdconfiguratiebestand, zoals geïllustreerd in het onderstaande voorbeeld.

vi /etc/httpd/conf/httpd.conf

Voeg in het hoofdconfiguratiebestand van Apache de onderstaande regel toe.

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

De regel dwingt de HTTP-daemon af om de logberichten intern naar het logbestand van het bestandssysteem te schrijven, maar verwerkt de berichten ook verder via een pipe-to-logger-hulpprogramma, dat ze naar een externe syslog-server stuurt, door ze te markeren als afkomstig van de local1 faciliteit.

8. Als je ook Apache foutlogboekberichten naar een externe syslog-server wilt sturen, voeg dan een nieuwe regel toe zoals die in het bovenstaande voorbeeld, maar zorg ervoor dat je deze vervangt de naam van het httpd-logbestand en het ernstniveau van het logbestand, zodat deze overeenkomen met de foutprioriteit, zoals weergegeven in het volgende voorbeeld:

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

9. Zodra u de bovenstaande regels heeft toegevoegd, moet u de Apache-daemon opnieuw opstarten om de wijzigingen toe te passen, door de volgende opdracht uit te voeren:

systemctl restart httpd.service                 

10. Vanaf versie 1.7.1 heeft de Nginx-webserver ingebouwde mogelijkheden om zijn berichten direct naar een externe syslog-server te loggen, door de volgende regels toe te voegen code naar een nginx-configuratiebestand.

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;

Voor een IPv6-server gebruikt u de volgende syntaxisindeling om het IPv6-adres in te sluiten.

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

11. Op de externe Rsyslog-server moet u de volgende wijziging aanbrengen in het rsyslog-configuratiebestand, om de logs te ontvangen die door de Apache-webserver zijn verzonden.

local1.* @Apache_IP_address:514

Dat is alles! Je hebt met succes de Rsyslog daemon geconfigureerd om in clientmodus te draaien en je hebt ook de Apache HTTP-server of Nginx geïnstrueerd om de logberichten door te sturen naar een externe syslog-server.

In het geval dat uw systeem crasht, zou u het probleem moeten kunnen onderzoeken door de inhoud van de logbestanden te inspecteren die zijn opgeslagen op de externe syslog-server.