Sådan opsættes Rsyslog-klient til at sende logfiler til Rsyslog-server i CentOS 7


Loghåndtering er en af de mest kritiske komponenter i en netværksinfrastruktur. Logbeskeder genereres konstant af adskillige systemsoftware, såsom hjælpeprogrammer, applikationer, dæmoner, tjenester relateret til netværk, kerne, fysiske enheder og så videre.

Logfiler viser sig at være nyttige i tilfælde af fejlfinding af Linux-systemproblemer, overvåge systemet og gennemgå systemets sikkerhedsstyrke og problemer.

Rsyslog er et Open Source-logningsprogram, som er den mest populære logningsmekanisme i et stort antal Linux-distributioner. Det er også standardloggingstjenesten i CentOS 7 eller RHEL 7.

Rsyslog-dæmon i CentOS kan konfigureres til at køre som en server for at indsamle logbeskeder fra flere netværksenheder. Disse enheder fungerer som klienter og er konfigureret til at overføre deres logfiler til en rsyslog-server.

Imidlertid kan Rsyslog-tjenesten også konfigureres og startes i klienttilstand. Denne opsætning instruerer rsyslog-dæmonen om at videresende logbeskeder til en ekstern Rsyslog-server ved hjælp af TCP- eller UDP-transportprotokollerne. Rsyslog-tjenesten kan også konfigureres til at køre som klient og som server på samme tid.

I denne vejledning beskriver vi, hvordan du konfigurerer en CentOS/RHEL 7 Rsyslog-dæmon til at sende logmeddelelser til en ekstern Rsyslog-server. Denne opsætning sikrer, at din maskindiskplads kan bevares til lagring af andre data.

Det sted, hvor næsten alle logfiler er skrevet som standard i CentOS, er /var systemstien. Det tilrådes også altid at oprette en separat partition til /var -mappen, som kan dyrkes dynamisk, for ikke at udtømme /(root) -partitionen.

En Rsyslog-klient sender altid logbeskederne i almindelig tekst, hvis ikke andet er angivet. Du bør ikke konfigurere en Rsyslog-klient til at overføre logmeddelelser over internettet eller netværk, der ikke er under din fulde kontrol.

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

Trin 1: Bekræft installationen af Rsyslog

1. Som standard er Rsyslog-dæmonen allerede installeret og kører i et CentOS 7-system. For at kontrollere, om rsyslog-tjenesten er til stede i systemet, skal du udstede følgende kommandoer.

# rpm -q | grep rsyslog
# rsyslogd -v

2. Hvis Rsyslog-pakken ikke er installeret i CentOS, skal du udføre nedenstående kommando for at installere tjenesten.

# yum install rsyslog

Trin 2: Konfigurer Rsyslog Service som klient

3. For at håndhæve Rsyslog-dæmonen installeret på et CentOS 7-system til at fungere som en logklient og dirigere alle lokalt genererede logmeddelelser til en ekstern Rsyslog-server skal du ændre rsyslog-konfigurationsfilen som følger:

Åbn først hovedkonfigurationsfilen til redigering.

# vi /etc/rsyslog.conf

Derefter tilføjes nedenstående linje i slutningen af filen som illustreret i nedenstående uddrag.

*. *  @192.168.10.254:514

På ovenstående linje skal du sørge for at udskifte IP-adressen til FQDN på den eksterne rsyslog-server i overensstemmelse hermed. Ovenstående linje instruerer Rsyslog-dæmonen om at sende alle logmeddelelser, uanset facilitet eller sværhedsgrad, til værten med IP 192.168.10.254 via 514/UDP-port.

4. Hvis den eksterne log-server er konfigureret til kun at lytte til TCP-forbindelser, eller hvis du vil bruge en pålidelig transportnetværksprotokol, såsom TCP, skal du tilføje et andet @ -tegn foran fjernværten som vist i nedenstående eksempel:

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

Linux rsyslog tillader også har nogle specialtegn, såsom = eller ! , som kan forud for prioritetsniveauer for at angive "kun denne prioritet" for lige tegn og "ikke denne prioritet eller højere end dette ”.

Nogle eksempler på Rsyslog-prioriterede kvalifikationsniveauer i CentOS 7:

  • kern.info = kernelogfiler med infoprioritet og højere.
  • kern. = info = kun kernemeddelelser med infoprioritet.
  • kern.info; kern.! err = kun kernemeddelelser med info, meddelelse og advarselsprioriteter.
  • kern.debug; kern.! = advarsel = alle kerneprioriteter undtagen advarsel.
  • kern. * = alle kerneprioritetsmeddelelser.
  • kern.none = log ikke nogen relaterede kernefacilitetsmeddelelser uanset prioritet.

Hvis du for eksempel antager, at du kun vil sende en bestemt facilitetsbesked til en ekstern log-server, såsom alle relaterede mailbeskeder uanset prioritetsniveau, skal du tilføje nedenstående linje til rsyslog-konfigurationsfil:

mail.* @192.168.10.254:514 

5. Endelig skal Rsyslog-tjenesten genstartes for at anvende den nye konfiguration for at dæmonen kan afhente ændringerne ved at køre nedenstående kommando:

# systemctl restart rsyslog.service

6. Hvis Rsyslog-dæmonen af nogle årsager ikke er aktiveret under opstartstiden, skal du udstede nedenstående kommando for at aktivere hele systemet:

# systemctl enable rsyslog.service

Trin 3: Send Apache- og Nginx-logfiler til en ekstern log-server

7. Apache HTTP-server kan konfigureres til at sende log-beskeder til en ekstern syslog-server ved at tilføje følgende linje til dens hovedkonfigurationsfil som vist i nedenstående eksempel.

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

På den primære Apache-fil skal du tilføje nedenstående linje.

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

Linjen tvinger HTTP-dæmonen til at skrive logbeskederne internt til filsystemets logfil, men behandler også beskederne yderligere gennem et rør til logger-værktøj, som sender dem til en fjern syslog-server ved at markere dem som kommer fra den lokale1 facilitet.

8. Hvis du også vil dirigere Apache-fejllogbeskeder til en ekstern syslog-server, skal du tilføje en ny regel som den, der er vist i ovenstående eksempel, men sørg for at erstatte navnet på httpd-logfilen og logfilens sværhedsgrad til match fejlprioritet, 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 tilføjet ovenstående linjer, skal du genstarte Apache-dæmonen for at anvende ændringer ved at udstede følgende kommando:

# systemctl restart httpd.service                 

10. Fra version 1.7.1 har Nginx-webserver indbyggede muligheder for direkte at logge sine meddelelser på en ekstern syslog-server ved at tilføje følgende kodelinjer til en nginx-konfigurationsfil.

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 skal du bruge følgende syntaksformat til at omslutte IPv6-adressen.

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

11. På den eksterne Rsyslog-server skal du foretage følgende ændring af rsyslog-konfigurationsfilen for at modtage de logfiler, der sendes af Apache-webserveren.

local1.* @Apache_IP_address:514

Det er alt! Du har med succes konfigureret Rsyslog-dæmonen til at køre i klienttilstand, og du har også instrueret Apache HTTP-server eller Nginx om at videresende sine logmeddelelser til en ekstern syslog-server.

Hvis dit system går ned, skal du være i stand til at undersøge problemet ved at inspicere logfilernes indhold, der er gemt på den eksterne syslog-server.