Wéi erstellt en zentraliséierte Log Server mat Rsyslog an CentOS/RHEL 7


Fir de System Administrateur e Problem op engem CentOS 7 oder RHEL 7 Server System z'identifizéieren oder ze léisen, muss et d'Evenementer wëssen a kucken, déi am System an enger spezifescher Zäit geschitt sinn aus Logdateien, déi am System am/var gespäichert sinn. /log Verzeechnes.

De Syslog-Server op enger Linux-Maschinn kann en zentrale Iwwerwaachungspunkt iwwer e Netzwierk handelen, wou all Server, Netzwierkapparater, Router, Schalter an déi meescht vun hiren internen Servicer, déi Logbicher generéieren, egal ob mat engem spezifeschen internen Thema oder just informativen Messagen hir Logbicher schécken. .

Op engem CentOS/RHEL 7 System ass Rsyslog Daemon den Haaptprotokollserver virinstalléiert, gefollegt vum Systemd Journal Daemon (journald).

Rsyslog Server a bauen als Client/Server Architektur Service a ka béid Rollen gläichzäiteg erreechen. Et kann als Server lafen an all Logbicher sammelen, déi vun aneren Apparater am Netz iwwerdroe ginn oder et kann als Client lafen andeems Dir all intern Systemevenementer schéckt, déi op e Remote Endpoint Syslog Server ageloggt sinn.

Wann rsyslog als Client konfiguréiert ass, kënnen d'Logbicher lokal an Dateien am lokalen Dateiesystem gespäichert ginn oder se kënnen op afstand geschéckt ginn anstatt se an Dateien op der Maschinn ze schreiwen oder Event Logdateien lokal ze schreiwen an op e Remote Syslog Server ze schécken déi selwecht Zäit.

Syslog Server bedreift all Log Message mat dem folgende Schema:

type (facility).priority (severity)  destination(where to send the log)

A. D'Facilitéit oder Typdaten sinn duerch déi intern Systemprozesser vertruede ginn, déi d'Messagen generéieren. A Linux intern Prozesser (Facilitéiten) déi Logbicher generéieren ginn standardiséiert wéi follegt:

  • auth = Messagen generéiert duerch Authentifikatiounsprozesser (Login).
  • cron= Messagen generéiert duerch geplangte Prozesser (crontab).
  • Daemon = Messagen generéiert vun Daemonen (intern Servicer).
  • kernel = Messagen generéiert vum Linux Kernel selwer.
  • Mail = Messagen generéiert vun engem Mailserver.
  • syslog = Messagen generéiert vum rsyslog Daemon selwer.
  • lpr = Messagen generéiert vu lokalen Dréckeren oder engem Printserver.
  • local0 – local7 = Benotzerdefinéiert Messagen definéiert vun engem Administrateur (local7 gëtt normalerweis fir Cisco oder Windows zougewisen).

B. D'Prioritéit (Gravitéit) Niveauen sinn och standardiséiert. All Prioritéit gëtt mat enger Standard Ofkierzung an enger Zuel zougewisen wéi hei ënnendrënner beschriwwen. Déi 7. Prioritéit ass de méi héije Niveau vun all.

  • emerg = Noutfall – 0
  • alarm = Alarm – 1
  • err = Feeler – 3
  • warn = Warnungen – 4
  • Notiz = Notifikatioun – 5
  • info = Informatioun – 6
  • Debug = Debugging – 7

Special Rsyslog Schlësselwieder:

  • * = all Ariichtungen oder Prioritéite
  • none = d'Ariichtungen hu keng Prioritéite ginn zB: mail.none

C. Den drëtten Deel fir de Syslog Schema gëtt vun der Destinatioun Direktiv duergestallt. Rsyslog Daemon kann Logmeldungen schécken fir an enger Datei am lokalen Dateiesystem ze schreiwen (meeschtens an enger Datei am /var/log/ Verzeichnis) oder fir an en anere lokalen Prozess ze päifen oder op eng lokal Benotzerkonsole ze schécken (zu stdout) , oder schéckt de Message un e Remote Syslog Server iwwer TCP/UDP Protokoll, oder schéckt souguer d'Botschaft op /dev/null.

