Kuidas logi pööramist seadistada ja hallata, kasutades Linuxis rakendust Logrotate


Linuxi süsteemi üks huvitavamaid (ja võib-olla ka kõige olulisemaid) katalooge on /var/log . Failisüsteemi hierarhia standardi kohaselt kirjutatakse enamiku süsteemis töötavate teenuste tegevus selles kataloogis või mõnes selle alamkataloogis olevasse faili.

Selliseid faile nimetatakse logideks ja need on võti süsteemi toimimise (ja kuidas see on varem käitunud) uurimiseks. Logid on ka esimene teabeallikas, kuhu administraatorid ja insenerid veaotsingu ajal vaatavad.

Kui vaatame CentOS/RHEL/Fedora ja Debiani/Ubuntu (mitmekesisuse jaoks) kataloogi /var/log sisu, näeme järgmisi logifaile ja alamkatalooge.

Pange tähele, et tulemus võib teie puhul olla mõnevõrra erinev, sõltuvalt teie süsteemis (süsteemides) töötavatest teenustest ja nende töötamise ajast.

# ls /var/log
# ls /var/log

Mõlemal juhul võime täheldada, et osa loginimedest lõpeb ootuspäraselt\"log" -ga, teised aga kas nimetatakse ümber kuupäeva kasutades (näiteks maillog-20160822 CentOS-is) või tihendatakse (arvestage auth.log.2. gz ja mysql.log.1.gz Debianis).

See pole valitud levitamisel põhinev vaikekäitumine, kuid seda saab soovi korral muuta konfiguratsioonifailides olevate käskude abil, nagu näeme selles artiklis.

Kui logisid hoitakse igavesti, täidavad need lõpuks failisüsteemi, kus/var/log asub. Selle vältimiseks saab süsteemiadministraator logide perioodiliseks puhastamiseks kasutada kena utiliiti nimega logrotate.

Mõne sõnaga nimetab logrotate põhilogi ümber või tihendab, kui tingimus on täidetud (täpsemalt minutiga), nii et järgmine sündmus salvestatakse tühja faili.

Lisaks eemaldab see\"vanad \" logifailid ja säilitab kõige uuemad. Muidugi saame otsustada, mida\"vana" tähendab ja kui tihti tahame, et logrotate logid meie eest puhastaks.

Logrotate'i installimine Linuxi

Programmi logrotate installimiseks kasutage lihtsalt oma paketihaldurit:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Tasub märkida, et konfiguratsioonifail ( /etc/logrotate.conf ) võib viidata sellele, et individuaalsetele .conf -failidele võidakse asetada muud täpsemad seaded /etc/logrotate.d.

Seda juhul ja ainult siis, kui järgmine rida on olemas ja seda ei kommenteerita:

include /etc/logrotate.d

Jätkame selle lähenemisviisiga, sest see aitab meil asju korras hoida ja kasutame Debiani kasti järgmiste näidete jaoks.

Logrotate'i seadistamine Linuxis

Olles väga mitmekülgne tööriist, pakub logrotate rohkelt direktiive, mis aitavad meil seadistada, millal ja kuidas logisid pööratakse ning mis peaks juhtuma kohe pärast seda.

Lisame järgmise sisu kausta /etc/logrotate.d/apache2.conf (pange tähele, et tõenäoliselt peate selle faili looma) ja uurime iga rida, et näidata selle eesmärki:

/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

Esimene rida näitab, et ploki sees olevad direktiivid kehtivad kõigile logis/var/log/apache2 olevatele logidele:

  • iga nädal tähendab, et tööriist üritab logisid nädala kaupa pöörata. Muud võimalikud väärtused on päeva ja kuu.
  • pööramine 3 näitab, et hoida tuleks ainult kolme pööratud palki. Seega eemaldatakse vanim fail neljandal järgneval käitamisel.
  • size u003d 10M määrab pööramise minimaalseks suuruseks 10M. Teisisõnu, iga logi ei pöörata enne, kui see on jõudnud 10 MB-ni.
  • Compress ja delaycompress kasutatakse selleks, et öelda, et kõik pööratud logid, välja arvatud viimane, peaksid olema tihendatud.

Teostame kuiva sõidu, et näha, mida logrotate teeks, kui see nüüd reaalselt hukataks. Kasutage valikut -d , millele järgneb konfiguratsioonifail (saate tegelikult käitada logrotate selle valiku välja jättes):

# logrotate -d /etc/logrotate.d/apache2.conf

Tulemused on toodud allpool:

Logide tihendamise asemel võiksime need ümber nimetada pärast nende pööramise kuupäeva. Selleks kasutame direktiivi dateext . Kui meie kuupäevavorming on muu kui vaikimisi aaaa/kpp, saame selle kuupäevavormingu abil täpsustada.

Pange tähele, et võime isegi takistada pöörlemist, kui logi on tühi ja seda ei teata. Lisaks käskime logrotate pööratud logi postitada süsteemiadministraatorile (seadistatav meiliserver, mis jääb selle artikli reguleerimisalast välja).

Kui soovite saada e-kirju logrotate'i kohta, saate Postfixi meiliserveri seadistada, nagu siin näidatud: Installige Postfix Mail Server

Seekord kasutame /etc/logrotate.d/squid.conf, et pöörata ainult /var/log/squid/access.log:

/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Nagu näeme alloleval pildil, ei olnud seda logi vaja pöörata. Kui aga suuruse tingimus on täidetud (suurus u003d 1M), nimetatakse pööratud logi nimeks access.log-25082020 (kui logi pöörati 25. augustil 2020) ja põhilogi (access.log) taastatakse loodud juurdepääsulubadeks seatud 0644 ning omaniku ja rühmaomanikuna juur.

Lõpuks, kui logide arv jõuab lõpuks 6-ni, saadetakse vanim logi aadressile [email protected].

Oletame, et soovite pööramise ajal käivitada kohandatud käsu. Selleks pange sellise käsuga rida postrotate ja endcripti direktiivide vahele.

Oletame näiteks, et tahame saata meilisõnumi, kui mõni/var/log/myservice'i logidest pööratakse. Lisame punased read /etc/logrotate.d/squid.conf:

/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Viimasena, kuid mitte vähem tähtsana, on oluline märkida, et /etc/logrotate.d/*.conf -is olevad suvandid alistavad konfliktide korral peamise konfiguratsioonifaili valikud.

Logrotate ja Cron

Vaikimisi loob logrotate installimine /etc/cron.daily nimega crograb faili nimega logrotate. Nagu ka teiste selles kataloogis olevate crontab-failide puhul, käivitatakse see iga päev alates 6:25, kui anacronit pole installitud.

Vastasel juhul algab hukkamine kella 7.35 paiku. Kontrollimiseks jälgige, kas rida sisaldab cron.daily kas/etc/crontab või/etc/anacrontab.

Kokkuvõte

Mitut logi genereerivas süsteemis saab selliste failide haldamist logrotate abil oluliselt lihtsustada. Nagu me selles artiklis selgitasime, pööratakse, tihendatakse, eemaldatakse ja postitatakse logisid automaatselt perioodiliselt või siis, kui fail saavutab kindla suuruse.

Lihtsalt veenduge, et see on seatud töötama cron-tööna ja logrotate muudab teie asjad palju lihtsamaks. Lisateavet leiate manulehelt.

Kas teil on selle artikli kohta küsimusi või ettepanekuid? Andke meile sellest julgelt teada, kasutades allolevat kommentaarivormi.