GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit konfiguraci centralizovaného protokolování Rsyslog

Protokoly jsou kritickou součástí aplikací a serverové infrastruktury, ale jejich analýza může být náročná, pokud jsou všude přeplněné. Proč nevytvořit centralizovaný systém protokolování? Rsyslog může být právě to, co hledáte!

Centralizovaný systém protokolování vám umožňuje shromažďovat protokoly z více serverů/aplikací na centrální protokolový server. A v tomto tutoriálu se dozvíte, jak nastavit centralizované protokolování pomocí konfigurace Rsyslog na serverech Linux.

Připravte se a skočte do toho!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud chcete pokračovat, ujistěte se, že máte následující:

  • Dva nebo více serverů Linux – Tento výukový program používá tři servery Debian 11 s názvem central-rsyslog , klient01 a client02 .
  • Uživatel s právy sudo/root na všech serverech.

Kontrola služby Rsyslog na všech serverech

Rsyslog je vysoce výkonné zpracování protokolů pro distribuci Linuxu, které je standardně instalováno v distribucích založených na Debianu a RHEL.

Rsyslog je spolehlivá a rozšířená verze protokolu Syslog s dalšími moderními funkcemi. Těmito dalšími funkcemi jsou více vstupů a výstupů, modulární a bohaté možnosti filtrování.

V době psaní tohoto článku je nejnovější verze Rsyslog v8.2112.0. Budete tedy kontrolovat nainstalovanou verzi Rsyslog ve vašem systému a stav služby Rsyslog. Tím zajistíte, že získáte nejnovější funkce Rsyslog a že Rsyslog bude fungovat bez problémů.

1. Otevřete svůj terminál, přihlaste se ke všem serverům a spusťte sudo su příkaz níže, abyste získali oprávnění root. Po zobrazení výzvy zadejte heslo pro svého uživatele.

sudo su

2. Dále spusťte rsyslogd příkaz ke kontrole verze Rsyslog nainstalované ve vašem systému.

Ujistěte se, že máte v systému Rsyslog v8.xxx, protože některé konfigurace jsou dostupné pouze na Rsyslog v8.xxx.

# checking rsyslog version
rsyslogd -v

Jak vidíte níže, systém Debian 11 je dodáván s výchozím Rsyslog v8.2102.0.

3. Nakonec spusťte systemctl příkaz níže k ověření služby Rsyslog. Ujistěte se, že služba Rsyslog je active (running) .

# verify rsyslog service status
sudo systemctl status rsyslog

Jak můžete vidět níže, služba Rsyslog je aktivní (běží).

Konfigurace Rsyslog pro centralizované protokolování

Nyní, když máte spuštěnou nejnovější verzi Rsyslog, je čas nastavit centralizované protokolování pomocí konfigurace Rsyslog na central-rsyslog server.

Chcete-li nastavit centralizované protokolování, povolte vstupní modul Rsyslog UDP imudp a vytvořte šablonu Rsyslog pro příjem zpráv protokolu z jiných serverů. imudp vstupní modul poskytuje možnost pro central-rsyslog server přijímat zprávy Syslog prostřednictvím protokolu UDP.

1. Upravte konfigurační soubor Rsyslog (/etc/rsyslog.conf ) pomocí preferovaného editoru a aktivujte konfiguraci zobrazenou na obrázku níže, poté uložte změny a ukončete editor.

V tomto výukovém programu odkomentujte každou konfiguraci, abyste ji povolili odstraněním znaku # na začátku každého řádku.

Tato konfigurace umožňuje, aby vstupní modul imudp běžel na výchozím portu UDP 514.

2. Dále vytvořte novou šablonu Rsyslog (/etc/rsyslog.d/50-remote-logs.conf ) pomocí preferovaného editoru a naplňte šablonu konfigurací níže. Uložte změny a ukončete editor.

Tato šablona Rsyslog níže povoluje central-rsyslog serveru pro ukládání protokolů ze vzdálených serverů do adresáře /var/log/remotelogs/.

# define template for remote loggin
# remote logs will be stored at /var/log/remotelogs directory
# each host will have specific directory based on the system %HOSTNAME%
# name of the log file is %PROGRAMNAME%.log such as sshd.log, su.log
# both %HOSTNAME% and %PROGRAMNAME% is the Rsyslog message properties
template (
    name="RemoteLogs"
    type="string"
    string="/var/log/remotelogs/%HOSTNAME%/%PROGRAMNAME%.log"
)

# gather all log messages from all facilities
# at all severity levels to the RemoteLogs template
*.* -?RemoteLogs

# stop the process once the file is written
stop