Fir CentOS/RHEL 7 als zentrale Log-Server ze konfiguréieren, musse mir als éischt kucken a sécherzestellen datt d'/var-Partition, wou all Log-Datei opgeholl ginn, grouss genuch ass (e puer GB Minimum) fir all d'Logbicher ze späicheren. Log Dateien déi vun aneren Apparater geschéckt ginn. Et ass eng gutt Entscheedung fir en separaten Drive (LVM, RAID) ze benotzen fir den /var/log/ Verzeichnis ze montéieren.

  1. CentOS 7.3 Installatiounsprozedur
  2. RHEL 7.3 Installatiounsprozedur

Wéi konfiguréieren Rsyslog am CentOS/RHEL 7 Server

1. Par défaut gëtt Rsyslog Service automatesch installéiert a soll am CentOS/RHEL lafen 7. Fir ze kontrolléieren ob den Daemon am System gestart ass, gitt de folgende Kommando mat Root Privilegien.

# systemctl status rsyslog.service

Wann de Service net als Standard leeft, fuert de Kommando hei ënnen aus fir den rsyslog Daemon unzefänken.

# systemctl start rsyslog.service

2. Wann de rsyslog Package net op de System installéiert ass, deen Dir wëlles als zentraliséierte Logserver ze benotzen, gitt de folgende Kommando aus fir de rsyslog Package z'installéieren.

# yum install rsyslog

3. Den éischte Schrëtt dee mir um System maache musse fir den rsyslog Daemon als zentraliséierte Log-Server ze konfiguréieren, sou datt et Log-Messagen fir extern Clientë ka kréien, ass d'Haaptkonfiguratioun opzemaachen an z'änneren, mat Ärem Liiblingstexteditor. Datei vun /etc/rsyslog.conf, wéi am Auszich hei ënnen presentéiert.

# vi /etc/rsyslog.conf

