Jump to content
c0unt3rlog1c

Rotirea fisierelor de loguri pe Linux - fisierele log system

Recommended Posts

Posted (edited)

Introducere

Loguri...Orice sistem Linux va genera multe loguri by default, care contin multe informatii despre operarea sistemului (actiuni normale, informatii despre debugging, mesaje de securitate/autorizare, web/mail etc.). Daca aceste fisiere nu ar fi rotite, ar creste mai mari si mai mari, consumand spatiul (pe siteuri cu traffic mare), dar mai important, va face greu de gasit informatii ce s-ar putea sa fie folositoare. Din fericire, in majoritatea distributiilor Linux rotirea acestora este un proces automat, fara a fi necesare nici un fel de setari.

Acest mic tutorial va va arata cum rotatia out-of-the-box a logurilor functioneaza, bazata pe syslog si logrotate. Sunt si alte cai de a descoperi asta, de exemplu folosind syslog-ng in loc de syslog, dar probabil voi scrie despre asta intr-un articol viitor.

Intelegerea functionarii acestor fisiere va va ajuta sa va formati o idee despre ce se intampla, ce loguri sunt rotate, cand se intampla asta, si pentru cat timp vor exista. De asemenea veti descoperi locurile in care puteti face setari in caz ca doriti asta (daca doriti sa salvati logurile pentru mai mult timp, sau daca doriti sa le rotati diferit fata de setarile default). Exemplele ce le voi prezenta sunt luate dintr-un sistem Debian, deci daca rulati o alta distributie s-ar putea sa difere putin, dar nu foarte mult (de exemplu setarile cron s-ar putea sa ruleze la timpuri diferite, sau sa tina un numar diferit de loguri).

Oh, si acest tutorial este impartit in doua, o parte e pentru fisierele log ale sistemului, iar cealalta pentru cele ale aplicatiilor.

In tutorialul acesta, pentru fisierele log sistem, majoritatea din ele sunt rotate deja de catre syslog si nu folosind logrotate. In acest tutorial, veti intelege ce sunt aceste fisiere log si cum sunt rotate.

Fiserele ce sunt rotate

Syslog e aplicatia default pentru logging, instalata in majoritatea distributiilor de linux. Poate fi inlocuita cu syslog-ng pentru functionalitate mai buna, dar nu voi vorbi despre asta acum. Dupa cum am explicat in introducere, fisierele log care sunt mentinute de syslog nu sunt rotate cu logrotate, ci chiar de syslog insusi. Despre cele care sunt mentinute de logrotate, voi vorbi in partea urmatoare.

Prin urmare, ce fisiere sunt mentinute de syslog? Putem afla asta pur si simplu prin a inspecta fisierul de configuratie (/etc/syslog.conf) care defineste fiecare fisier de loguri, si de asemenea ce fel de informatii sunt salvate in fiecare fisier in parte. Haideti sa vedem cum arata fisierul de configuratie intr-un sistem de abea instalat Debian (am scos majoritatea comentariilor , pentru a arata doar ce e relevant) :

#  /etc/syslog.conf     Configuration file for syslogd.
#
# For more information see syslog.conf(5)
# manpage.

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
uucp.* /var/log/uucp.log
...
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
*.=debug;
auth,authpriv.none;
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;
auth,authpriv.none;
cron,daemon.none;
mail,news.none -/var/log/messages

Normal, as schimba setarile configurand totul dupa preferintele mele, dar nu asta e subiectul acum.Dupa cum puteti vedea, aici exista o multime de fisiere log care contin informatiile specificate de configuratii (authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user uucp si local0 prin local7).

Cum sunt aceste fisiere rotate? Cum am spus mai devreme, acest proces este automatizat de syslog, si este executat conform a doua scripturi cron: daily si weekly .

rotatia zilnica - daily (mentinuta de /etc/cron.daily/sysklogd)

  • toate fisierele care contin facilitatea *.* in configuratia syslog sunt rotate zilnic. Motivul ar fi ca ele contin logurile continand orice tip de informatie, indiferent de facilitati, si pot deveni foarte mari intr-un timp foarte scurt.
  • daca ne uitam in interiorul cronului syslog, pentru daily, vedem ca el gaseste logurile necesare lansand fisierul syslogd-listfiles:

/usr/sbin/syslogd-listfiles
/var/log/syslog <- rezultatul pe sistemul meu, default

  • rotatia actuala este mentinuta de programul savelog, dupa cum vedeti in linia urmatoare:

savelog -g adm -m 640 -u root -c 7 $LOG >/dev/null

Deci putem vedea aici ca, default, sistemul meu debian va tine 7 arhive ale logurilor precedente (7 zile). Daca doriti sa schimbati asta, tot ce trebuie sa faceti este sa schimbati parametrul -c 7 cu ceea ce doriti.

Cand se intampla aceasta rotatie? Atata timp cat este lansata din /etc/cron.daily/ , este definita de crontabul sistemului:

# /etc/crontab: system-wide crontab
...
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly

deci, bazat pe cron jobul default, procesul va fi efectuat zilnic la 6:25 AM .

rotatia saptamanala - weekly (mentinuta de /etc/cron.weekly/sysklogd)

  • restul fisierelor generate de syslog (diferite de facilitatea *.*) vor fi rotate saptamanal.
  • daca ne uitam inauntrul cronului saptamanal syslog, vom vedea ca el gaseste logurile ce trebuie rotate ruland:

/usr/sbin/syslogd-listfiles --weekly
/var/log/mail.warn
/var/log/uucp.log
/var/log/user.log
/var/log/daemon.log
/var/log/messages
/var/log/debug
/var/log/auth.log
/var/log/mail.err
/var/log/mail.log
/var/log/kern.log
/var/log/lpr.log
/var/log/mail.info

  • dupa cum putem vedea logurile definite in fisierul de configuratie syslog, exceptandule pe cele noi.*, pot fi incluse prin adaugarea syslogd-listfiles -news, daca e necesar.
  • si aceasta rotatie este mentinuta tot de programul savelog:

savelog -g adm -m 640 -u root -c 4 $LOG >/dev/null

Deci, default, el va tine 4 arhive de loguri precedente (neincluzand logul curent); arhivele vor avea extensia *.0-*.3 (prima arhiva nu este compresata default). Daca doriti sa schimbati asta, tot ce trebuie sa faceti este sa schimbati parametrul -c 4 cu ceea ce doriti.

Dupa cum am vazut mai sus in crontabul sistemului, aceasta rotatie va avea loc la 6:47AM in fiecare Duminica (referindu-ma la cronjobul saptamanal).

De exemplu, fisierele log rotate vor arata in acest fel:

/var/log/messages
/var/log/messages.0
/var/log/messages.1.gz
/var/log/messages.2.gz
/var/log/messages.3.gz

Note

  • Pe sistemele bazate pe RedHat (RHEL, Centos, Fedora, etc.) functionalitatile despre care am vorbit mai sus nu sunt preinstalate (desi nu vad de ce nu ar putea fi implementate). Pe aceste sisteme de operare, fisierele sistemului sunt rotate, la fel ca si cele ale aplicatiilor, de logrotate, despre care voi vorbi in partea a doua.

Multumesc pentru ca ati citit!

Edited by c0unt3rlog1c

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...