Naplófájlok forgatása és tömörítése a Logrotate programmal (2. oldal)

botond küldte be 2019. 04. 17., sze – 23:35 időpontban

A 2. oldal tartalma

 

Folytatás

A Logrotate program segítségével automatizáltan forgathatjuk és tömöríthetjük a különböző szolgáltatásaink által generált naplófájlokat. Az első oldalon megsimerhettük a Logrotate alapvető beállításait, ezen az oldalon pedig saját példákkal folytatjuk a programmal való ismerkedést.

 

 

Használata

Ebben a fejezetben két saját, életszerű példán keresztül állítjuk be az opcionálisan telepített PHP rendszer PHP-FPM által generált naplófájlok forgatását.

PHP 7 naplófájl forgatása

Az első példában egy korábbi Debian 8 (Jessie) tökéletes szerverre került opcionálisan feltelepítve egy 7.1-es PHP rendszer, aminek a PHP-FPM naplófájlját fogjuk forgatni. Ezen a szerveren az alapértelmezett PHP az 5.6, ami szabályosan csomagból került feltelepítésre, így annak a naplófájl forgatása már meg van oldva. Viszont az utána forrásból lefordított és feltelepített PHP 7.1-hez magunknak kell ezt megoldanunk. Ez érvényes lehet más PHP verziókra is, amit forrásból  fordítottunk le.

Elsőként lépjünk be a logrotate.d könyvtárába:

cd /etc/logrotate.d/

Majd hozzunk létre egy beállító fájlt a forgatáshoz:

nano php-7.1-fpm
Itt mindegy hogy milyen fájlnevet használunk, de törekedjünk arra, hogy később sem keverjük össze mással, tehát célszerű olyan nevet választani, ami utal rá, hogy minek a beállításait tartalmazza.

Ezután tegyük bele a következő tartalmat:

/opt/php-7.1/var/log/php-fpm.log {
        rotate 14
        daily
        compress
        delaycompress
        missingok
        notifempty
		postrotate
			/bin/kill -SIGUSR1 `cat /opt/php-7.1/var/run/php-fpm.pid 2>/dev/null` 2>/dev/null || true
		endscript
}

Itt a fenti paraméterek már ismerősek, valamint van benne egy postrotate rész is, ami a forgatás után a PHP-FPM pid fájljából kiolvasott processz ID-jű folyamattól (ami a php-7.1-fpm mester processz) kér egy naplófájl újranyitást.

Érdekességképpen itt találhatunk erről további részleteket, hogy a PHP-FPM eseménykezelője hogyan működik, amikor egy ilyen SIGUSR1 signal-t kap.

Ha a PHP fordításakor a php-fpm.conf fájlban más pid fájl elérési útvonalat állítottunk be, akkor természetesen azt használjuk.

Újraindítani nem kell semmit, ha lementettük a beállító fájlt, akkor utána már a Logrotate teszi a dolgát.

Ha mindent jól csináltunk, akkor a /opt/php-7.1/var/log könyvtárunk (vagy ahova telepítettük a PHP-t) valahogy így fog kinézni néhány nap múlva:

-rw------- 1 root root    0 ápr    2 06:25 php-fpm.log
-rw------- 1 root root  212 ápr    2 06:25 php-fpm.log.1
-rw------- 1 root root  238 márc  28 06:25 php-fpm.log.2.gz
-rw------- 1 root root 8,1K márc  27 06:25 php-fpm.log.3.gz

PHP 5 naplófájl forgatása

Ebben a példában pedig fordított felállásban, egy Debian 9 (Stretch) tökéletes szerverre forrásból lefordított és opcionálisan feltelepített PHP 5.6-os rendszer PHP-FPM naplófájlját forgatjuk a Logrotate segítségével.

Ezen a szerveren az alapértelmezett PHP verzió a 7.0, így ennek a naplófájljainak forgatását a csomagból történt telepítés során a rendszer már beállította.

Itt is lépjünk be a logrotate beállításokat tartalmazó könyvtárába:

cd /etc/logrotate.d/

És hozzunk létre egy fájlt:

nano php-5.6.40-fpm

Majd tegyük bele az alábbi tartalmat:

/opt/php-5.6.40/var/log/php-fpm.log {
    rotate 14
    daily
    compress
    delaycompress
    missingok
    notifempty
        postrotate
            /bin/kill -SIGUSR1 `cat /opt/php-5.6.40/var/run/php-fpm.pid 2>/dev/null` 2>/dev/null || true
        endscript
}

A fájl tartalma itt is ugyanaz, mint az előző példában, csak a naplófájl elérési útja, illetve a pid fájl útvonala változik. A fájl lementése után itt is hasonlóan elindul a php-fpm naplófájl forgatása, ami a fentebbi példához hasonló naplófájlstruktúrát eredményezi.

 

 

Tesztelés

Ha szeretnénk meggyőződni arról, hogy a friss beállításunk megfelelően működik, van lehetőség a tesztelésre is. Ehhez futtassuk az alábbi parancsot, miután lementettük új beállításunkat:

/usr/sbin/logrotate -vdf /etc/logrotate.d/<beállítófájl>

Ahol a kapcsolók:

  • v: Bőbeszédű mód, mindent kiír
  • d: Debug mód. Ilyenkor csak szimulálja hogy mit csinálna a következő forgatási ciklusban
  • f: Force mód, kikényszeríti a forgatást akkor is, ha éppen nem lenne szükséges a beállítások alapján.

Ha pedig valóban le szeretnénk futtatni a forgatást, akkor hagyjuk ki a -d kapcsolót:

/usr/sbin/logrotate -vf /etc/logrotate.d/<beállítófájl>

Ekkor már létre is jön az újabb naplófájl.

 

Konklúzió

Ezzel a kis egyszerű, ám annál hasznosabb programmal rendben tarthatjuk naplófájljainkat, így nem maradunk le semmilyen eseményről. Ha feltelepítünk egy újabb szolgáltatást a szerverre, akkor célszerű rögtön a telepítés után utánajárni, hogy van-e már Logrotate beállítása. Ha nincs, akkor ilyen könnyen beállíthatjuk.

 

 

Lapozó

Ez a leírás több oldalból áll: