Tartalomjegyzék

< Linux

Linux naplózás

A naplózásról

A Linux alapú rendszerek fejlett naplózási lehetőségekkel rendelkeznek. Egy Linux rendszeren mindig érdemes belenézni az ilyen fájlokba, mert azok értelmes és logikus feljegyzéseket tartalmaz a rendszer állapotáról, hibáiról, történéseiről.

Mi a naplózás célja?

Mit lehet naplózni?

Programok a naplózás területén

Az első naplózó program a sendmail program kiegészítéseként készült. Hamar jött a gondolat, hogy az egész rendszeren lehetne használni. A neve sylsog lett. Kezdetben minden Linux rendszerre ezt került fel. A syslog hibáinak kiküszöbölésére jött létre a syslog-ng, amit gyorsabbnak és hatékonyabbnak tartanak. A Debian GNU/Linux rendszereken manapság az rsyslog terjedt el, amely kompatibilis a syslog rendszerrel.

Naplózó démonok:

A fent felsorolt démonok mind csomagnevek is a Debian alapú rendszerekben.

Esetleg külső forrásból:

http://metalog.sourceforge.net/

A Debian GNU/Linux rendszerek alapértelmezett naplózó rendszere (2016) a rsyslog.

A programozók rendelkezésre áll egy syslog() nevű függvény, amelyet beépíthetnek a programjukba. A rendszergazdán múlik, hogy a fenti programok közül melyik naplózó rendszer fogadja a naplózásra küldött adatokat.

Naplóba írhatunk:

logger szöveg

A logger /var/log/syslog-ot írja.

Napló elemző:

logcheck

Fájlok

A /var/log/ könyvtár tartalma alapesetben:

# last -f /var/log/btmp
root     tty3                         Sat Oct 29 21:48   still logged in
janos   :0           :0               Tue Oct 25 17:19    gone - no logout 
janos   :0           :0               Wed Oct 19 18:55 - 17:19 (5+22:23)   
janos   :0           :0               Mon Oct 17 21:25 - 18:55 (1+21:30)   
janos   :0           :0               Sun Oct  9 21:12 - 21:25 (8+00:13)   
janos   :0           :0               Sat Oct  8 11:10 - 21:12 (1+10:01)   
janos   :0           :0               Tue Oct  4 19:58 - 11:10 (3+15:12)   
janos   :0           :0               Mon Oct  3 23:35 - 19:58  (20:23)    

btmp begins Mon Oct  3 23:35:15 2016

Egyéb:

Az egyes programok általában saját könyvtárat hoznak létre a naplóállományaik számára.

Üzenetek prioritása

Az üzenetek prioritása:

A napló megtekintése

A tail paranccsal real-time-ban figyelhetjük a naplókat:

tail -f /var/log/syslog

MATE grafikus felületen a mate-system-log programmal tekinthetjük meg a naplófájlokat. A /var/log könyvtár az adm csoportba van. Tegyük a felhasználót ebbe a csoportba.

A mutlitail használata:

multitail -i /var/log/syslog -i /var/log/auth.log

rsyslog

# nano /etc/rsyslog.conf
# ls /etc/rsyslog.d/

Naplózás a 12 teletype-ra:

Szerkesszük az rsyslog.conf fájlt:

mcedit /etc/rsyslog.conf

De készíthetünk egy külön fájlt is:

mcedit /etc/rsyslog.d/50-default.conf

Az rsyslog.conf végére vagy a 50-default.conf fájlba írjuk:

*.*/dev/tty12

Indítsuk újra rsyslog szervert:

/etc/init.d/rsyslog restart

Naplózás más számítógépre:

mcedit /etc/rsyslog.d/50-default.conf

Írjuk bele:

*.* @gépnév

Rotálás

A naplófájlok egy idő után túl nagyok lennének, ha nem lennének időnként letörölve. A naplófájlok rotációban, átnevezésre, majd később tömörítésre kerülnek. Egy idő után pedig törlésre kerülnek.

Ezt a feladatot látja el a logrotate program.

A logrotate program fő beállításai a következő helyen találhatók:

/etc/logrotate.conf

A logrotate beállításai a következő könyvtárban lehet:

/etc/logrotate.d/

A könyvtárban minden program számára készíthetünk egy állományt, amelyben leírjuk a rotációt.

A logger program

A felhasználók a logger paranccsal képesek a syslog fájlba naplózni. Például:

logger üzenet

A felhasználók korlátozása

Bármelyik felhasználó írhat /var/log/syslog fájlba:

logger "Működik a naplózás"

Ezt megteheti név nélkül is, konzolra írással együtt:

logger -p 0 -t kernel "Működik a naplózás"
groupadd log
chmod 660 /dev/log
chown root.log /dev/log

Ezek után csak azok írhatnak a naplóba, akik bele kerültek a log csoportba.

rsyslog naplózószerver

Központi szerver beállítása

A beállítások elvégezhetők a /etc/rsyslog.conf állományban vagy a tetszőleges névvel, .conf kiterjesztéssel létrehozunk magunak egyet a /etc/rsyslog.d könyvtárban.

Hozzunk létre egy logserver.conf állományt:

nano /etc/rsyslog.d/logserver.conf

Tartalma a következő legyen:

$ModLoad imtcp
$InputTCPServerRun 514

$AllowedSender TCP, 127.0.0.1, 192.168.5.0/24, gepnev1, gepnev2.domain
$template LogFiles,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?LogFiles

A beállítás után indítsuk újra a rsyslog szervert:

systemctl restart rsyslog

A %HOSTNAME% helyet IP cím is lehet a könyvtárnév:

$template LogFiles,"/var/log/%fromhost-ip%/%PROGRAMNAME%.log"

Ha megadunk egy gépnevet az $AllowedSender sorban, annak feloldhatónak kell lennie IP címre. Ha DNS szerveren keresztül nem érhető el, akkor állítsuk be az /etc/hosts fájlban.

Kliens beállítása

A beállítások elvégezhetők a /etc/rsyslog.conf állományban vagy a tetszőleges névvel, .conf kiterjesztéssel létrehozunk magunak egyet a /etc/rsyslog.d könyvtárban.

Hozzunk létre egy logserver.conf állományt:

nano /etc/rsyslog.d/logserver.conf

Tartalma a következő legyen:

# Távoli syslog szerver beállítása TCP protokollon
*.* @@192.168.5.1:514

Indítsuk újra az rsyslog szervert:

systemctl restart rsyslog

Figyeljünk a kliens gépnevére (hostname)! A szerveroldalon mindig a kliens gépnevével azonos könyvtárba kerülnek a naplóbejegyzések. A kliens gépnevének állítása után a rsyslogot is indítsuk újra:

hostnamectl set-hostname tenger
systemctl restart rsyslog

Ellenőrzés

Az 514 port ellenőrzése:

ss -ltn

Bejegyzés küldése:

logger "Működik"

A bejegyzésnek szerepelnie kell a kliens syslog állományában és a szerver root.log állományában.

journalctl

A journalctl a systemd naplózórendszer kezelője.

A systemd a naplókat a man systemd-journald szerint az alábbi helyeken tárolhatja:

/run/log/journal/machine-id/*.journal
/run/log/journal/machine-id/*.journal~
/var/log/journal/machine-id/*.journal
/var/log/journal/machine-id/*.journal~

Kérdezzük le, a merevlemezen mennyi helyet foglal a systemd naplója:

journalctl --disk-usage

A kimenet a következőhöz hasonló lehet:

Archived and active journals take up 8.0M in the file system.

A journalctl önmagában kiadva az összes bejegyzést mutatja szűrés nélkül:

journalctl

Lekérdezés egység (Unit) alapján

Egy szolgáltatáshoz tartozó bejegyzések megtekintése:

journalctl _SYSTEMD_UNIT=ssh.service

Másik példa:

journalctl _SYSTEMD_UNIT=avahi-daemon.service

A -u kapcsolóval:

journalctl -u ssh.service

Egy adott program által generált napló:

journalctl /usr/sbin/sshd

PID alapján:

journalctl _PID=7285

A rendszerindítás üzenetei

Az aktuális rendszerindítási üzeneteket a -b kapcsolóval lehet megtekinteni:

journalctl -b

Ha a tartós tárolás be van állítva, akkor megnézhetjük az aktuális előtti rendszerindítási üzeneteket is:

journalctl -b -1

Kettővel ez előtti:

journalctl -b -2

Rendszerindítási azonosítók listázása:

journalctl --list-boots

Időintervallum lekérdezése

Egy órával ez előtt óta:

journalctl --since "1 hour ago"

Két nappal ez előttől:

journalctl --since "2 days ago"

Mettől meddig:

journalctl --since "2018-11-25 20:11:00" --until "2018-11-25 20:35:00"

Adott időpont óta:

journalctl --since "2018-11-25 20:00:00"

Mai napon:

journalctl --since today

Tegnap óta:

journalctl --since yesterday

Tartós tárolás beállítása

A naplófájlok alapértelmezetten csak a memóriában tárolódnak:

/run/log/journal/<gép_azonosító>/system.journal

A tartós tárolásról külön gondoskodni kell. Ehhez szerkeszteni kell a journald.conf beállításait:

nano /etc/systemd/journald.conf

A journald.conf fájlban minden beállítás a [Journal] szekcióban található.

Az első tulajdonásg a Storage:

Storage=

Értékei a következő lehetnek:

Az auto beállítás esetén akkor történik tárolás, ha van hely.

Az autóbeállításhoz fájlok, könyvtárak létrehozása:

mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald

Folyam és vég figyelése

journalctl -f
journalctl -u ssh.service -f

Az utolsó 5 sor mutatása:

journalctl -n 5 -u ssh.service

Szűrés prioritás alapján

Prioritások:

journalctl -p err
journalctl -p 1..4
journalctl -p emerg..warning

Kimenet formálása

Formázási lehetőségek:

journalctl -b -u ssh.service -o cat

Üzenetcsoportok

Kernelmag üzenet:

journalctl -k

Boot üzenet:

journalctl -b

Minden üzenet:

journalctl -a

Rotálás

journalctl --rotate

Átirányítás

journalclt --no-pager > uzenetek.txt

Fájlok törlése

A napló mérete 1 G lehet:

journalctl --vacuum-size=1G

1 év naplójának megtartása:

journalctl --vacuum-time=1years

Megadható mértékegységek:

Szűrés felhasználók alapján

Tegyük fel, hogy a sshd démonra vagyunk kíváncsi. Derítsük ki az sshd felhasználó belső azonosítóját:

id sshd

A kimenet ehhez hasonló lehet:

uid=116(sshd) gid=65534(nogroup) csoportok=65534(nogroup)

Ezek után napló megtekintése:

journalctl _UID=116

multitail

apt install multitail
multitail /var/log/syslog /var/log/daemon.log

Naplófájl nézegető.

Telepítés:

apt install lnav

Használatra példa:

lnav

vagy:

lnav /var/log/syslog /var/log/daemon.log

less

Megnyitunk egy fájl:

less /var/log/auth.log

Ezek után bekapcsoljuk a folyamatos módot:

Shift + F

De indíthatjuk azonnal ebben a módban:

less +F /var/log/auth.log

tail + grep

A tail -f vagy a tailf parancs nagyszerű eszköz egy állomány változásainak folyamatosa figyelésére. A kimenet szűrhető is a grep paranccsal. A következőkben olyan üzeneteket keresünk, ahol janos, mari vagy kati szerepel az üzenetsorban.

tail -f /var/log/auth.log | grep -E '(janos|mari|kati)'

A -v kapcsolóval most megfordítjuk az illeszkedést. Azt adjuk meg, milyen sorokat nem szeretnénk látni:

tail -f /var/log/auth.log | grep -Ev '(janos|mari|kati)'

A grep -E kapcsoló helyett használható a egrep parancs is. A tail -f parancs helyett használható a tailf parancs is.

Debian 12

A Debian 12-ben a syslog helyett systemctl veszi át a szerepet.

A naplófájlok megtekintése:

jornalctl -f

Függelék

dmesg

A kernel ring bufferbe a kernel írja az üzeneteit. Magunk is írhatunk ebbe a naplóba a megfelelő eszköz ismeretében.

Írás a dmesg naplóhoz:

echo üzenet > /dev/kmsg

Források