3. Spuštěním níže uvedených příkazů vytvořte nový adresář protokolu (/var/log/remotelogs/ ) ve vlastnictví root uživatel s adm skupina. Díky tomu může služba Ryslog zapisovat protokoly do /var/log/remotelogs adresář.

# create /var/log/remotelogs/ directory
mkdir -p /var/log/remotelogs/

# change the ownership to root:adm
sudo chown -R root:adm /var/log/remotelogs/

4. Nyní spusťte rsyslogd příkazy níže k ověření konfigurací Rsyslog (/etc/rsyslog.conf/etc/rsyslog.d/50-remote-logs.conf ).

Po úpravě konfigurace Rsyslog vždy zkontrolujte a ověřte konfiguraci Rsyslog, abyste se ujistili, že v konfiguraci nedochází k chybě.

# verify /etc/rsyslog.conf
rsyslogd -N1 -f /etc/rsyslog.conf

# verify /etc/rsyslog.d/50-remote-logs.conf
rsyslogd -N1 -f /etc/rsyslog.d/50-remote-logs.conf

Pokud nedojde k žádné chybě, dostanete výstup podobný tomu níže.

5. Po ověření konfigurací spusťte níže uvedený příkaz na restart rsyslog servis a použijte nové konfigurace.

Služba Rsyslog již běží s povoleným vstupním modulem imudp a otevřeným výchozím portem UDP 514 pro protokol Syslog. central-rsyslog server je nyní připraven přijímat zprávy protokolu od jiných hostitelů.

# restart rsyslog
sudo systemctl restart rsyslog

6. Nakonec spusťte ss níže, abyste ověřili otevřené porty ve vašem systému.

# check open ports
ss -plntu

Níže můžete vidět, že služba Rsyslog s povoleným vstupním modulem imudp běží na výchozím portu UDP 514.

Odesílání protokolů na centralizovaný server Rsyslog

Nyní jste nakonfigurovali centralizovanou správu protokolů pomocí konfigurace Rsyslog v central-rsyslog server. Jak ale znáte central-rsyslog server přijímá logy? Protokoly budete posílat vzdáleně na centralizovaný server Rsyslog (central-rsyslog ) povolením a konfigurací výstupního modulu Rsyslog na klientském počítači.

V této ukázce klientský počítač (s názvem hostitele client01) používá výstupní modul Rsyslog omfwd k odeslání protokolů do central-rsyslog server.

 omfwd module je vestavěný modul, který zpracovává zprávy/protokoly prostřednictvím šablon Rsyslog. Modul pak přenáší zprávy různým cílům přes UDP a TCP pomocí akčního objektu Rsyslog.

1. Přejděte na klient01 zařízení k nastavení a odeslání protokolů do central-rsyslog server.

2. Vytvořte novou konfiguraci Rsyslog (/etc/rsyslog.d/20-forward-logs.conf ) pomocí preferovaného editoru a vyplňte následující konfiguraci.

Tato konfigurace formátuje zprávy protokolu pomocí šablony SendRemote a předává zprávy protokolu prostřednictvím protokolu UDP do cílového central-rsyslog server (172.16.1.10). Ujistěte se, že jste změnili IP adresu s IP adresou vašeho centrálního serveru Rsyslog.

Šablona Rsyslog je konstrukce vlastností zpráv Rsyslog, které určují formáty zpráv protokolu. V dokumentaci k šabloně Rsyslog naleznete různé typy šablon.

# process all log messages before sending
# with the SendRemote template
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# forward log messages using omfwd module
# to the target server 172.16.1.10
# via UDP porotocol on port 514
# log messages is formatted using the SendRemote template
# setup queue for remote log
action(
    type="omfwd"
    Target="172.16.1.10"
    Port="514"
    Protocol="udp"
    template="SendRemote"

    queue.SpoolDirectory="/var/spool/rsyslog"
    queue.FileName="remote"
    queue.MaxDiskSpace="1g"
    queue.SaveOnShutdown="on"
    queue.Type="LinkedList"
    ResendLastMSGOnReconnect="on"
)

# stop process after the file is written
stop

3. Dále spusťte níže uvedený rsyslogd příkaz k ověření konfigurace Rsyslog a zajištění, aby nedošlo k chybě.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/20-remote-logs.conf

4. Spusťte systemctl příkazem níže restartujte službu Rsyslog a použijte novou konfiguraci.

# restart rsyslog on client01 machine
sudo systemctl restart rsyslog

5. Nyní se vraťte zpět do central-rsyslog serveru k ověření protokolů od client01 stroj.

Spuštěním níže uvedených příkazů přejděte do adresáře /var/log/remotelogs a vypište soubory a adresáře v tomto adresáři, abyste ověřili client01 adresář existuje.

