Cum să configurați clientul Rsyslog pentru a trimite jurnalele către serverul Rsyslog în CentOS 7


Gestionarea jurnalelor este una dintre cele mai critice componente dintr-o infrastructură de rețea. Mesajele de jurnal sunt generate constant de numeroase programe de sistem, cum ar fi utilitare, aplicații, demoni, servicii legate de rețea, nucleu, dispozitive fizice și așa mai departe.

Fișierele jurnal se dovedesc a fi utile în cazul depanării problemelor sistemului Linux, monitorizării sistemului și revizuirii puterii și problemelor de securitate a sistemului.

Rsyslog este un program de înregistrare Open Source, care este cel mai popular mecanism de înregistrare într-un număr mare de distribuții Linux. Este, de asemenea, serviciul implicit de înregistrare în CentOS 7 sau RHEL 7.

Daemonul Rsyslog din CentOS poate fi configurat să ruleze ca server pentru a colecta mesaje de jurnal de pe mai multe dispozitive din rețea. Aceste dispozitive acționează ca clienți și sunt configurate să își transmită jurnalele către un server rsyslog.

Cu toate acestea, serviciul Rsyslog poate fi configurat și pornit și în modul client. Această configurare instruiește demonul rsyslog să redirecționeze mesajele de jurnal către un server Rsyslog la distanță folosind protocoalele de transport TCP sau UDP. Serviciul Rsyslog poate fi, de asemenea, configurat să ruleze ca client și ca server în același timp.

În acest tutorial, vom descrie cum să configurați un daemon Rsyslog CentOS/RHEL 7 pentru a trimite mesaje de jurnal către un server Rsyslog la distanță. Această configurare asigură că spațiul pe disc al mașinii dumneavoastră poate fi păstrat pentru stocarea altor date.

Locul în care aproape toate fișierele jurnal sunt scrise implicit în CentOS este calea de sistem /var. De asemenea, este recomandabil să creați întotdeauna o partiție separată pentru directorul /var, care poate fi crescută dinamic, pentru a nu epuiza partiția /(rădăcină).

Un client Rsyslog trimite întotdeauna mesajele de jurnal în text simplu, dacă nu se specifică altfel. Nu trebuie să configurați un client Rsyslog pentru a transmite mesaje de jurnal prin Internet sau rețele care nu sunt sub controlul dvs. complet.

Cerințe

  1. Procedura de instalare CentOS 7.3
  2. RHEL 7.3 Procedura de instalare
  3. Configurați un server Rsyslog în CentOS/RHEL 7

Pasul 1: Verificați instalarea Rsyslog

1. În mod implicit, demonul Rsyslog este deja instalat și rulează într-un sistem CentOS 7. Pentru a verifica dacă serviciul rsyslog este prezent în sistem, lansați următoarele comenzi.

rpm -q | grep rsyslog
rsyslogd -v

2. Dacă pachetul Rsyslog nu este instalat în CentOS, executați comanda de mai jos pentru a instala serviciul.

yum install rsyslog

Pasul 2: Configurați serviciul Rsyslog ca client

3. Pentru a impune ca demonul Rsyslog instalat pe un sistem CentOS 7 să acționeze ca un client de jurnal și să direcționeze toate mesajele de jurnal generate local către un server Rsyslog de la distanță, modificați fișierul de configurare rsyslog, după cum urmează:

Mai întâi deschideți fișierul de configurare principal pentru editare.

vi /etc/rsyslog.conf

Apoi, adăugați linia de mai jos la sfârșitul fișierului, așa cum este ilustrat în fragmentul de mai jos.

*. *  @192.168.10.254:514

Pe linia de mai sus, asigurați-vă că înlocuiți adresa IP a FQDN-ului serverului rsyslog la distanță în consecință. Linia de mai sus indică demonului Rsyslog să trimită toate mesajele de jurnal, indiferent de facilitate sau gravitate, către gazda cu IP 192.168.10.254 prin portul 514/UDP.