An der rsyslog Haaptkonfiguratiounsdatei, sicht an decommentéiert déi folgend Zeilen (läscht den Hashtag # Um Zeilufank) fir UDP-Transportempfang op Rsyslog-Server iwwer 514 Port ze bidden. UDP ass de Standardprotokoll dee fir Logbicher Iwwerdroung vu Rsyslog benotzt gëtt.

$ModLoad imudp 
$UDPServerRun 514

4. UDP Protokoll huet net den TCP Overhead, wat et méi séier mécht fir Daten ze vermëttelen wéi TCP Protokoll. Op der anerer Säit, UDP Protokoll assuréiert net Zouverlässegkeet vun iwwerdroen Donnéeën.

Wéi och ëmmer, wann Dir den TCP-Protokoll fir d'Logopnam benotze musst, musst Dir déi folgend Zeilen aus der /etc/rsyslog.conf Datei sichen an decommentéieren fir Rsyslog Daemon ze konfiguréieren fir en TCP Socket um 514 Hafen ze binden an ze lauschteren. TCP an UDP Nolauschterer Sockets fir Empfang kënnen op engem Rsyslog Server gläichzäiteg konfiguréiert ginn.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Op den nächste Schrëtt, maach d'Datei nach net zou, erstellt eng nei Schabloun déi benotzt gëtt fir Remote Messagen ze kréien. Dës Schabloun wäert de lokalen Rsyslog-Server instruéieren wou d'empfangene Messagen, déi vu Syslog-Netzclienten geschéckt ginn, gespäichert ginn. D'Schabloun muss virum Ufank vum GLOBAL DIRECTIVES Block bäigefüügt ginn, wéi am Auszich hei ënnen illustréiert.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

Déi uewen $template RemoteLogs Direktiv instruéiert den Rsyslog Daemon all déi erhalene Logmeldungen op verschidde Dateien ze sammelen an ze schreiwen, baséiert op dem Client Maschinnnumm an der Remote Client Ariichtung (Applikatioun) déi d'Messagen generéiert hunn op Basis vun den definéierten Eegeschafte presentéiert an der Schablounkonfiguratioun : %HOSTNAME% an %PROGRAMNAME%.

All dës Logdateien ginn an de lokalen Dateiesystem op eng speziell Datei geschriwwen, déi nom Hostnumm vum Client Maschinn benannt an am/var/log/Verzeechnes gespäichert gëtt.

D'& ~ Redirect-Regel instruéiert de lokalen Rsyslog-Server fir d'Veraarbechtung vun der erhalener Logmeldung weider ze stoppen an d'Messagen ze verwerfen (net an intern Logdateien ze schreiwen).

De RemoteLogs Numm ass en arbiträren Numm deen un dëser Schabloundirektiv gëtt. Dir kënnt all Numm benotzen deen Dir am Beschten fir Är Schabloun fannt.

Fir all erhalen Messagen vu Clienten an enger eenzeger Logdatei no der IP Adress vum Remote Client ze schreiwen, ouni d'Facilitéit ze filteren déi de Message generéiert huet, benotzt den Auszuch hei ënnen.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

En anert Beispill vun enger Schabloun wou all Messagen mat Autoritéitsfäegkeet Fändel op eng Schabloun mam Numm TmplAuth protokolléiert ginn.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Drënner ass en Auszuch aus enger Schabloun Definitioun vum Rsyslog 7 Server:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Déi uewe genannte Schabloun Auszich kann och geschriwwe ginn wéi:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Fir komplex Rsyslog Templates ze schreiwen, liest d'Rsyslog Konfiguratiounsdatei Handbuch andeems Dir man rsyslog.conf Kommando ausstellt oder Rsyslog Online Dokumentatioun konsultéiert.

6. Nodeems Dir d'Rsyslog Konfiguratiounsdatei mat Ären eegenen Astellunge geännert hutt wéi uewen erkläert, start den Rsyslog Daemon nei fir d'Ännerungen z'applizéieren andeems Dir de folgende Kommando ausgitt:

# service rsyslog restart

7. Bis elo sollt Rsyslog Server konfiguréiert sinn fir e zentraliséierte Log-Server ze handelen an Messagen vu Syslog Clienten opzehuelen. Fir Rsyslog Netzwierk Sockets z'iwwerpréiwen, lafen netstat Kommando mat Root Privilegien a benotzt grep fir rsyslog String ze filteren.

# netstat -tulpn | grep rsyslog 

8. Wann Dir SELinux an CentOS/RHEL 7 aktivéiert hutt, gitt de folgende Kommando aus fir SELinux ze konfiguréieren fir rsyslog Traffic ofhängeg vum Netzwierk Socket Typ z'erméiglechen.

# semanage -a -t syslogd_port_t -p udp 514
# semanage -a -t syslogd_port_t -p tcp 514 

9. Wann d'Firewall aktivéiert an aktiv ass, fuert de Kommando hei ënnen fir déi néideg Regele fir rsyslog Ports op Firewalld opzemaachen.

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd –reload

Dat ass alles! Rsyslog ass elo am Servermodus konfiguréiert a kann Logbicher vu Remote Clienten zentraliséieren. Am nächsten Artikel wäerte mir kucken wéi Dir Rsyslog Client op CentOS/RHEL 7 Server konfiguréiert.

Mat Rsyslog Server als zentrale Iwwerwaachungspunkt fir Remote Log Messagen, kënnt Dir Logdateien iwwerpréiwen an de Gesondheetszoustand vum Client beobachten oder d'Problemer vum Client méi einfach debuggen wann Systemer Crash oder ënner enger Aart Attack sinn.