Soubory protokolu jsou zásadní při hledání a odstraňování chyb. Jsou to první soubory, které správci systému zkoumají, aby se zúžili na pravděpodobnou příčinu chyby, a tak přišli s řešeními k vyřešení problému. V infrastruktuře s desítkami nebo stovkami serverů a dalších zařízení může být správa souborů protokolu výzvou. A tady přichází na řadu rsyslog.
Rsyslog je opensource protokolovací program, který usnadňuje předávání protokolových souborů na centralizovaný protokolový server v síti IP. Díky centralizovanému protokolování mohou administrátoři snadno udržovat přehled o souborech protokolů více systémů z centrálního místa. V tomto příspěvku vás provedeme instalací a konfigurací serveru Rsyslog na Debianu 11.
Nastavení laboratoře
Abychom demonstrovali, jak lze Rsyslog použít k odesílání souborů protokolu z klientského systému na server Rsyslog, budeme mít jednoduché nastavení laboratoře, jak je znázorněno
- Server Rsyslog: Debian 11 IP:192.168.1.151
- Klient Rsyslog: Ubuntu 20.04 IP:10.20.0.170
Krok 1) Nakonfigurujte Rsyslog na serveru
Jak již bylo zmíněno dříve, Rsyslog funguje v modelu klient-server a začneme konfigurací Rsyslog na serveru Debian 11. V Debianu 11 je Rsyslog standardně nainstalován. Pokud z nějakého důvodu Rsyslog není přítomen, můžete jej nainstalovat pomocí příkazu:
$ sudo apt install -y rsyslog
Po instalaci můžete zkontrolovat jeho provozní stav následovně:
$ sudo systemctl status rsyslog
Dále nakonfigurujeme rsyslog tak, aby běžel v režimu serveru. Konfigurační soubor je soubor /etc/rsyslog.conf. Upravte jej tedy pomocí preferovaného textového editoru.
$ sudo vi /etc/rsyslog.conf
Pokračujte a odkomentujte následující řádky, které umožňují příjem syslogu UDP a TCP od vzdálených klientů.
# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514")
Poté vložte následující řádky a definujte šablonu, kterou bude démon Rsyslog používat k ukládání příchozích protokolů z klientských systémů.
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
Soubory protokolu budou používat následující konvenci pojmenování:
- /%HOSTNAME%/ – Toto je název hostitele klientského systému.
- /%PROGRAMNAME%/ – Identifikuje klientský program, který vytvořil soubor protokolu.
Chcete-li použít změny, restartujte démona rsyslog.
$ sudo systemctl restart rsyslog
Ve výchozím nastavení rsyslog naslouchá portu 514. Můžete potvrdit, že toto je port, kterému naslouchá démon rsyslog spuštěním příkazu ss.
$ sudo ss -tunlp | grep 514
Krok 2) Nakonfigurujte pravidla brány firewall pro rsyslog
Démon Rsyslog běží na serveru podle očekávání. Pokud používáte UFW firewall, nezapomeňte povolit port 514, aby byly povoleny příchozí zprávy protokolu.
$ sudo ufw allow 514/tcp $ sudo ufw allow 514/udp
Poté znovu načtěte bránu firewall, aby se použilo pravidlo brány firewall následovně.
$ sudo ufw reload
Dalším krokem bude konfigurace klientského systému Ubuntu pro odesílání souborů protokolu na server rsyslog.
Krok 3) Nakonfigurujte klientský systém rsyslog
Posledním krokem je konfigurace klientského systému pro odesílání souborů protokolu na server rsyslog. Přihlaste se ke klientovi a znovu se ujistěte, že je nainstalován a spuštěn démon rsyslog.
Dále upravte konfigurační soubor rsyslog.
$ sudo vi /etc/rsyslog.conf
Přejděte na úplný konec souboru a přidejte tyto řádky.
#Enable sending system logs over UDP to rsyslog server *.* @rsyslog-ip-address:514 #Enable sending system logs over TCP to rsyslog server *.* @@rsyslog-ip-address:514
Tyto řádky instruují klienta, aby poslal soubory protokolu přes protokoly UDP i TCP na server rsyslog. Všimněte si, že první řádek má jeden symbol @, který značí UDP, a druhý řádek má dva symboly @@ označující protokol TCP.
Pokud by došlo k výpadku vzdáleného serveru a vy byste chtěli zachovat své protokoly, můžete nastavit vyrovnávací paměť diskové fronty připojením zobrazených řádků.
##Nastavit diskovou frontu, když bude server rsyslog mimo provoz:
$ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
Níže je uveden souhrn všech úprav konfigurace klienta.
Uložte a ukončete soubor. Nyní restartujte službu rsyslog, aby se změny projevily.
$ sudo systemctl restart rsyslog
V tomto okamžiku by měl klientský systém odesílat soubory protokolu na server rsyslog. Vraťme se na server a zjistěte to.
Krok 4) Zobrazte soubory protokolu klienta
Všechny soubory protokolu (včetně serverů) jsou uloženy v adresáři /var/log/. Chcete-li zobrazit protokoly klienta, spusťte následující příkaz:
$ ls /var/log/
Soubory protokolu klienta budou uloženy do adresáře, který odpovídá názvu hostitele klientského systému, jak je ukázáno níže.
Dále můžete zobrazit soubory protokolu obsažené v hlavním adresáři protokolu.
$ sudo ls -l /var/log/ubuntu-20-04/
Chcete-li zobrazit protokoly v reálném čase, použijte příkaz tail, jak je znázorněno. Zde si prohlížíme protokoly uživatele sudo.
$ sudo tail -f /var/log/ubuntu-20-04/sudo.log
Úspěšně jsme nainstalovali rsyslog a nakonfigurovali jej tak, aby umožňoval odesílání souborů protokolu na server rsyslog z klientského systému. Nyní můžete nakonfigurovat tolik klientských systémů, kolik chcete, aby posílaly protokoly na server rsyslog, abyste dosáhli centralizované struktury správy protokolů.
To je z tohoto příspěvku vše, doufám, že jste našli informace. Sdílejte prosím své dotazy a zpětnou vazbu v sekci komentářů níže.
Přečtěte si také :Jak otáčet a komprimovat soubory protokolu v Linuxu pomocí Logrotate