A Logrotate a legtöbb Linux disztribúcióra előre telepített szoftver, amely lehetővé teszi a naplófájlok hosszú távú mentésének és szervezésének kezelését.
A rendszerben lévő alkalmazások gyakran rögzítik a lemez műveleteinek vagy problémáinak naplóját. Ha ezeket rendszeres időközönként nem törli, akkor ezek a fájlok növekedhetnek, megtölthetik a lemezt, és meghibásodásokat okozhatnak.
A Logrotate a legelterjedtebb megoldás a naplófájlok időszakos ellenőrzésére és azok rotációjának, tömörítésének és megszüntetésének automatikus kezelésére, ha egy bizonyos méretet és / vagy időtartamot túllépnek.
Alap konfigurációs lépések
A Logrotate lehetővé teszi néhány alapvető paraméter definiálását, amelyeket a fájl összes következő konfigurációja használni fog az /etc/logrotate.conf elérési útvonalon:
# Set a weekly rotation
weekly
# Set the number of rotations to save
rotate 4
# make new log file
create
# Include all configurations files
include /etc/logrotate.d
A logrotate.conf ebben a kivonatában az összes fent leírt paraméter alkalmazása mellett az /etc/logrotate.d könyvtárban található összes konfiguráció elolvasása is ajánlott. Ezzel feloszthatja az egyes konfigurációkat alkalmazás és/vagy kontextus szerint.
A Logrotate konfigurációk meghatároznak egy vagy több fájlhoz tartozó szabálykészletet:
[FILE] [FILE?] [FILE?] {
[SETTINGS]
}
Klasszikus példa a / var / log / messages konfigurációjára:
/var/log/messages {
# Save 5 rotations
rotate 5
# Rotating files every week
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
A fenti példában csak az üzenetfájlt vesszük figyelembe, és annak rotációját minden héten, p értékre legfeljebb 5-re állítjuk be. Ezért az ötödik rotáció végén a naplófájlok:
-rw-r----- 1 root adm 1215 Jul 29 06:47 messages
-rw-r----- 1 root adm 3895 Jul 28 06:49 messages.1
-rw-r----- 1 root adm 454 Jul 21 06:37 messages.2.gz
-rw-r----- 1 root adm 506 Jul 15 06:40 messages.3.gz
-rw-r----- 1 root adm 456 Jul 7 06:41 messages.4.gz
A legfontosabb beállítások közül néhány:
-
daily, monthly, weekly, yearly: jelzi, hogy milyen gyakran kell rotálni a naplófájlt,
-
compress, nocompress: tömöríteni kell-e a régi fájlrotációkat,
-
maxage: hány nap után szűnnek meg a régi rotációk,
-
size: csak akkor állítja be a rotációt, ha a jelzett fájlok nagyobbak, mint a megadott méret. Az utótagokkal lehet megjelölni a méret formátumát (pl. "K" kilobájt, "M" megabájt esetén),
-
rotate: a rotált naplók száma, amelyeket menteni kell, mielőtt véglegesen eltávolítanák őket. Ha 0-ra van állítva, akkor a naplófájlok rotáció nélkül törlődnek.
Abban az esetben, ha ugyanazokat a szabályokat akarja beállítani több fájlhoz, több útvonalat is hozzáfűzhet, vesszővel elválasztva őket. Például:
/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
…
}
Ezt a konfigurációt a custom_log fájl, az alternative_log fájl és egy another_log számára kell használni.
Alternatively you can use file masks such as:
/var/custom/logs/*, /var/log/custom_log {
# This configuration will rotate all the files in the directory.
# /var/custom/logs/* e il file /var/log/custom_log
...
}
A dateext beállítás használata
A dateext beállítás lehetővé teszi a rotálás dátumának hozzáadását a fájl nevéhez, így a naplók adatai könnyen felismerhetők.
/var/log/custom.log {
size 100M
dateext
rotate 3
compress
maxage 100
}
A fenti konfiguráció archiválja a custom.log fájlt, amint eléri a 100 MB-ot, legfeljebb háromszor, vagy 100 nap elteltével. A tömörítés opcióval az archivált fájl tömörítésre kerül gzip formátumban is.
A rotálása után, a fájlneveken az alábbi dátum lesz látható:
# ls /var/log
-rw-r--r-- 1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz
-rwxrwxrwx 1 user user 0 2019-06-09 22:11 custom.log
Naplók e-mailezése
A Logrotate lehetővé teszi testreszabott parancsfájlok futtatását bizonyos események bekövetkezésekor, például minden log rotálás után, a postrotate / endcript kulcsszavak használatával.
Az egyik lehetséges felhasználás lehet a naplók elküldése e-mailben a rotálás befejezésekor. A folytatáshoz először hozzon létre egy szkriptet, amely elküldi a fájlokat az e-mail címére:
#!/bin/bash
# Get all logs
tar -cvf /tmp/logpack.tar /var/log/messages*
# Send logs as attachment
echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar
Mentse a fenti fájlt a saját könyvtárába, például /home/map.com felhasználónév_s // endend.sh módon, és győződjön meg róla, hogy engedélyezte a szükséges hozzáféréseket:
# sudo chmod u+x /home/user/sendlog.sh
Most szerkessze a logrotate konfigurációs fájlt az alábbiak szerint:
/var/log/messages {
...
postrotate
…
/home/user/sendlog.sh
endscript
}
A módosítások alkalmazásához mentse a konfigurációt.
Miután elkészült, minden egyes log fájl rotálásakor e-mailt kap a fent leírt naplóarchívummal.