Hvernig á að setja upp og stjórna snúningi annála með Logrotate í Linux


Ein áhugaverðasta (og kannski ein mikilvægasta líka) möppurnar í Linux kerfi er /var/log. Samkvæmt Filesystem Hierarchy Standard er virkni flestra þjónustu sem keyra í kerfinu skrifuð í skrá inni í þessari möppu eða einni af undirmöppum hennar.

Slíkar skrár eru þekktar sem logs og eru lykillinn að því að skoða hvernig kerfið virkar (og hvernig það hefur hegðað sér áður). Logs eru einnig fyrsta uppspretta upplýsinga þar sem stjórnendur og verkfræðingar skoða meðan á bilanaleit stendur.

Ef við skoðum innihald /var/log á CentOS/RHEL/Fedora og Debian/Ubuntu (fyrir fjölbreytni) munum við sjá eftirfarandi annálaskrár og undirmöppur.

Vinsamlegast athugaðu að niðurstaðan getur verið nokkuð mismunandi í þínu tilviki eftir því hvaða þjónustur keyra á kerfum þínum og tíma sem þær hafa verið í gangi.

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

Í báðum tilfellum getum við fylgst með því að sum lognöfnin enda eins og búist er við í \log, á meðan önnur eru annað hvort endurnefnd með dagsetningu (til dæmis maillog-20160822 á CentOS) eða þjappað (hugsaðu um auth.log.2. gz og mysql.log.1.gz á Debian).

Þetta er ekki sjálfgefin hegðun byggð á völdum dreifingu en hægt er að breyta því að vild með því að nota tilskipanir í stillingarskránum, eins og við munum sjá í þessari grein.

Ef annálum væri haldið að eilífu myndu þeir á endanum fylla skráarkerfið þar sem /var/log er. Til að koma í veg fyrir það getur kerfisstjórinn notað gott tól sem kallast logrotate til að hreinsa upp annálana reglulega.

Í nokkrum orðum mun logrotate endurnefna eða þjappa aðalskránni þegar skilyrði er uppfyllt (meira um það eftir eina mínútu) þannig að næsti atburður sé skráður á tóma skrá.

Að auki mun það fjarlægja „gamlar“ annálaskrár og geyma þær nýjustu. Auðvitað fáum við að ákveða hvað „gamalt“ þýðir og hversu oft við viljum að logrotate til að hreinsa upp annálana fyrir okkur.

Að setja upp Logrotate í Linux

Til að setja upp logrotate, notaðu bara pakkastjórann þinn:

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

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

Það er þess virði og vel að hafa í huga að stillingarskráin (/etc/logrotate.conf) gæti gefið til kynna að aðrar, nákvæmari stillingar gætu verið settar á einstakar .conf skrár inni í /etc/logrotate.d.

Þetta mun vera raunin ef og aðeins ef eftirfarandi lína er til og er ekki skrifuð athugasemd:

include /etc/logrotate.d

Við munum halda okkur við þessa nálgun, þar sem hún mun hjálpa okkur að halda hlutunum í lagi, og nota Debian kassann fyrir eftirfarandi dæmi.

Stilltu Logrotate í Linux

Þar sem logrotate er mjög fjölhæft tól, býður logrotate upp á fullt af leiðbeiningum til að hjálpa okkur að stilla hvenær og hvernig annálum verður snúið og hvað ætti að gerast strax á eftir.

Við skulum setja inn eftirfarandi innihald í /etc/logrotate.d/apache2.conf (athugaðu að líklega verður þú að búa til þá skrá) og skoða hverja línu til að gefa til kynna tilgang hennar:

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

Fyrsta línan gefur til kynna að tilskipanirnar inni í blokkinni eigi við um alla loga inni í /var/log/apache2:

  • vikulega þýðir að tólið mun reyna að snúa annálunum vikulega. Önnur möguleg gildi eru dagleg og mánaðarleg.
  • snúa 3 gefur til kynna að aðeins ætti að halda 3 snúningsskrám. Þannig verður elsta skráin fjarlægð í fjórðu síðari keyrslu.
  • stærð=10M stillir lágmarksstærð til að snúningur eigi sér stað á 10M. Með öðrum orðum, hverri annál verður ekki snúið fyrr en hann nær 10MB.
  • compress og delaycompress eru notuð til að segja að allir snúningsskrár, að undanskildum þeim nýjasta, ættu að vera þjappaðir.

