Vyhledávání na webu

Jak nastavit klienta Rsyslog pro odesílání protokolů na server Rsyslog v CentOS 7


Správa protokolů je jednou z nejdůležitějších součástí síťové infrastruktury. Zprávy protokolů jsou neustále generovány řadou systémového softwaru, jako jsou nástroje, aplikace, démoni, služby související se sítí, jádrem, fyzickými zařízeními a tak dále.

Soubory protokolu se ukázaly být užitečné v případě řešení problémů se systémem Linux, monitorování systému a kontroly bezpečnosti systému a problémů.

Rsyslog je program pro protokolování s otevřeným zdrojovým kódem, který je nejoblíbenějším mechanismem protokolování v obrovském počtu distribucí Linuxu. Je to také výchozí služba protokolování v CentOS 7 nebo RHEL 7.

Démon Rsyslog v CentOS lze nakonfigurovat tak, aby běžel jako server za účelem shromažďování zpráv protokolu z více síťových zařízení. Tato zařízení fungují jako klienti a jsou nakonfigurována tak, aby přenášela své protokoly na server rsyslog.

Službu Rsyslog lze však nakonfigurovat a spustit také v klientském režimu. Toto nastavení dává démonovi rsyslog pokyn, aby předával zprávy protokolu na vzdálený server Rsyslog pomocí transportních protokolů TCP nebo UDP. Službu Rsyslog lze také nakonfigurovat tak, aby běžela jako klient a jako server současně.

V tomto tutoriálu popíšeme, jak nastavit démona Rsyslog CentOS/RHEL 7 pro odesílání zpráv protokolu na vzdálený server Rsyslog. Toto nastavení zajišťuje, že místo na disku vašeho počítače může být zachováno pro ukládání dalších dat.

Místo, kam se ve výchozím nastavení zapisují téměř všechny soubory protokolu v CentOS, je systémová cesta /var. Je také vhodné vždy vytvořit samostatný oddíl pro adresář /var, který lze dynamicky rozšiřovat, aby nedošlo k vyčerpání oddílu /(root).

Klient Rsyslog vždy odesílá zprávy protokolu v prostém textu, pokud není uvedeno jinak. Neměli byste nastavovat klienta Rsyslog pro přenos protokolových zpráv přes internet nebo sítě, které nemáte plně pod kontrolou.

Požadavky

  1. Postup instalace CentOS 7.3
  2. RHEL 7.3 Postup instalace
  3. Nakonfigurujte server Rsyslog v CentOS/RHEL 7

Krok 1: Ověřte instalaci Rsyslog

1. Ve výchozím nastavení je démon Rsyslog již nainstalován a spuštěn v systému CentOS 7. Chcete-li ověřit, zda je v systému přítomna služba rsyslog, zadejte následující příkazy.

rpm -q | grep rsyslog
rsyslogd -v

2. Pokud balíček Rsyslog není nainstalován v CentOS, nainstalujte službu provedením níže uvedeného příkazu.

yum install rsyslog

Krok 2: Nakonfigurujte službu Rsyslog jako klienta

3. Chcete-li vynutit, aby démon Rsyslog nainstalovaný v systému CentOS 7 fungoval jako klient protokolu a směroval všechny lokálně generované zprávy protokolu na vzdálený server Rsyslog, upravte konfigurační soubor rsyslog takto:

Nejprve otevřete hlavní konfigurační soubor pro úpravy.

vi /etc/rsyslog.conf

Poté připojte níže uvedený řádek na konec souboru, jak je znázorněno na níže uvedeném úryvku.

*. *  @192.168.10.254:514

Na výše uvedeném řádku se ujistěte, že jste odpovídajícím způsobem nahradili IP adresu FQDN vzdáleného serveru rsyslog. Výše uvedený řádek dává démonovi Rsyslog pokyn, aby odeslal všechny zprávy protokolu, bez ohledu na zařízení nebo závažnost, hostiteli s IP 192.168.10.254 přes port 514/UDP.

4. Pokud je server vzdáleného protokolu nakonfigurován tak, aby naslouchal pouze připojením TCP nebo chcete použít spolehlivý protokol přenosové sítě, jako je TCP, přidejte na začátek další znak @ vzdáleného hostitele, jak je znázorněno v níže uvedeném příkladu:

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

Linuxový rsyslog také umožňuje mít některé speciální znaky, jako je = nebo !, které mohou být předřazeny úrovním priority, aby označovaly „pouze tato priorita “ pro rovnítko a „není tato priorita nebo vyšší než tato “.

Některé ukázky kvalifikátorů úrovně priority Rsyslog v CentOS 7:

  • kern.info=protokoly jádra s prioritou informací a vyšší.
  • kern.=info=pouze zprávy jádra s prioritou informací.
  • kern.info;kern.!err=pouze zprávy jádra s prioritami informací, upozornění a varování.
  • kern.debug;kern.!=warning=všechny priority jádra kromě varování.
  • kern.*=všechny zprávy o prioritách jádra.
  • kern.none=nezaznamenávat žádné související zprávy zařízení jádra bez ohledu na prioritu.

Předpokládejme například, že chcete na vzdálený protokolový server odesílat pouze zprávy konkrétního zařízení, jako jsou všechny související poštovní zprávy bez ohledu na úroveň priority, přidejte do konfiguračního souboru rsyslog následující řádek:

mail.* @192.168.10.254:514 

5. Nakonec, aby bylo možné použít novou konfiguraci, je třeba restartovat službu Rsyslog, aby démon zachytil změny, spuštěním následujícího příkazu:

systemctl restart rsyslog.service

6. Pokud z nějakých důvodů není démon Rsyslog během spouštění povolen, povolte službu v celém systému zadáním níže uvedeného příkazu:

systemctl enable rsyslog.service

Krok 3: Odešlete protokoly Apache a Nginx na vzdálený protokolový server

7. Server Apache HTTP lze nakonfigurovat tak, aby odesílal zprávy protokolů na vzdálený server syslog přidáním následujícího řádku do jeho hlavního konfiguračního souboru, jak je znázorněno v příkladu níže.

vi /etc/httpd/conf/httpd.conf

Do hlavního conf souboru Apache přidejte níže uvedený řádek.

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

Řádek vynutí démona HTTP, aby zapisoval zprávy protokolu interně do souboru protokolu souborového systému, ale také zprávy dále zpracovával pomocí obslužného programu pipe to logger, který je odešle na vzdálený server syslog tím, že je označí jako pocházející z místního1 zařízení.

8. Chcete-li také přesměrovat zprávy chybového protokolu Apache na vzdálený server syslog, přidejte nové pravidlo, jako je to uvedené ve výše uvedeném příkladu, ale nezapomeňte nahradit název souboru protokolu httpd a úroveň závažnosti souboru protokolu, aby odpovídaly prioritě chyb, jak je znázorněno v následujícím příkladu:

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

9. Po přidání výše uvedených řádků je třeba restartovat démona Apache, aby se změny projevily, zadáním následujícího příkazu:

systemctl restart httpd.service                 

10. Od verze 1.7.1 má webový server Nginx vestavěné funkce pro přímé protokolování svých zpráv na vzdálený server syslog přidáním následujících řádků kód do konfiguračního souboru 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;

Pro server IPv6 použijte k uzavření adresy IPv6 následující formát syntaxe.

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

11. Na vzdáleném serveru Rsyslog musíte provést následující změnu v konfiguračním souboru rsyslog, abyste mohli přijímat protokoly odeslané webovým serverem Apache.

local1.* @Apache_IP_address:514

To je vše! Úspěšně jste nakonfigurovali démona Rsyslog tak, aby se spouštěl v klientském režimu, a také jste nařídili serveru Apache HTTP nebo Nginx, aby předával své protokolové zprávy na vzdálený server syslog.

V případě zhroucení systému byste měli být schopni problém prozkoumat kontrolou obsahu souborů protokolu, které jsou uloženy na vzdáleném serveru syslog.