Logrotate yra sisteminis įrankis, kuris automatiškai administruoja išrašų rotaciją ir suspaudimą. Jeigu išrašai nėra rotuojami, archyvuojami bei periodiškai skaidomi, jie gali užpildyti visą serverio disko vietą. Logrotate Ubuntu 16.04 serveriuose būna įrašomas automatiškai ir turi teisę administruoti visų sistemų išrašus, įtraukiant ir
rsyslog - pagrindinį išrašų procesą.
Šioje pamokoje bus peržiūrėta standartinė Logrotate konfigūracija bei atlikta konfigūracija konkrečiai aplikacijai.
0. Preliminarūs reikalavimai
* Virtualiai dedikuotas serveris naudojantis Ubuntu 16.04 operacinę sistemą.
* Rekomenduojame naudoji atskirai sukurtą naudotoją (ne
root), kuris turėtų
sudo teises.
1. Logrotate versijos nustatymas
Visų pirma patikrinkite ar Jūsų serveryje naudojama Logrotate. Tai galite sužinoti patikrindami Logrotate versiją:
logrotate --version
Pateikiamas atsakymas turėtų būti:
logrotate 3.8.7
Jeigu Logrotate nėra įdiegtas, tada Jums bus patiekiama klaida. Tokiu atveju galite įsidiegti Logrotate naudodami Linux distribucijos paketų tvarkyklę.
Jeigu pateikiama versija bus kita, siūlytume ją atnaujinti. Tokiu atveju išvengsite galimų problemų atliekant konfigūraciją pagal šią pamoką. Informacija, kaip tai atlikti, galite rasti dokumentacijoje:
man logrotate
2. Logrotate konfigūracijos nagrinėjimas
Logrotate konfigūracijos informacija Ubuntu OS gali būti pateikiama dviejose skirtingose vietose:
/etc/logrotate.conf: Šis failas talpina standartinius nustatymus ir nustato rotaciją tik keliems išrašams, kurie nėra susiję su sisteminiais paketais. Šis failas taip pat turi
include galimybę paimti konfigūraciją iš bet kokio kito failo direktorijoje
/etc/logrotate.d
/etc/logrotate.d/: Direktorija, kurioje talpinami visos įdiegtų paketų Logrotate konfigūracijos. Standartiškai šioje direktorijoje jau būna talpinamos konfigūracijos tokių įrankių kaip
apt, dpkg, rsyslog ir pan.
Galime peržiūrėti Logrotate paketo konfigūraciją faile
/etc/logrotate.d įvykdę komandą:
cat /etc/logrotate.d/apt
Jums bus pateikiamas atsakymas:
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}
/var/log/apt/history.log {
rotate 12
monthly
compress
missingok
notifempty
}
Šiame failas talpinamos dviejų skirtingų failų konfigūracijos:
term.log ir
history.log. Jie abu turi tokius pačius nustatymus. Visi kiti nustatymai, kurie galėtų būti, yra nustatomi standartiškai pagal failą
/etc/logrotate.conf. Nustatymų reikšmės
apt išrašams yra:
- rotate 12: laikyti 12 senų išrašų failų.
- monthly: atlikti rotaciją kartą į mėnesį.
- compress: suspausti išrašus. Naudojamas gzip formatas. Suspaudimo komanda gali būti pakeičiamia naudojant komandą compresscmd.
- missingok: nesukurti klaidos pranešimo, jeigu išrašo failas nerandamas,
- notifempty: neatlikti rotacijos, jei išrašo failas yra tuščias.
Be abejo, yra žymiai daugiau konfigūracijos nustatymų. Jeigu norite juos sužinoti, galite juos peržiūrėti įvykdę komandą:
man logrotate
3. Konfigūracijos pavyzdžio sukūrimas
Norint sukonfigūruoti kitas aplikacijas (turinio valdymo sistemas, pašto tarnybas ir pan.) turime du skirtingus variantus:
1. Sukurti Logrotate konfigūracijos failą ir įkelti jį į
/etc/logrotate.d/.
2. Sukurti atskirą konfigūracijos failai ir paleisti jį Ubuntu standartinio Logrotate nustatymo įšorėje. Tai būna aktualu tik tokiu atveju kai reikalinga išrašų rotacija dažniau nei kartą per dieną. Šioje pamokoje nebus apžvelgtas šis metodas.
3.1. Konfigūracijos pridėjimas į /etc/logrotate.d/
Šiuo atveju mes norime sukonfigūruoti fiktyvų web servisą, kuris turi
access.log ir
error.log išrašų failus direktorijoje
/var/log/example-app/.
Tam, kad pridėti konfigūraciją į
/etc/logrotate.d/ visų pirma turite susikurti naują failą:
sudo nano /etc/logrotate.d/example-app
Žemiau pateikiame pavyzdį, kaip turėtų atrodyti konfigūracinis išrašų failas:
/var/log/example-app/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload example-app
endscript
}
Keli nauji konfigūracijų nustatymai:
- create 0640 www-data www-data: tai sukuria naują tuščia išrašų failą prieš rotaciją su 0640 teisėmis, www-data naudotoju, ir grupe pavadinimu www-data.
- sharedscripts: šis įrašas reiškia, kad visi skriptai pridėti prie konfigūracijos yra paleidžaimi vieną kartą paleidžiant aplikaciją.
- postrotate ir endscript: šis blokas talpina skriptą, kuris paleidžiamas poto kai išrašo failas yra rotuojamas. Šiuo atveju mūsų aplikacija yra paleidžiama iš naujo. postrotate yra paleidžiama prieš tai kai išrašai yra suspaudžiami. Užduotims, kurios turi būti paleistos po išrašų suspaudimo naudokite lastaction bloką.
Poto kai konfigūracijos failas yra sukuriamas ir išsaugomas, galite jį patikrinti (prieš įkeldami į
/etc/logrotate.d):
sudo logrotate /etc/logrotate.conf --debug
Tai iškviečia logrotate, nukreipia į standarinį konfiguracijos failą ir paleidžia testiniame (debug) lygmenyje.
Jums bus pateikiama informacija apie tai, kuris išrašų failas turėtų veikti ir kas yra atliekama. Jeigu viskas atrodo teisingai, tai reiškia, kad konfigūracija atlikta sėkmingai. Standartinis Logrotate bus paleistas kartą per dieną ir įtrauks naują konfigūraciją.
Norėdami peržiūrėti daugiau Logrotate galimybių siūlytume peržiūrėti dokumentaciją:
man logrotate