Við skulum framkvæma þurrhlaup til að sjá hvað logrotate myndi gera ef það væri raunverulega keyrt núna. Notaðu -d valkostinn og síðan stillingarskrána (þú getur í raun keyrt logrotate með því að sleppa þessum valkosti):

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

Niðurstöðurnar eru sýndar hér að neðan:

Í stað þess að þjappa annálunum, gætum við endurnefna þá eftir dagsetningunni þegar þeim var snúið. Til að gera það munum við nota dateext tilskipunina. Ef dagsetningarsniðið okkar er annað en sjálfgefna yyyymmdd, getum við tilgreint það með dagsetningarsniði.

Athugaðu að við getum jafnvel komið í veg fyrir að snúningur gerist ef loggurinn er tómur með notifempty. Að auki skulum við segja logrotate að senda snúningsskrána til kerfisstjórans (póstþjónn sem á að setja upp, sem er utan gildissviðs þessarar greinar).

Ef þú vilt fá tölvupóst um logrotate geturðu sett upp Postfix póstþjón eins og sýnt er hér: Settu upp Postfix póstþjón

Að þessu sinni munum við nota /etc/logrotate.d/squid.conf til að snúa aðeins /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 
}

Eins og við sjáum á myndinni hér að neðan þurfti ekki að snúa þessum annál. Hins vegar, þegar stærðarskilyrðinu er fullnægt (stærð=1M), verður snúningsskránni breytt í access.log-25082020 (ef annálnum var snúið 25. ágúst 2020) og aðalskráin (access.log) verður endur- búin til með aðgangsheimildum stillt á 0644 og með rót sem eiganda og hópeiganda.

Að lokum, þegar fjöldi annála nær loksins 6, verður elsti annálinn sendur á [email .

Segjum nú að þú viljir keyra sérsniðna skipun þegar snúningurinn á sér stað. Til að gera það skaltu setja línuna með slíkri skipun á milli postrotate og endscript tilskipunarinnar.

Til dæmis, gerum ráð fyrir að við viljum senda tölvupóst til rótar þegar einhverjum af annálunum inni í /var/log/myservice er snúið. Bætum rauðum línum við /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
}

Síðast en ekki síst er mikilvægt að hafa í huga að valmöguleikar sem eru til staðar í /etc/logrotate.d/*.conf hnekkja þeim sem eru í aðalstillingarskránni ef upp koma átök.

Logrotate og Cron

Sjálfgefið er að uppsetning logrotate býr til crontab skrá inni í /etc/cron.daily sem heitir logrotate. Eins og það er tilfellið með aðrar crontab skrár inni í þessari möppu, verður það keyrt daglega frá 06:25 ef anacron er ekki uppsett.

Að öðrum kosti mun aftakan hefjast um 7:35. Til að staðfesta skaltu fylgjast með línunni sem inniheldur cron.daily í annað hvort /etc/crontab eða /etc/anacrontab.

Samantekt

Í kerfi sem býr til nokkra annála er hægt að einfalda stjórnun slíkra skráa til muna með því að nota logrotate. Eins og við höfum útskýrt í þessari grein mun það sjálfkrafa snúa, þjappa, fjarlægja og senda annála reglulega eða þegar skráin nær tiltekinni stærð.

Gakktu úr skugga um að það sé stillt á að keyra sem cron starf og logrotate mun gera hlutina miklu auðveldari fyrir þig. Nánari upplýsingar er að finna á mannasíðunni.

Hefur þú einhverjar spurningar eða tillögur um þessa grein? Ekki hika við að láta okkur vita með því að nota athugasemdareyðublaðið hér að neðan.