Slik konfigurerer du Rsyslog-klienten for å sende logger til Rsyslog-serveren i CentOS 7


Loggadministrasjon er en av de mest kritiske komponentene i en nettverksinfrastruktur. Loggmeldinger genereres konstant av en rekke systemprogramvare, for eksempel verktøy, applikasjoner, demoner, tjenester relatert til nettverk, kjerne, fysiske enheter og så videre.

Loggfiler viser seg å være nyttige i tilfelle feilsøking av Linux-systemproblemer, overvåk systemet og gjennomgå en systemsikkerhetsstyrke og -problemer.

Rsyslog er et åpen kildekode-loggingsprogram, som er den mest populære loggingsmekanismen i et stort antall Linux-distribusjoner. Det er også standard loggingstjeneste i CentOS 7 eller RHEL 7.

Rsyslog daemon i CentOS kan konfigureres til å kjøre som en server for å samle loggmeldinger fra flere nettverksenheter. Disse enhetene fungerer som klienter og er konfigurert til å overføre loggene til en rsyslog-server.

Imidlertid kan Rsyslog-tjenesten også konfigureres og startes i klientmodus. Dette oppsettet instruerer rsyslog-daemonen til å videresende loggmeldinger til en ekstern Rsyslog-server ved å bruke TCP- eller UDP-transportprotokollene. Rsyslog-tjenesten kan også konfigureres til å kjøre som en klient og som en server på samme tid.

I denne opplæringen vil vi beskrive hvordan du setter opp en CentOS/RHEL 7 Rsyslog-demon for å sende loggmeldinger til en ekstern Rsyslog-server. Dette oppsettet sikrer at maskinens diskplass kan bevares for lagring av andre data.

Stedet der nesten alle loggfiler er skrevet som standard i CentOS er /var systembanen. Det er også tilrådelig å alltid opprette en separat partisjon for /var-katalogen, som kan dyrkes dynamisk, for ikke å tømme /(root)-partisjonen.

En Rsyslog-klient sender alltid loggmeldingene i ren tekst, hvis ikke annet er spesifisert. Du bør ikke sette opp en Rsyslog-klient til å overføre loggmeldinger over Internett eller nettverk som ikke er under din fulle kontroll.

  1. Installasjonsprosedyre for CentOS 7.3
  2. RHEL 7.3 Installasjonsprosedyre
  3. Konfigurer en Rsyslog-server i CentOS/RHEL 7

Trinn 1: Bekreft Rsyslog-installasjonen

1. Som standard er Rsyslog-demonen allerede installert og kjører i et CentOS 7-system. For å verifisere om rsyslog-tjenesten er til stede i systemet, utfør følgende kommandoer.

# rpm -q | grep rsyslog
# rsyslogd -v

2. Hvis Rsyslog-pakken ikke er installert i CentOS, kjør kommandoen nedenfor for å installere tjenesten.

# yum install rsyslog

Trinn 2: Konfigurer Rsyslog Service som klient

3. For å tvinge Rsyslog-demonen installert på et CentOS 7-system til å fungere som en loggklient og rute alle lokalt genererte loggmeldinger til en ekstern Rsyslog-server, endre rsyslog-konfigurasjonsfilen som følger:

Åpne først hovedkonfigurasjonsfilen for redigering.

# vi /etc/rsyslog.conf

Legg deretter til linjen under på slutten av filen som illustrert i utdraget nedenfor.

*. *  @192.168.10.254:514

Pass på at du erstatter IP-adressen til FQDN til den eksterne rsyslog-serveren på linjen ovenfor. Linjen ovenfor instruerer Rsyslog-daemonen til å sende alle loggmeldinger, uavhengig av funksjon eller alvorlighetsgrad, til verten med IP 192.168.10.254 via 514/UDP-porten.