# navigate to /var/log/remotelogs directory
cd /var/log/remotelogs/
# checking available directories
ls -lah

Níže můžete vidět, že adresář client01 existuje v /var/log/remotelogs adresář.

6. Spusťte každý níže uvedený příkaz pro přepnutí na client01 adresář a seznam (ls -lah ) soubory protokolu v adresáři.

# navigate to client01 directory
cd client01/
# checking files inside client01 directory
ls -lah

Centralizovaný systém protokolování pomáhá správcům analyzovat data protokolů ze stovek serverů na jednom počítači.

Vyberte jeden z protokolů, které chcete zobrazit a analyzovat.

7. Nakonec spusťte cat příkazem níže zobrazíte obsah cílového protokolu. Nahraďte logfile s názvem souboru protokolu, ale tato ukázka vrací obsah sshd.log soubor.

cat logfile

Níže můžete vidět protokoly od client01 počítač uložený v sshd.log soubor na serveru Rsyslog (central-rsyslog ).

Zatím jste viděli, že centralizovaný systém protokolování zvyšuje bezpečnost souborů protokolů, protože kdykoli jsou aplikace/servery ukončeny, soubory protokolu máte stále na centrálním serveru.

Odesílání protokolů specifického programu na server Rsyslog

Právě jste odeslali všechny protokoly aplikací z client01 počítače na centrální server Rsyslog (central-rsyslog ). Ale co když potřebujete pouze specifické protokoly aplikací, například ssh nebo su ? Implementujte řídicí strukturu Rsyslog rainerscript na objektu akce Rsyslog.

Tato ukázka používá client02 stroj k odesílání protokolů sshd pouze na server Rsyslog (central-rsyslog ).

1. Přejděte na client02 zařízení k nastavení a odeslání protokolů do central-rsyslog server.

2. Vytvořte novou konfiguraci Rsyslog (/etc/rsyslog.d/50-sshd.conf ) pomocí preferovaného editoru a vyplňte následující konfiguraci.

Tato konfigurace níže pouze předává protokoly pro aplikaci (název programu) s názvem sshd na server Rsyslog (172.16.1.10). Zprávy protokolu jsou také formátovány šablonou SendRemote.

# create new Rsyslog tempate for formatted logs
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# implementation of if conditional on rsyslog
# to send specific logs for programname sshd
# stop the process after sending logs
if $programname == "sshd" then {
        action(type="omfwd" target="172.16.1.10" port="514" protocol="udp" template="SendRemote")
        stop
}

3. Dále spusťte rsyslogd níže, abyste ověřili konfiguraci Rsyslog a zajistili, že nedochází k chybě.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-sshd.conf

4. Spuštěním níže uvedeného příkazu restartujte službu Rsyslog, použijte novou konfiguraci a odhlaste se z client02 server vygenerovat nový sshd log.

V tuto chvíli server central-rsyslog obdržel pouze protokol sshd namísto všech systémových protokolů.

# restart rsyslog service
sudo systemctl restart rsyslog

5. Nyní se vraťte zpět do central-rsyslog serveru k ověření protokolů od client02 stroj.

Spuštěním níže uvedených příkazů zobrazíte (ls -lah) dostupné soubory protokolu v adresáři /var/log/remotelogs/.

# navigate to /var/log/remotelogs/
cd /var/log/remotelogs/
# verify log directory for client02
ls -lah

Jak vidíte níže, existuje nový adresář s názvem client02 , který ukládá zprávy protokolu od client02 stroj.

6. Spuštěním níže uvedených příkazů přejděte na client02 a ověřte dostupné soubory protokolu v tomto adresáři.

cd client02/
ls -lah

Zobrazí se soubor protokolu sshd.log pro název programu sshd. Také spusťte příkaz cat pro zobrazení obsahu souboru protokolu sshd.log.

Níže můžete vidět pouze jeden dostupný soubor protokolu, soubor sshd.log, protože jste použili konfiguraci /etc/rsyslog.d/50-sshd.conf.

7. Nakonec spusťte cat příkaz níže pro zobrazení a analýzu sshd.log soubor.

cat sshd.log

Odesílání protokolů převedených pomocí zpráv Syslog na server Rsyslog

Zatím jste viděli, jak posílat protokoly na váš server Rsyslog, a to je dost dobré. Možná však dáváte přednost tomu, aby vaše protokoly byly ve formátu zpráv Syslog, aby byly snazší číst a analyzovat. Pokud ano, použijte Rsys imfile vstupní modul to udělá.

imfile vstupní modul umožňuje převést jakékoli textové zprávy/logy do formátu zpráv Syslog. A v této ukázce odešlete protokoly webového serveru Apache2 z client01 počítače na server Rsyslog (central-rsyslog ).

