Rsyslog je open-source nástroj pro zpracování protokolů. Umožňuje logování dat z různých typů systémů do centrálního úložiště. Rsyslog je protokol Syslog s více rozšířeními, funkcemi a výhodami.
Co dělá rsyslog tak výkonným? Rsyslog může doručit více než jeden milion zpráv za sekundu do místních destinací, pokud je aplikováno omezené zpracování.
V tomto tutoriálu se naučíme, jak nainstalovat a nakonfigurovat rsyslog na Ubuntu 20.04 .
Funkce Rsyslog
Rsyslog přišel v roce 2004. a rozšiřuje protokol syslog o nové funkce:
- Podpora protokolu RELP
- Podpora provozu s vyrovnávací pamětí
- Poslouchání připojení TCP/UDP (s omezením portu, IP)
- Podpora načítání velkého množství modulů (například modul pro podporu protokolu RELP)
- Podpora pro zahození zprávy, která obsahuje speciálně nakonfigurovaná pravidla
V Rsyslog zůstávají konfigurační soubory stejné jako Syslog. To jednoduše znamená, že můžete zkopírovat soubor syslog.conf přímo do rsyslog.conf a bude to fungovat.
Co jsou protokoly a syslog?
Než přejdeme k samotnému procesu konfigurace, podívejme se nejprve, k čemu se používají protokoly? Informace z protokolu vám mohou skutečně pomoci zjistit, co se přesně stalo ve vašem systému nebo co se přesně děje pod kapotou.
Dovolte mi uvést příklad:pokud náhle váš počítač zamrzl nebo možná havaroval nebo dokonce došlo k výpadku vašeho systému a mnohem užitečnější informace, které při zobrazení chybové zprávy nevidíte obvyklým způsobem.
Pokud víte, jak správně používat protokoly, mohou vám poskytnout mnoho funkcí a výhod pro diagnostické informace o samotném systému.
Ve výchozím nastavení Linux používá démona syslog k zaznamenávání protokolů o tom, jak systém běží, a poté tyto protokoly vkládá do centrálního úložiště v:/var/log kde je můžeme zkoumat a zkoumat.
Zjednodušeně řečeno, vše od událostí jádra po akce uživatelů je protokolováno systémem Linux, což vám umožňuje vidět téměř všechny akce provedené na vašem počítači nebo serverech.
V systému souborů Linux existuje jeden speciální adresář pro ukládání protokolů s názvem /var/log . Tento adresář obsahuje všechny protokoly ze samotného OS, jako jsou:služby nebo různé aplikace běžící na systému.
Podívejme se, jak vypadají adresáře a struktury protokolů na čerstvém Linuxu ubuntu 20.04.
Adresář, kde jsou uloženy různé druhy protokolů:
/var/log/syslog - Ukládá všechny spouštěcí zprávy, zprávy spouštění aplikací atd. Prakticky ukládá všechny globální systémové protokoly.
/var/log/cron - Úlohy Cron jsou v podstatě druhem naplánovaných a automatizovaných úloh vytvořených v systému, které se spouštějí pravidelně a opakovaně. Můžete vidět, co by tento adresář protokolů uložil.
/var/log/kern.log – ukládá protokoly jádra. Bez ohledu na to, jaké jsou protokoly. Protokoly událostí, chyb nebo upozornění.
/var/log/auth.log - Protokoly autentizace
/var/log.boot.log - Protokoly spouštění systému
/var/log/mysql.d - Mysql protokoly
/var/log/httpd - Adresář protokolů Apache
/var/log/maillog - Protokoly poštovního serveru
Nastavit Rsyslog Centralized Log Server na Ubuntu 20.04
Po krátkém přehledu, co jsou logy, Syslog a kde má rsyslog místo, přejděme k samotnému procesu konfigurace.
Předpoklady
- Dva servery se systémem Ubuntu 20.04
- Statická IP adresa:příklad 192.168.0.101 je potřeba nakonfigurovat na serveru Rsyslog a 192.168.0.102 je nakonfigurován na klientském počítači Rsyslog
Systém Ubuntu 20.04 má ve výchozím nastavení nainstalovaný rsyslog který byl dodáván se standardními balíčky systému.
Můžete zkontrolovat, zda běží:
$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 566 (rsyslogd)
Tasks: 4 (limit: 2281)
Memory: 2.7M
CGroup: /system.slice/rsyslog.service
└─566 /usr/sbin/rsyslogd -n -iNONE
Spusťte následující příkaz a zkontrolujte verzi Rsyslog, která je aktuálně nainstalována:
$ rsyslogd -v
Výstup:
rsyslogd 8.2001.0 (aka 2020.01) compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Config file: /etc/rsyslog.conf PID file: /run/rsyslogd.pid Number of Bits in RainerScript integers: 64
V případě, že není nainstalován nebo spuštěn, nainstalujte rsyslog pomocí následujících příkazů:
$ sudo apt-get update
$ sudo apt-get install rsyslog
Nyní je čas přejít na rsyslog.conf soubor, odkomentovat a změnit některé řádky pro spuštění služby rsyslog v režimu serveru:
$ sudo nano /etc/rsyslog.conf
Odkomentujte tyto čtyři řádky, které umožňují vazbu portů udp a tcp:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
Dalším krokem, který budeme muset přidat, je vytvoření nové šablony. Musíme vytvořit novou šablonu pro příjem vzdálených zpráv. Šablona poskytne serveru rsyslog instrukce o tom, jak ukládat příchozí zprávy syslog.
POZNÁMKA: Přidejte šablonu těsně před GLOBAL DIRECTIVES sekce:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
Výše uvedený řádek označuje, že přijaté protokoly budou zpracovány a uloženy v adresáři /var/log/. V souboru /etc/rsyslog.conf můžete definovat, kam se mají rsyslog protokoly.
Název souboru obsahuje proměnné %HOSTNAME% a %PROGRAMNAME% představují klientský počítač a název klientského programu, který vytvořil zprávu protokolu.
Uložte a poté restartujte službu rsyslog:
$ sudo systemctl restart rsyslog
Ověřte, že služba rsyslog naslouchá na nakonfigurovaných portech:
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:33591 sk:1 <->
udp UNCONN 0 0 [::]:514 [::]:* ino:33592 sk:4 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* ino:33595 sk:7 <->
tcp LISTEN 0 25 [::]:514 [::]:* ino:33596 sk:9 v6only:1 <->
Pokud možná máte službu brány firewall ufw, musíte povolit pravidla portu brány firewall rsyslog:
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
Chcete-li ověřit konfiguraci , spusťte následující příkaz:
sudo rsyslogd -N1 -f /etc/rsyslog.conf
Nakonfigurujte Rsyslog na klientovi
Po dokončení této konfigurace serveru rsyslog je dalším krokem konfigurace klientského počítače rsyslog pro odesílání protokolů na vzdálený server rsyslog server.
Jak jdeme se souborem rsyslog.conf na vzdáleném serveru, otevře se tento soubor na straně klienta pomocí vašeho oblíbeného editoru a upraví některé změny:
sudo nano /etc/rsyslog.conf
A povolit zachování FQDN:Alternativně, chcete-li, aby byl rsyslog zasílán s plně kvalifikovaným názvem domény (FQDN, jako je system1.example.com) namísto pouhého názvu hostitele (system1), použijte direktivu:
$PreserveFQDN on
Na konec přidejte nakonfigurovaný vzdálený server rsyslog.
@192.168.0.101:514
Nebo můžete povolit odesílání protokolů přes UDP. Pro TCP použijte @@ , místo jednoho
*.* @@192.168.0.101:514
Na závěr přidejte tyto proměnné v případě, že selže server rsyslog:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Poté restartujte službu rsyslog:
sudo systemctl restart rsyslog
Ověřte protokoly
Po dokončení konfigurace na klientském počítači chceme ověřit, že vše proběhlo v pořádku.
Přejděte na svůj server Rsyslog a ověřte protokoly ze svého klientského počítače:
$ ls /var/log/
Najdete něco takového:
V mém případě je adresář s názvem obrad název mého klientského počítače, který aktuálně používám. Vstoupíme do tohoto adresáře a uvidíme něco takového:
Měli byste vidět všechny soubory protokolu generované Rsyslog.
Kterýkoli z těchto protokolů můžete zkontrolovat pomocí následujícího příkazu:Pojďme například zkontrolovat systemd.log .
$ tail -f /var/log/obrad/systemd.log
A uvidíte něco takového:
2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbus\x2d:1.2\x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.
Jak můžete vidět, spustil jsem na svém klientském počítači úpravu textu terminálu a gedit a vygeneroval Rsyslog a zobrazil to ve výstupu.
Závěr
V tomto tutoriálu jsme se naučili, jak nakonfigurovat základní parametry pro rsyslog pomocí modelu klient-server na Ubuntu 20.04. Dalšími alternativami pro Rsyslog jsou syslog-ng, FluentD, Logstash, GreyLog2 a Logagent, Filebeat.