4. Hvis den eksterne loggserveren er konfigurert til å lytte kun på TCP-tilkoblinger eller du ønsker å bruke en pålitelig transportnettverksprotokoll, for eksempel TCP, legg til et annet @-tegn foran den eksterne verten som vist i eksemplet nedenfor:

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

Linux rsyslog tillater også har noen spesialtegn, for eksempel = eller !, som kan settes som prefiks til prioritetsnivåer for å indikere \bare denne prioriteten for likhetstegn og\ikke denne prioriteringen eller høyere enn dette.

Noen eksempler på Rsyslog-prioritetsnivåkvalifiseringer i CentOS 7:

  • kern.info = kjernelogger med infoprioritet og høyere.
  • kern.=info = bare kjernemeldinger med infoprioritet.
  • kern.info;kern.!err = bare kjernemeldinger med info-, varsel- og advarselsprioriteter.
  • kern.debug;kern.!=warning = alle kjerneprioriteter unntatt advarsel.
  • kern.* = alle meldinger om kjerneprioriteter.
  • kern.none = ikke logg noen relaterte kjernefunksjonsmeldinger uavhengig av prioritet.

Hvis du for eksempel antar at du bare vil sende meldinger til en spesifikk funksjon til en ekstern loggserver, for eksempel alle relaterte e-postmeldinger uavhengig av prioritetsnivå, legger du til linjen nedenfor i rsyslog-konfigurasjonsfilen:

mail.* @192.168.10.254:514 

5. Til slutt, for å ta i bruk den nye konfigurasjonen, må Rsyslog-tjenesten startes på nytt for at daemonen skal fange opp endringene, ved å kjøre kommandoen nedenfor:

# systemctl restart rsyslog.service

6. Hvis Rsyslog-demonen av en eller annen grunn ikke er aktivert under oppstartstiden, utfør kommandoen nedenfor for å aktivere tjenesten for hele systemet:

# systemctl enable rsyslog.service

Trinn 3: Send Apache- og Nginx-logger til en ekstern loggserver

7. Apache HTTP-server kan konfigureres til å sende loggmeldinger til en ekstern syslog-server ved å legge til følgende linje i hovedkonfigurasjonsfilen som illustrert i eksemplet nedenfor.

# vi /etc/httpd/conf/httpd.conf

På Apache main conf-fil legg til linjen under.

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

Linjen vil tvinge HTTP-demonen til å skrive loggmeldingene internt til filsystemets loggfil, men også behandle meldingene videre gjennom et pipe to logger-verktøy, som vil sende dem til en fjern syslog-server, ved å merke dem som kommer fra den lokale1 anlegget.

8. Hvis du også vil sende Apache-feilloggmeldinger til en ekstern syslog-server, legg til en ny regel som den som er presentert i eksemplet ovenfor, men sørg for å erstatte navnet på httpd-loggfilen og loggfilens alvorlighetsgrad til samsvarsfeilprioritet, som vist i følgende eksempel:

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

9. Når du har lagt til linjene ovenfor, må du starte Apache daemon på nytt for å bruke endringer, ved å utstede følgende kommando:

# systemctl restart httpd.service                 

10. Fra versjon 1.7.1 har Nginx webserver innebygde muligheter for å logge meldingene direkte til en ekstern syslog-server, ved å legge til følgende kodelinjer i en nginx-konfigurasjonsfil.

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;

For en IPv6-server, bruk følgende syntaksformat for å omslutte IPv6-adressen.

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

11. På den eksterne Rsyslog-serveren må du gjøre følgende endring i rsyslog-konfigurasjonsfilen for å motta loggene sendt av Apache-webserveren.

local1.* @Apache_IP_address:514

Det er alt! Du har konfigurert Rsyslog-demonen til å kjøre i klientmodus, og du har også bedt Apache HTTP-server eller Nginx om å videresende loggmeldingene til en ekstern syslog-server.

I tilfelle systemet krasjer, bør du kunne undersøke problemet ved å inspisere innholdet i loggfilene som er lagret på den eksterne syslog-serveren.