frame

Sveiki apsilankę!

Jei forume lankaisi pirmą kartą, kviečiame registruotis ir prisijungti prie diskusijų.

Prisijungti Registruotis

Išrašų administravimas naudojant Logrotate Ubuntu 16.04 aplinkoje

iv_vytenisgiv_vytenisg Super Moderator
edited 2018 vasario 7 Į Monitoringas
attachment.php?attachmentid=324&stc=1&d=1518010570

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
Norėdami palikti komentarą, turite prisijungti arba registruokis.