Distribuțiile Linux sunt ideale pentru orice tip de mediu corporativ datorită capacității lor de a se adapta la funcții noi și la roluri noi și, cel mai bine, gratuit datorită codului deschis.
Avem mii de aplicații sau utilitare concepute pentru control centralizat asupra tuturor aspectelor sistemului și în acest fel, în calitate de administratori sau personal IT, știm cu certitudine când apare o defecțiune și știu cum să o rezolve.
În cadrul acestei game largi de posibilități găsim Logrotate, care este un utilitar al distribuției și funcția sa este rotația și comprimarea fișierelor jurnal.
Această sarcină este importantă, deoarece, neavând nicio acțiune asupra acestor fișiere, spațiul de pe hard disk poate fi afectat, ducând la alte tipuri de erori generale.
Pentru acest caz, vom folosi Ubuntu 17.10 și Logrotate este instalat în mod implicit și este deja configurat pentru a gestiona sarcinile de rotație a jurnalelor tuturor pachetelor instalate, inclusiv rsyslog, procesorul de jurnal de sistem implicit.
În continuare, vom vedea cum se instalează și se folosește acest utilitar valoros.
1. Identificați versiunea de Linux instalat Logrotate
Primul pas pe care trebuie să îl faceți este să cunoașteți în detaliu ce versiune de Logrotate avem, în acest caz, Ubuntu 17.10. Pentru aceasta, executăm următoarea comandă:
logrotate -versiuneRezultatul va fi următorul:
MARI
Dacă Logrotate nu este instalat, vom primi o eroare. Putem instala instrumentul folosind managerul de pachete al distribuției Linux utilizate.
Dacă Logrotate este instalat, dar numărul versiunii este semnificativ diferit, este posibil să avem probleme cu unele setări ale utilitarului. Putem consulta documentația versiunii specifice a Logrotate direct în pagina sa de manual:
om logrotatePutem vedea structura de configurare implicită a Logrotate în distribuția Linux:
MARI
2. Configurați Logrotate Linux
Informațiile de configurare Logrotate pot fi găsite în general în două locuri în cazul Ubuntu:
etc / logrotate.confAcest fișier conține unele setări implicite și setează rotația pentru unele jurnale care nu sunt deținute de niciun pachet de sistem. De asemenea, folosește o declarație include pentru a obține setări din orice fișier din directorul /etc/logrotate.d.
/etc/logrotate.d/Acest director este locul în care orice pachet pe care îl instalăm și care are nevoie de ajutor cu rotația jurnalului își va configura configurația Logrotate. Într-o instalare standard, fișierele ar trebui să existe deja aici pentru instrumentele de bază de sistem, cum ar fi apt, dpkg, rsyslog etc.
În mod implicit, logrotate.conf va configura rotații jurnal săptămânale (săptămânal), cu fișiere jurnal deținute de utilizatorul root și grupul syslog (su root syslog), cu patru fișiere jurnal care sunt păstrate (rotiți 4) și fișierele noi sunt create goale înregistrări. creat după rotirea curentului (creați).
Putem accesa fișierul de configurare Logrotate al unui pachet în /etc/logrotate.d folosind utilitarul cat:
cat /etc/logrotate.d/apt
MARI
Acest fișier conține blocuri de configurare pentru două fișiere jurnal diferite din directorul / var / log / apt /: term.log și history.log. Amândoi au aceleași opțiuni.
Orice opțiune care nu este setată în aceste blocuri de configurare va moșteni valorile implicite sau cele setate în /etc/logrotate.conf. Opțiunile configurate pentru jurnalele apt sunt:
rotiți 12Păstrează douăsprezece fișiere jurnal vechi.
LunarRotiți o dată pe lună.
ComprimaSe ocupă de comprimarea fișierelor rotite. Aceasta folosește gzip în mod implicit și are ca rezultat fișiere care se termină cu extensia .gz. Comanda de compresie poate fi modificată folosind opțiunea compresscmd.
missingokNu scrie un mesaj de eroare dacă lipsește fișierul jurnal.
notifemptyNu rotește fișierul jurnal dacă este gol.
Există mai multe opțiuni de configurare disponibile.
3. Configurați un serviciu Linux Logrotate și adăugați configurație la /etc/logrotate.d/
Apoi, vom configura un fișier de configurare pentru a gestiona jurnalele unui serviciu pe care îl vom crea.
Pentru a gestiona fișierele jurnal pentru aplicații în afara serviciilor de sistem preambalate și preconfigurate, avem două opțiuni:
- Creați un nou fișier de configurare Logrotate și plasați-l în calea /etc/logrotate.d/. Aceasta va rula zilnic ca utilizator root împreună cu toate celelalte lucrări Logrotate standard.
- Creați un fișier de configurare nou și rulați-l în afara configurației implicite Logrotate a Ubuntu. Acest lucru este necesar numai dacă trebuie să rulăm Logrotate ca utilizator non-root sau dacă doriți să rotiți jurnalele mai frecvent decât zilnic (o setare orară în /etc/logrotate.d/ nu ar fi eficientă, deoarece setarea Logrotate a sistemului se execută doar o dată pe zi).
În acest caz, dorim să configurăm rotația jurnalului pentru un server web care pune un access.log și error.log în calea / var / log / solvetic-app /. Va rula ca utilizator și grup www-data.
Pentru a adăuga o configurație la /etc/logrotate.d/, trebuie mai întâi să deschidem un fișier nou după cum urmează:
sudo nano /etc/logrotate.d/solvetic-appacolo vom adăuga următoarele linii:
/var/log/solvetic-app/*.log {daily missingok rotate 14 compress notifempty create 0640 www-data www-data sharedscripts postrotate systemctl reoad solvetic-app endscript}
MARI
Putem salva modificările folosind combinația de taste Ctrl + O și ieșim din editor folosind Ctrl + X.
Unele dintre noile directive de configurare din acest fișier sunt:
creați 0640 www-data www-dataAcest parametru creează un nou fișier jurnal gol după rotație, cu permisiunile specificate (0640), proprietar (www-data) și grup (de asemenea, www-data).
scripturi partajateAcest indicator indică faptul că scripturile adăugate la configurație rulează o singură dată pe fiecare rulare, mai degrabă decât pentru fiecare fișier rotit.
postrotate la endscriptAcest bloc conține un script pentru a rula după rotirea fișierului jurnal. În acest caz, putem reîncărca aplicația noastră solvetică. Acest lucru este uneori necesar pentru ca aplicația să treacă la fișierul jurnal nou creat.
Trebuie să luăm în considerare execuțiile postrotate înainte de verificarea jurnalelor. Comprimarea poate dura mult timp, iar software-ul ar trebui să treacă imediat la noul fișier jurnal. Pentru activitățile care trebuie să ruleze după comprimarea înregistrărilor, utilizați în schimb blocul lastaction.
După personalizarea configurației care se potrivește cel mai bine nevoilor noastre și au fost salvate în /etc/logrotate.d, o putem verifica executând următoarea linie.
sudo logrotate /etc/logrotate.conf -debugAceasta apelează logrotate, indică fișierul de configurare standard și activează modul de depanare:
MARI
Informațiile despre fișierele jurnal care sunt tratate de Logrotate și ce se execută pe ele vor fi tipărite. Dacă totul arată bine, am terminat. Lucrarea Logrotate standard va rula o dată pe zi și va include noile setări.
4. Cum să creați o configurație de înregistrare autonomă Lograte Linux
În primul rând, vom crea un fișier de configurare în directorul nostru principal. Îl putem deschide cu un editor de text:
sudo nano /home/solvetic/logrotate.confÎn noul fișier vom lipi următoarele:
/home/solvetic/logs/*.log {lipsă orară rotire 24 comprimare crea}
MARI
Putem salva modificările și ieși din fișier.
Această setare va roti fișierele la fiecare oră, comprimând și păstrând douăzeci și patru de înregistrări vechi și creând un nou fișier jurnal pentru a înlocui fișierul rotit. Pentru a testa dacă funcționează corect, putem crea un fișier jurnal executând următoarele linii:
cd ~ sudo mkdir logs sudo touch logs / access.log
MARI
Acum că avem un fișier jurnal gol la locul potrivit, vom rula comanda logrotate.
Vom executa următoarele:
logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-state -verbose
MARI
Parametrul --verbose va imprima informații detaliate despre ceea ce rulăm cu Logrotate. În acest caz, vom vedea că nimic nu s-a rotit. Este pentru prima dată când Logrotate vede acest fișier jurnal și, după cum știm, fișierul are o vechime de zero ore și nu ar trebui rotit.
Dacă ne uităm la fișierul de stare, vom vedea că Logrotate a înregistrat anumite informații despre execuția pe care am efectuat-o:
pisică / acasă / solvetic / logrotat-stareVom vedea următoarele:
MARI
Logrotate a notat înregistrările pe care le-a analizat și când le-a luat în considerare ultima dată pentru rotație. Dacă executăm aceeași comandă o oră mai târziu, înregistrarea va fi rotită conform intenției. Dacă doriți să forțați Logrotate să rotească fișierul jurnal atunci când nu ar trebui altfel, putem folosi marcajul --force:
sudo logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-state --verbose -force
5. Crearea unei sarcini programate pe Achieve Linux
În cele din urmă, trebuie să configurăm un job cron pentru a rula Logrotate în fiecare oră. Pentru a face acest lucru, deschidem crontab-ul utilizatorului nostru executând următoarele:
crontab -eÎn fișierul deschis vom adăuga următoarea linie:
14 * * * * / usr / sbin / logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-state
MARI
Această sarcină se va desfășura în minutul 14 al fiecărei ore, în fiecare zi. Practic funcționează cu aceeași comandă logrotate pe care am executat-o mai devreme, deși am extins logrotate la calea completă a / usr / sbin / logrotate. Putem salva fișierul folosind combinația de taste Ctrl + O și îl putem părăsi folosind Ctrl + X.
Astfel am văzut cum Logrotate este un utilitar simplu, dar eficient atunci când vine vorba de gestionarea și controlul înregistrărilor în orice distribuție Linux.