Kombinace vstupního modulu Rsyslog (imfile ) s výstupním modulem (omfwd ) vám umožňuje posílat jakékoli protokoly konvertované ze zpráv Syslog na server Rsyslog (central-rsyslog ).

1. Přejděte zpět na klient01 počítači, vytvořte novou konfiguraci Rsyslog /etc/rsyslog.d/50-apache2.conf a vyplňte následující konfiguraci. Nezapomeňte změnit název šablony, název sady pravidel a vstupní soubor pro vaše protokoly.

Níže uvedená šablona převede protokoly Apache do formátu zpráv Syslog pomocí modulu imfile a odešle tyto protokoly na server Rsyslog (172.16.1.10).

# deifne global workDirectory for saving the state file of log messages.
global(workDirectory="/var/spool/rsyslog")

# enable the Rsyslog imfile module processing text files or logs.
module(load="imfile" PollingInterval="10")

# define template for apache2 for processing log messages.
# that will be forwarded to rsyslog server
template(
    name="TestLog"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
    )

# define ruleset "ApacheLogs" with action object to send logs to rsyslog server
# define the queue
ruleset(name="ApacheLogs") {
    action(
        type="omfwd"
        target="172.16.1.10"
        port="514"
        protocol="udp"
        template="TestLog"

        queue.SpoolDirectory="/var/spool/rsyslog"
        queue.FileName="remote"
        queue.MaxDiskSpace="1g"
        queue.SaveOnShutdown="on"
        queue.Type="LinkedList"
        ResendLastMSGOnReconnect="on"
        )
        stop
}

# define input files Apache2 logs to send to the Rsyslog server
# and apply ruleset "ApacheLogs"
input(type="imfile" ruleset="ApacheLogs" Tag="apache2" File="/var/log/apache2/*.log")

2. Dále spusťte rsyslogd příkaz níže pro ověření /etc/rsyslog.d/50-apache2.conf konfigurace.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-apache2.conf

3. Spusťte systemctl příkaz níže na restart rsyslog servis a použijte nové konfigurace. V tomto okamžiku se všechny Apache2 přihlásí na client01 počítač bude předán na server Rsyslog (central-rsyslog ).

# restart rsyslog service
sudo systemctl restart rsyslog

4. Nyní spusťte curl příkaz níže pro vygenerování protokolů Apache2. Tento příkaz vygeneruje nové zprávy protokolu Apache2 do souboru /var/log/apache2/access.log .

# generate a new log for Apache
# by accessing via curl command
curl localhost
curl localhost/testnotfound

5. Přejděte zpět na server Rsyslog (central-rsyslog ) a spuštěním níže uvedených příkazů přejděte na /var/log/remotelogs/client01 seznam dostupných souborů protokolu adresářů.

# navigate to the directory /var/log/remotelogs/client01/
cd /var/log/remotelogs/client01/
# check available log files
ls -a

Níže můžete vidět, že server Rsyslog (central-rsyslog ) obdržel soubor apache.log od client01 stroj.

6. Nakonec spusťte cat příkaz k zobrazení obsahu souboru protokolu apache2.log .

# showing the content of apache2.log file
cat apache2.log

Pokud /etc/rsyslog.d/50-apache2.conf funguje, uvidíte obsah souboru protokolu ve formátu zprávy Syslog, jako je ten níže.

Závěr

V tomto tutoriálu jste se naučili, jak nastavit centralizované protokolování s konfigurací Rsyslog. Logy serverů jste také odeslali vzdáleně na centralizovaný server Rsyslog pomocí různých typů vstupních a výstupních pluginů Rsyslog. Nyní už nemusíte hledat protokoly na různých místech kromě vašeho serveru Rsyslog.

Jak jinak plánujete používat Rsyslog? Možná začít zkoumat další vstupní a výstupní moduly Rsyslog? Nebo integrovat Rsyslog do jiného logovacího systému, jako je Fluentd a Logstash?


Linux
  1. Nainstalujte centralizovaný server protokolů s Rsyslog v Debianu 9

  2. Jak použít rsyslog k vytvoření serveru pro agregaci protokolů Linux

  3. Jak nastavit server centralizovaného protokolování pomocí Rsyslog

  1. Jak nastavit rsyslog pro centralizovanou správu protokolů

  2. Jak vytvořit subdoménu

  3. Jak vytvořit odkaz na adresář

  1. Jak povolit protokolování dotazů MySQL/MariaDB

  2. Jak vytvořit Git Tagy

  3. Jak nakonfigurovat vzdálené protokolové servery s rsyslog?