2019. február 8., péntek

Távoli naplózás hostonként külön fájlba rsyslogd-vel Debian 9 Stretch-en

Jó három és fél éve már volt egy videósorozatom, benne egy videóval, ami a központi naplózószerver kialakítását mutatta be rsyslog használatával. Azóta sem változott sokat a dolog, de most azért egy fokkal tovább lépünk: megoldjuk, hogy az egyes eszközök üzenetei külön fájlba (is) kerüljenek.

Kezdjük azzal, hogy van két géped, amik látják egymást a hálózaton. Legyen a leendő logszerver a 192.168.0.1, a kliens a 192.168.0.2
A kliensen írsz az /etc/rsyslog.conf -ba ilyet, úgy a 61. sorba:
*.*    @192.168.0.1
Azaz minden facility minden szintű üzenetét átküldöd a szerverre. Ha az IP előtt egy kukac van, akkor UDP-n, ha kettő, akkor TCP-n. Kell még egy
root@deb9client:~# systemctl restart rsyslog.service
és a kliens küldeni fogja az üzeneteket.
Lássuk a szerveroldalt, túrjunk bele itt is az /etc/rsyslog.conf -ba! Szedjük ki a kettőskeresztet a
#module(load="imudp")
#input(type="imudp" port="514"
sorok elől. Persze, ha UDP-t szeretnénk. Ha a TCP dobogtatja meg a szívünket, akkor a konfigfájlban két sorral lejjebb a haverunk.

Ha most nyomunk egy laza
root@deb9logsvr:~# netstat -tulpn

parancsot, akkor jól látszik, hogy az rsyslog nem fogja még az 514-es portot, mert ugye még nem indítottuk újra a démont. A fenti systemctl parancs megoldja a helyzetet.
A kliensen kiadott logger valami parancs eredménye megjelenik a szerverünk syslog-fájlájban is.

Ha Cisco eszközeink vannak szanaszét, ők hajlamosak a local7 facility használatával küldeni a log-üzeneteiket,már ha be van állítva náluk... Ha ezeket egy fájlba gyűjtenénk, akkor a
local7.*                        -/var/log/cisco.log
sort vegyük fel a szerveren az rsyslog.conf fájlba. A mínuszjel a fájl előtt azt jelenti, hogy az rsyslog-nak nem kell mindenáron minden üzenet után azonnal háttértárra írni a fájlt, hanem ráér nagyobb adagokat gyorsítótárazni és egyben leírni - ezzel nyilván csökkentjük a szerver terhelését.

Ha pedig szeretnénk külön fájlba terelni az egyes hosztokról érkező logüzeneteket, akkor a
if $fromhost-ip=='192.168.0.2' then /var/log/kliens-192.168.0.2.log
& ~
típusú bejegyzéseket kell tennünk az rsyslog.conf fájlba. Egy friss Debian-telepítésen én a RULES rész elejére, nagyjából az 58. sor környékre írnám ezt. A fenti bejegyzés két sor, és az & ~ azt jelenti, hogy ha a fölötte lévő sor illeszkedett a beérkezett logüzenetre, akkor írja oda, ahova az a sor mondja, és utána felejtse el. Ilyenkor a későbbi szabályok nem játszanak, máshova nem íródik be az üzenet. Ha ez az & ~ nincs ott, akkor az üzenet beíródik ide és még ahova a többi szabály szerint kell neki.

Ha pedig egyes IP-csoportokat szeretnénk szétválogatni, mondjuk a 2. emeleten mindenkinek 192.168.2-vel kezdődik az IP-je, akkor azoknál a fenti szabályban lévő == helyett a startswith operátort használjuk:
if $fromhost-ip startswith '192.168.2.' then /var/log/emelet2.log

Pá.

Nincsenek megjegyzések: