Giunsa ang Pag-setup ug Pagdumala sa Pag-rotate sa Log Gamit ang Logrotate sa Linux


Usa sa labing makaiikag (ug tingali usa sa labing importante usab) nga mga direktoryo sa sistema sa Linux mao ang /var/log. Sumala sa Filesystem Hierarchy Standard, ang kalihokan sa kadaghanan nga mga serbisyo nga nagdagan sa sistema gisulat sa usa ka file sa sulod niini nga direktoryo o usa sa mga subdirektoryo niini.

Ang ingon nga mga file nailhan nga mga troso ug mao ang yawe sa pagsusi kung giunsa ang sistema naglihok (ug kung giunsa kini naglihok kaniadto). Ang mga troso mao usab ang unang tinubdan sa impormasyon diin ang mga tigdumala ug mga inhenyero motan-aw samtang mag-troubleshoot.

Kung atong tan-awon ang mga sulod sa /var/log sa usa ka CentOS/RHEL/Fedora ug Debian/Ubuntu (alang sa lainlain) atong makita ang mosunod nga mga log files ug subdirectories.

Palihug timan-i nga ang resulta mahimong medyo lahi sa imong kaso depende sa mga serbisyo nga nagdagan sa imong (mga) system ug sa oras nga sila nagdagan.

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

Sa duha ka mga kaso, atong maobserbahan nga ang pipila sa mga ngalan sa log matapos sama sa gipaabot sa \log, samtang ang uban mahimo nga gibag-o sa ngalan gamit ang petsa (pananglitan, maillog-20160822 sa CentOS) o gi-compress (hunahunaa ang auth.log.2. gz ug mysql.log.1.gz sa Debian).

Dili kini usa ka default nga pamatasan nga gibase sa gipili nga pag-apod-apod apan mahimo’g usbon kung gusto gamit ang mga direktiba sa mga file sa pag-configure, ingon sa makita naton sa kini nga artikulo.

Kung ang mga troso gitipigan hangtod sa kahangturan, kini sa katapusan mapuno ang filesystem diin nagpuyo ang /var/log. Aron mapugngan kana, ang tagdumala sa sistema makagamit sa usa ka nindot nga utility nga gitawag og logrotate aron limpyohan ang mga troso matag karon ug unya.

Sa pipila ka mga pulong, ang logrotate mag-usab sa ngalan o mag-compress sa nag-unang log kung ang usa ka kondisyon matuman (labaw pa bahin niana sa usa ka minuto) aron ang sunod nga panghitabo marekord sa usa ka walay sulod nga file.

Dugang pa, tangtangon niini ang \daan nga mga file sa log ug tipigan ang mga pinakabag-o. Siyempre, makahukom kami kung unsa ang gipasabut sa \daan ug kung unsa ka sagad gusto namon nga limpyohan ang logrotate alang kanamo.

Pag-instalar sa Logrotate sa Linux

Aron ma-install ang logrotate, gamita lang ang imong manager sa package:

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

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

Angay ug maayo nga timan-an nga ang configuration file (/etc/logrotate.conf) mahimong magpakita nga ang uban, mas espesipikong mga setting mahimong ibutang sa indibidwal nga .conf file sa sulod /etc/logrotate.d.

Kini ang mahitabo kung ug kung ang mosunod nga linya anaa ug wala gikomentaryo:

include /etc/logrotate.d

Magpabilin kami niini nga pamaagi, tungod kay makatabang kini kanamo nga mapadayon ang pagkahan-ay sa mga butang, ug gamiton ang kahon sa Debian alang sa mga mosunud nga pananglitan.

I-configure ang Logrotate sa Linux

Ingon nga usa ka daghan kaayo nga himan, ang logrotate naghatag daghang mga direktiba aron matabangan kami sa pag-configure kung kanus-a ug kung giunsa ang pag-rotate sa mga log, ug kung unsa ang kinahanglan nga mahitabo pagkahuman.

Atong sal-ot ang mosunod nga mga sulod sa /etc/logrotate.d/apache2.conf (timan-i nga lagmit kinahanglan nimo nga himoon ang file) ug susihon ang matag linya aron ipakita ang katuyoan niini:

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

Ang una nga linya nagpakita nga ang mga direktiba sa sulod sa block magamit sa tanan nga mga troso sa sulod /var/log/apache2:

  • kada semana nagpasabot nga ang himan mosulay sa pagtuyok sa mga troso kada semana. Ang uban nga posible nga kantidad mao ang adlaw-adlaw ug binulan.
  • Ang
  • rotate 3 nagpasabot nga 3 lang ka rotated logs ang angay tipigan. Sa ingon, ang labing karaan nga file tangtangon sa ikaupat nga sunod nga run.
  • Ang
  • size=10M nagtakda sa minimum nga gidak-on alang sa rotation nga mahitabo ngadto sa 10M. Sa laing pagkasulti, ang matag log dili i-rotate hangtod nga moabot kini sa 10MB.
  • Ang compress ug delaycompress gigamit sa pagsulti nga ang tanang rotated logs, gawas sa pinakabag-o, kinahanglang i-compress.

Maghimo kita og dry-run aron makita kung unsa ang buhaton sa logrotate kung kini gipatuman karon. Gamita ang -d nga opsyon nga gisundan sa configuration file (mahimo nimong ipadagan ang logrotate pinaagi sa pagtangtang niini nga opsyon):

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

Ang mga resulta gipakita sa ubos:

Imbis nga i-compress ang mga troso, mahimo namong ilisan ang ngalan niini pagkahuman sa petsa kung kanus-a kini gituyok. Aron mahimo kana, among gamiton ang dateext nga direktiba. Kung ang among pormat sa petsa lahi sa default yyyymmdd, mahimo namon kini itakda gamit ang dateformat.

Timan-i nga mahimo pa gani nato mapugngan ang rotation nga mahitabo kung ang log walay sulod nga walay notifempty. Dugang pa, sultihan nato ang logrotate nga ipadala ang rotated log ngadto sa system administrator (mail server nga i-set up, nga wala sa sakup niini nga artikulo).

Kung gusto nimo makakuha mga email bahin sa logrotate, mahimo nimong i-setup ang Postfix mail server sama sa gipakita dinhi: I-install ang Postfix Mail Server

Niining higayona atong gamiton ang /etc/logrotate.d/squid.conf aron lang i-rotate ang /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 
}

Sama sa atong makita sa hulagway sa ubos, kini nga log dili kinahanglan nga i-rotate. Bisan pa, kung ang kondisyon sa gidak-on matuman (gidak-on=1M), ang gi-rotate nga log pag-ilis sa ngalan nga access.log-25082020 (kung ang log gituyok kaniadtong Agosto 25, 2020) ug ang panguna nga log (access.log) pag-usab gibuhat nga adunay mga permiso sa pag-access nga gitakda sa 0644 ug adunay gamut ingon tag-iya ug tag-iya sa grupo.

Sa katapusan, kung ang gidaghanon sa mga log sa katapusan moabut sa 6, ang labing karaan nga log ipadala sa [email .

Karon ibutang nato nga gusto nimo nga magpadagan og usa ka custom nga sugo kung mahitabo ang rotation. Aron mahimo kana, ibutang ang linya nga adunay ingon nga mando taliwala sa postrotate ug endscript nga mga direktiba.

Pananglitan, ibutang nato nga gusto namong magpadala ug email aron ma-root kung ang bisan unsang mga log sa sulod /var/log/myservice ma-rotate. Atong idugang ang mga linya nga pula sa /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
}

Katapusan, apan dili labing gamay, importante nga timan-an nga ang mga opsyon nga anaa sa /etc/logrotate.d/*.conf mopatigbabaw niadtong anaa sa main configuration file kung adunay mga panagsumpaki.

Logrotate ug Cron

Sa kasagaran, ang pag-instalar sa logrotate makamugna og crontab file sulod sa /etc/cron.daily nga ginganlan og logrotate. Sama sa kahimtang sa ubang mga crontab file sa sulod niini nga direktoryo, kini ipatuman matag adlaw sugod sa 6:25 am kung wala ma-install ang anacron.

Kung dili, magsugod ang pagpatay mga alas 7:35 sa buntag. Aron mapamatud-an, tan-awa ang linya nga adunay cron.daily sa /etc/crontab o /etc/anacrontab.

Summary

Sa usa ka sistema nga nagpatunghag daghang mga log, ang pagdumala sa ingon nga mga file mahimong labi nga gipasimple gamit ang logrotate. Sama sa among gipatin-aw niini nga artikulo, kini awtomatik nga mag-rotate, mag-compress, magtangtang, ug mag-mail sa mga log sa matag karon ug unya o kung ang file makaabot sa gihatag nga gidak-on.

Siguruha lang nga kini gitakda nga modagan ingon usa ka cron nga trabaho ug ang logrotate maghimo sa mga butang nga labi kadali alang kanimo. Alang sa dugang nga mga detalye, tan-awa ang panid sa tawo.

Aduna ka bay mga pangutana o sugyot bahin niini nga artikulo? Mobati nga gawasnon nga ipahibalo kanamo gamit ang porma sa komento sa ubos.