4. Dacă serverul de jurnal de la distanță este configurat să asculte numai pe conexiuni TCP sau dacă doriți să utilizați un protocol de rețea de transport fiabil, cum ar fi TCP, adăugați un alt caracter @ în față a gazdei la distanță, așa cum se arată în exemplul de mai jos:

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

Linux rsyslog permite, de asemenea, să aibă unele caractere speciale, cum ar fi = sau !, care pot fi prefixate la nivelurile de prioritate pentru a indica „numai această prioritate ” pentru semnul egal și „nu această prioritate sau mai mare decât aceasta ”.

Câteva mostre de calificative la nivel de prioritate Rsyslog în CentOS 7:

  • kern.info=jurnalele de kernel cu prioritate de informații și mai mare.
  • kern.=info=numai mesajele de kernel cu prioritate pentru informații.
  • kern.info;kern.!err=numai mesajele de kernel cu informații, notificare și priorități de avertizare.
  • kern.debug;kern.!=warning=toate prioritățile nucleului, cu excepția avertismentului.
  • kern.*=toate mesajele cu prioritățile nucleului.
  • kern.none=nu înregistrați niciun mesaj legat de facilitate de kernel, indiferent de prioritate.

De exemplu, presupunând că doriți să trimiteți doar un anumit mesaj de facilitate către un server de jurnal de la distanță, cum ar fi toate mesajele de e-mail asociate, indiferent de nivelul de prioritate, adăugați linia de mai jos la fișierul de configurare rsyslog:

mail.* @192.168.10.254:514 

5. În cele din urmă, pentru a aplica noua configurație, serviciul Rsyslog trebuie repornit pentru ca demonul să preia modificările, rulând comanda de mai jos:

systemctl restart rsyslog.service

6. Dacă, din anumite motive, demonul Rsyslog nu este activat în timpul pornirii, lansați comanda de mai jos pentru a activa serviciul la nivel de sistem:

systemctl enable rsyslog.service

Pasul 3: Trimiteți jurnalele Apache și Nginx la un server de jurnal de la distanță

7. Serverul Apache HTTP poate fi configurat să trimită mesaje de jurnal către un server syslog la distanță, adăugând următoarea linie la fișierul său de configurare principal, așa cum este ilustrat în exemplul de mai jos.

vi /etc/httpd/conf/httpd.conf

Pe fișierul principal de conf Apache, adăugați linia de mai jos.

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

Linia va forța demonul HTTP să scrie mesajele de jurnal intern în fișierul jurnal al sistemului de fișiere, dar și să proceseze mesajele mai departe printr-un utilitar pipe to logger, care le va trimite către un server syslog îndepărtat, marcându-le ca provenind din local1. facilitate.

8. Dacă doriți să direcționați și mesajele de jurnal de eroare Apache către un server syslog la distanță, adăugați o nouă regulă ca cea prezentată în exemplul de mai sus, dar asigurați-vă că înlocuiți numele fișierului jurnal httpd și nivelul de severitate al fișierului jurnal pentru a se potrivi cu prioritatea erorii, așa cum se arată în următorul exemplu:

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

9. După ce ați adăugat liniile de mai sus, trebuie să reporniți demonul Apache pentru a aplica modificări, lansând următoarea comandă:

systemctl restart httpd.service                 

10. Începând cu versiunea 1.7.1, serverul web Nginx are capabilități încorporate pentru a-și înregistra direct mesajele pe un server syslog la distanță, adăugând următoarele rânduri de cod într-un fișier de configurare nginx.

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;

Pentru un server IPv6, utilizați următorul format de sintaxă pentru a include adresa IPv6.

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

11. Pe serverul Rsyslog la distanță trebuie să faceți următoarea modificare a fișierului de configurare rsyslog, pentru a primi jurnalele trimise de serverul web Apache.

local1.* @Apache_IP_address:514

Asta e tot! Ați configurat cu succes demonul Rsyslog pentru a rula în modul client și, de asemenea, ați instruit serverul Apache HTTP sau Nginx să trimită mesajele de jurnal. la un server syslog la distanță.

În cazul în care sistemul se blochează, ar trebui să puteți investiga problema inspectând conținutul fișierelor jurnal care sunt stocate pe serverul syslog la distanță.