Lokin kiertämisen määrittäminen Linuxissa. Apache-verkkopalvelimen lokien (ja muidenkin lokien) kierto. Lokitiedoston kokoon ja olemassaoloon liittyvät vaihtoehdot

Jokin aika sitten asensin VPS:ääni skriptin, joka näyttää ajoittain joitain tietoja lokeista olemassa olevalle verkkosivustolle... En kuvaile, millainen komentosarja on ja mistä lokeista se lukee tietoja - se ei ole tärkeää. Mutta tärkeintä on, että jonkin ajan kuluttua palvelin alkoi mennä vaihtoon kaikkein ankarimmalla tavalla ja sen seurauksena hidastui huomattavasti. Kävi ilmi, että lokitiedosto (se, josta tiedot luettiin) oli kasvamassa usean megatavun kokoisiksi ja skripti vei merkittäviä resursseja lukemalla siitä jatkuvasti tietoa...

Joten minun piti määrittää logrotate Linuxissa...

Useimmiten tietyn Linux-ohjelman kehittäjät varmistavat itse, että heidän ohjelmansa luomat lokitiedostot puhdistetaan ja arkistoidaan päivittäin (joko viikoittain/kuukausittain tai näiden lokitiedostojen koosta riippuen). Ja he yleensä tekevät tämän asettamalla ohjelmalleen logrotate.

Tämä tehdään niin, että lokit eivät kasva gigatavun kokoisiksi eivätkä tukkeudu levytila. Useimmiten aikakauslehtien selaamisen tarve tuleekin lähituntien tai -päivien aikana tai korkeintaan viikossa jonkin vian tai ongelman jälkeen. Ja muuten, kuten esimerkistäni voidaan nähdä, joskus isot koot tiedostot eivät vain vie levytilaa, vaan myös hidastavat koko järjestelmää.

Siten logrotate-apuohjelma keksittiin näihin tarkoituksiin. Kuten nimestä todennäköisesti heti käy ilmi, sitä käytetään lokien pyörittämiseen. Se toimii siten, että asetustiedostoissa määritellyissä olosuhteissa (esim. aika tai tiedoston koko) lokitiedostot, joille nämä ehdot on määritetty, arkistoidaan ja lokia aletaan kirjoittaa jo uusi tiedosto. Voit myös määrittää tallennettujen loki-arkistojen määrän, jonka saavuttamisen jälkeen vanhat tiedostot yksinkertaisesti poistetaan. Halutessasi voit lähettää lokit myös sähköpostitse...

Lähes kaikissa valmiissa jakeluissa logrotate on jo asennettu ja käytössä, mutta jos ei, niin se on ehdottomasti saatavilla päävarastossa.

Useammin, ensisijaiset asetukset on jo tallennettu /etc/logrotate.conf-tiedostoon. Saattaa myös olla läsnä erikoisasetukset tietyille ohjelmille /etc/logrotate.d/-hakemistossa. Jotta logrotate-apuohjelma poimii tästä kansiosta olevat tiedostot, päätiedoston tulee sisältää rivi:

sisältää /etc/logrotate.d

sisältää /etc/logrotate.d

Se osoittaa, että tämän hakemiston tiedostot on ikään kuin liitetty pääasetustiedostoon (niin sanotusti "mukana"). Tämän lähestymistavan avulla et joudu vaikeuksiin joka kerta päätiedosto kokoonpano äläkä etsi sieltä ohjeita haluttu ohjelma monien muiden joukossa, mutta vain auki vaadittu tiedosto hänelle ja muokkaa. Jos haluat luoda asetuksia tietylle ohjelmalle, sinun on luotava tiedosto tähän hakemistoon, ja jos haluat peruuttaa tietyn ohjelman lokin kiertämisen, sinun tarvitsee vain poistaa tiedosto (tai tehdä siitä lukukelvoton).

Esimerkkitiedosto /etc/logrotate.conf:

# Aloitamme kierron viikoittain viikoittain # Jätämme kolme uusin tiedosto zhirnalov rotate 3 # Luo uusi tiedosto arkistoidun sijasta # Käytä pakkausta vanhan lokitiedoston pakkaamiseen # Sisällytä tiedostot määritetystä hakemistosta include /etc/logrotate.d # ei paketteja oma wtmp tai btmp - me käännämme ne tässä /var/ log/wtmp ( hiányok kuukausittain luo 0664 root utmp rotate 1 ) /var/log/btmp ( lostok kuukausittain luo 0660 root utmp rotate 1 )

Esimerkki tiedostosta /etc/logrotate.d/programma, jossa ohjelma on sen ohjelman nimi, jonka lokeihin haluat tehdä asetuksia:

/var/log/programma/*.log ( #juokse päivittäin#päivittäin # Suorita vain, jos tiedostokoko on suurempi kuin 1 Mt#minsize=1M # pakkaa kierretty tiedosto puristaa # puristaa edellinen tiedosto seuraavassa kierrossa viivepakkaus # tallennettujen pakattujen fragmenttien määrä pyöritä 5 # enimmäiskoko pakkaamaton tiedosto koko = 999k # puuttuva tiedosto ei ole virhe puuttuu # älä käsittele tyhjiä tiedostoja ilmoitustyhjä # luo välittömästi kierron jälkeen tyhjä tiedosto määritetyillä oikeuksilla ja käyttäjällä # luo 644 ohjelma_user ohjelmaryhmä # Kun olet luonut kopion, rajaa alkuperäinen tiedosto lokitiedostoa sen sijaan, että siirrät vanhan lokitiedoston ja luot uuden # Tätä parametria käytettäessä luomiskäskyllä ​​ei ole vaikutusta, koska vanha tiedosto lehti pysyy paikallaan kopioidatikku # mitä tehdä kierron jälkeen? postrotate chown ohjelma_user:programma_group / var/ log/ ohjelma/ endscript )

/var/log/programma/*.log ( # suorita päivittäin # päivittäin # suorita vain jos tiedoston koko on suurempi kuin 1 Mt # minsize=1M # pakkaa kierretyn tiedoston pakkaus # pakkaa edellinen tiedosto seuraavan kierron viivepakkaus # määrä tallennetut pakatut fragmentit kiertävät 5 # pakkaamattoman tiedoston enimmäiskoko = 999 kt # tiedoston puuttuminen ei ole virhe puuttuu ohjelma_user ohjelma_group # Kopion luomisen jälkeen katkaise alkuperäinen lokitiedosto sen sijaan, että siirrät sen vanhan lokitiedoston ja luot uuden # Tätä parametria käytettäessä Create-käskyllä ​​ei ole vaikutusta, koska vanha lokitiedosto jää paikalleen copytruncate # what tehdä kierron jälkeen ohjelma_user:programma_group /var/log/programma/ endscript )

Logrotate-apuohjelmavaihtoehdot:

-d- (debug) aktivoi virheenkorjaustilan, jossa -v vaihtoehto on myös käytössä; kuitenkin debug-tilassa tiedostot järjestelmäviestit, eikä logrotate-tilatiedostoa, apuohjelma ei muokkaa.

-v- (sanallinen) aktivoi lähtötilan yksityiskohtainen tieto jokaisesta apuohjelman toiminnasta.

-f- (pakottaa) pakottaa logrotate-toiminnon suorittamaan tukkien kiertoa, vaikka apuohjelma itse ei katsoisi sitä tarpeelliseksi. Tästä on joskus hyötyä, kun logrotate-ohjelmaan on lisätty uusia merkintöjä tai jos vanha lokitiedosto on poistettu manuaalisesti; näin luodaan uusia tiedostoja ja kirjaaminen jatkuu oikein.

-m- (mail) kertoo apuohjelmalle, minkä komennon kautta lokit lähetetään sähköposti. Tämä komento voi sisältää kaksi argumenttia: aihe ja vastaanottaja. Komennon pitäisi lukea viesti osoitteesta vakiotulo ja lähetä se sähköpostitse vastaanottajalle. Oletuskomento on /bin/mail -s.

-s- (tila) ohjeistaa apuohjelmaa käyttämään vaihtoehtoinen tiedosto kunto. Tämä on hyödyllistä, jos logrotate suoritetaan muodossa eri käyttäjiä varten erilaisia ​​settejä järjestelmäviestitiedostot. Oletustilatiedosto on /var/lib/logrotate/status.

-? - näyttää lyhyen viittauksen.

--käyttö- näyttää tietoja käytöstä.

Seuraavassa on tietoja direktiiveistä, jotka voidaan määrittää logrotate-määritystiedostossa (täältä):

puristaa
Lokitiedostojen vanhat versiot pakataan (oletuksena gzip). Katso myös nocompress.

pakkaa cmd
Voit määrittää komennon lokitiedostojen pakkaamiseksi. Oletus on gzip. Katso myös pakkaus.

purkaa cmd
Direktiivin avulla voit määrittää komennon lokitiedostojen purkamiseksi. Oletus on gunzip.

pakkausteksti
Jos pakkausta käytetään, määrittää laajennuksen pakattuja tiedostoja aikakauslehtiä. Oletusarvo määritetään pakkauskomennon asetuksista.

pakkausvaihtoehdot
Pakkausohjelma voidaan siirtää vaihtoehtona komentorivi, jos hän käyttää niitä. Gzipin oletusarvo on "-9" (maksimipakkaus).

kopio
Luo lokitiedostosta kopio muuttamatta alkuperäistä tiedostoa ollenkaan. Tätä vaihtoehtoa voidaan käyttää esimerkiksi luomiseen tilannekuva(leikata) nykyinen tiedosto lokiin tai kun jonkin muun apuohjelman on leikattava tai siivottava tiedosto. Kun tätä vaihtoehtoa käytetään, luomiskäskyllä ​​ei ole vaikutusta, koska vanha lokitiedosto pysyy paikallaan.

kopioida katkaista
Katkaise kopioinnin jälkeen alkuperäinen lokitiedosto sen sijaan, että siirrät vanhaa lokitiedostoa ja luot uuden. Tätä voidaan käyttää siinä tapauksessa, että jotakin ohjelmaa ei voida käskeä sulkemaan lokiaan ja voi siten jatkaa jatkuvasti kirjoittamista (lisäämistä) olemassa oleva tiedosto-lehteä. Huomaa, että vaikka tiedoston kopioimisen ja sen katkaisemisen välillä on hyvin lyhyt aika, osa lokiin kirjatuista tiedoista saattaa kadota. Kun tätä vaihtoehtoa käytetään, luomiskäskyllä ​​ei ole vaikutusta, koska vanha lokitiedosto jää paikalleen.

luo tilan omistajaryhmä
Välittömästi kutsun jälkeen (ennen postrotate-komentosarjan suorittamista) luo lokitiedosto (samalla nimellä kuin juuri siirtämäsi loki). Mode-argumentti määrittää lokitiedoston käyttötilan oktaalista (sama kuin chmod(2)), omistaja määrittää käyttäjän nimen, joka omistaa luotu tiedosto loki ja ryhmä määrittää ryhmän, johon lokitiedosto kuuluu. Mikä tahansa näistä määritteistä voidaan jättää pois; tässä tapauksessa määritteitä, joilla on samat arvot kuin alkuperäisellä lokitiedostolla, käytetään sen sijaan uudessa tiedostossa. Tämä vaihtoehto voidaan poistaa käytöstä nocreate-ohjeella.

päivittäin
Lokitiedostojen päivittäinen kierto.

viivepakkaus
Lykkää edellisen lokitiedoston pakkausta seuraavaan kiertovuoroon. Tämä ohje on voimassa vain yhdessä pakkauksen kanssa. Tätä voidaan käyttää, jos ohjelmaa ei voida käskeä sulkemaan lokitiedostoaan, jolloin se voi jatkaa kirjoittamista edelliseen lokitiedostoon jonkin aikaa.

laajennuksen laajennus
Käytön jälkeen lokitiedostot saavat määritetyn laajennuksen. Jos pakkausta käytetään, pakkausohjelma lisää määritetyn laajennuksen jälkeen toisen (yleensä .gz).

jos tyhjä
Siirrä lokitiedostoa, vaikka se olisi tyhjä; tätä käyttäytymistä voidaan muuttaa käyttämällä notifempty-direktiiviä (ifempty on oletuksena käytössä).

sisältää tiedosto_tai_hakemisto
Lukee argumenttina välitetyn tiedoston ikään kuin se sisällytettäisiin rivi riviltä määritystiedoston runkoon paikasta, jossa include-käsky on määritetty. Jos hakemisto on määritetty, sen sisältämät tiedostot luetaan sisään Aakkosjärjestys, ennen kuin se lähetetään sisällytettäväksi. Epäsäännölliset tiedostot (kuten hakemistot ja nimetyt putket) ja laittomiin päätteisiin päättyvät tiedostot (kuten tabooext-parametri määrittää) ohitetaan. Sisällysohjetta ei voi käyttää lokitiedoston määrittelyssä.

postiosoite
Kiertojakson päätyttyä loki lähetetään sähköpostitse osoitteeseen. Jos tätä ei vaadita yksittäisille lokeille, voidaan käyttää nomail-direktiiviä.

mailfirst
Kun käytät mail-komentoa, lähetä juuri siirretty tiedosto, ei edestakaisen matkan suorittanutta lokitiedostoa.

maillast
Kun käytät mail-komentoa, älä lähetä juuri siirrettyä tiedostoa, vaan valmis lokitiedosto (tämä on oletusarvo).

puuttuu
Jos lokitiedostoa ei ole, jatka seuraavan käsittelyyn antamatta virheilmoitusta. Katso myös nomissingok.

kuukausittain
logrotate kiertää lokitiedostoja kerran kuukaudessa (yleensä kunkin kuukauden ensimmäisenä).

ilman pakkausta
Älä gzip lokitiedostojen vanhempia versioita. Katso myös pakkaus.

nocopy
Älä kopioi alkuperäistä lokitiedostoa ja jätä se oletussijaintiin (tämä ohittaa kopiointiparametrin).

nocopytrumpate
Kun olet luonut kopion, älä katkaise alkuperäistä lokitiedostoa sen oletussijaintiin (tämä ohittaa copytruncate-parametrin).

nocreate
Älä luo uutta lokitiedostoa (tämä ohittaa luomiskäskyn).

nodelaycompress
Älä lykkää siirretyn lokitiedoston pakkaamista seuraavaan käyttöjaksoon (tämä ohittaa delaycompress-direktiivin).

nomail
Älä lähetä vanhoja lokitiedostoja postitse.

nomissingok
Jos lokitiedostoa ei ole olemassa, anna virheilmoitus. Tämä on oletusarvoisesti asetettu.

noolddir
Kun lokit on avattu, ne pysyvät samassa hakemistossa kuin nykyiset lokit (tämä ohittaa olddir-direktiivin).

nosharedscripts
Suorita esi- ja jälkikiertokomentosarjat kullekin käsitellylle lokille (tämä on oletustoiminto, ja se voidaan ohittaa sharescripts-parametrilla).

ilmoitustyhjä
Älä siirrä lokia, jos se on tyhjä (tämä ohittaa ifempty-asetuksen).

olddir-hakemisto
Siirrä siirretyt lehdet hakemistoon. Määritetyn hakemiston on sijaittava samassa paikassa fyysinen laite, joka on sama kuin kumottava lokitiedosto. Tätä vaihtoehtoa käytettäessä kaikki lokin vanhat versiot sijoitetaan hakemistoon. Tämä parametri voidaan ohittaa noolddir-parametrilla.

postrotate/endscript
Postrotate- ja endscriptin väliset käskyrivit (jonka itsensä pitäisi olla eri riveillä) suoritetaan lokin käytön jälkeen. Nämä käskyt löytyvät vain lokitiedoston määritelmästä. Katso myös esikierto.

prerotate/endscript
Prerotate- ja endscript-komentojen välissä olevat käskyrivit (jonka itsekin on oltava eri riveillä) suoritetaan ennen lokin kiertämistä ja vain, jos lokia todella kierretään. Nämä käskyt löytyvät vain lokitiedoston määritelmästä. Katso myös jälkikierto.

kiertoajat
Lokitiedostoa siirretään määritetyn määrän kertoja ennen kuin se poistetaan tai lähetetään sähköpostitse postidirektiivissä määritettyyn osoitteeseen. Jos määritetään 0 kertaa, vanha loki poistetaan käytön sijaan.

koko koko
Lokitiedostoja siirretään, kun ne kasvavat määritetty koko tavuissa. Jos koko loppuu M:iin, koko tulkitaan megatavuina. Jos käytät k:tä, voit määrittää koon kilotavuina. Siten koon 100, koon 100k ja koon 100M käskyt ovat oikein.

jaetut skriptit
Yleensä prescript- ja postscript-komentosarjat suoritetaan jokaiselle käsitellylle lokille; tämä tarkoittaa, että sama komentosarja voidaan suorittaa useita kertoja yhdelle useiden tiedostojen määritysmerkinnöille (kuten tiedostossa /var/log/news/*). Jos sharescript-parametri on määritetty, komentosarjat suoritetaan vain kerran riippumatta annettua mallia vastaavien lokien määrästä. Jos mikään mallia vastaavista lokeista ei kuitenkaan vaadi pääsyä, komentosarjoja ei suoriteta ollenkaan. Tämä vaihtoehto ohittaa nosharedscripts-direktiivin.

aloitusnumero
Määrätty numero-- se, josta pyyntöjen laskenta alkaa. Jos esimerkiksi määrität 0, ensimmäisen käyttökerran (alkuperäisen lokitiedoston vaihtamisen) jälkeen lokeille annetaan tunniste .0. Jos määrität 9, lokitiedostot luodaan tunnisteella .9 ohittaen 0-8. Tiedostoja käytetään edelleen (siirretään) niin monta kertaa kuin määräohjeessa on määritetty.

tabooext [+] extension_list
Muuttaa nykyistä kiellettyjen laajennusten luetteloa (katso myös). Jos laajennusluetteloa edeltää +-merkki, tämä luettelo lisätään nykyiseen luetteloon, muuten se korvaa sen. Kun luettelo käynnistetään alun perin, se sisältää seuraavat laajennukset: .rpmorig, .rpmsave,v, .swp, .rpmnew ja ~.

viikoittain
Lokitiedostoja siirretään, jos nykyinen viikonpäivä on pienempi kuin se viikonpäivä, jolloin viimeinen lokikäyttö tapahtui, tai jos siitä on kulunut yli viikko. Tämä on melkein sama kuin tukkien kiertäminen maanantaisin, mutta toimii paremmin, jos logrotatea ei ajeta joka ilta.

PS: Muutosten tekemisen jälkeen niiden käyttöönottamiseksi on suositeltavaa ajaa päätteessä superkäyttäjänä:

sudo logrotate -f -v /etc/logrotate.conf

sudo logrotate -f -v /etc/logrotate.conf

Kuten lukijan vastaus osoitti, lokin kierto on yksi aiheista, joka aiheuttaa jonkin verran vaikeuksia. Erityisesti ongelmia syntyy squid-välityspalvelimen lokien vuorottelun asettamisessa, mikä vaikeuttaa raporttien saamista pitkäksi ajaksi. Siksi päätimme selventää ja kertoa sinulle, mitä tukkien kierto on ja miten se asetetaan.

Järjestelmä tallentaa kaikki huomion arvoiset tapahtumat lokitiedostoihin tai lokitiedostoihin, joita voidaan myöhemmin käyttää vikojen analysointiin, tilastojen hankkimiseen, tapausten tutkimiseen jne. ja niin edelleen. Kirjauksen tarve, tallennettavat tapahtumat, niiden yksityiskohdat ja täydellisyys määritellään yleensä tietyn palvelun konfiguraatiossa ja niillä on pääsääntöisesti joitain oletusasetuksia, jotka sopivat useimmille käyttäjille.

Tällaisten tiedostojen hallitsemattoman kasvun välttämiseksi tarvitaan mekanismi, joka rajoittaa tietueiden määrän johonkin kohtuulliseen rajaan, joka voi olla tiedostokoko, jonka ylittyessä vanhat tietueet korvataan, tai ajanjakso, jonka jälkeen tietueilla ei ole enää merkitystä. ja voidaan poistaa. SISÄÄN Ubuntu palvelin tällaista mekanismia kutsutaan tukkien kierto ja se toteutetaan käyttämällä järjestelmäpalvelu logrota.

Kuten nimestä voi päätellä, lokin kierto korvaa ajoittain vanhat lokit uusilla, sijoittamalla vanhentuneet tiedot arkistoon tai yksinkertaisesti poistamalla ne. Asetuksista riippuen lokiarkisto voidaan tallentaa joko pakattuna tai pakkaamattomana ja sillä on vaadittu syvyys.

Täällä ei ole rajoituksia, paitsi maalaisjärkeä ja äänenvoimakkuus kovalevy, jonka avulla voit mukauttaa prosessia tarpeidesi mukaan. Voit esimerkiksi tehdä päivittäisen kierron ja tallentaa eilisen lokin pakkaamattomassa muodossa ja loput arkistoon. Jokaisen seuraavan kierroksen yhteydessä ketju näyttää siirtyvän, viimeisin loki korvataan toiseksi viimeisellä lokilla ja nykyinen loki tyhjennetään (tai luodaan uudelleen).

Katsotaanpa kierron määrittämistä lokien avulla esimerkkinä squid-välityspalvelin, mikä aiheuttaa lukuisia vaikeuksia lukijoillemme. Peruskiertoasetukset on tallennettu /etc/logrotate.conf, lisäksi yksittäisillä palveluilla voi olla omat asetukset rotaatiot, jotka tallennetaan hakemiston erityisiin tiedostoihin /etc/logrotate.d, jonka asetukset ovat päällekkäisiä asetusten kanssa logrotate.conf.

Tämän lähestymistavan avulla voit määrittää vuorottelun joustavasti kullekin tietylle palvelulle vaikuttamatta Yleiset asetukset. Itse palveluun soitetaan kerran päivässä ajastimen kautta cron.

Avataan tiedosto /etc/logrotate.d/squid, meillä on se seuraava näkymä:

#
#Logrotate pirstoutuminen kalmarille.
#
/var/log/squid/*.log (
päivittäin
puristaa
viivepakkaus
pyöritä 2
puuttuu
nocreate
jaetut skriptit
esikierto
testata! -x /usr/sbin/sarg-reports || /usr/sbin/sarg-reports
loppukirjoitus
kiertää jälkikäteen
testata! -e /var/run/squid.pid || /usr/sbin/squid -k kiertää
loppukirjoitus
}

Katsotaanpa sen rakennetta tarkemmin. Ensimmäinen rivi määrittää polun käsiteltäviin lokitiedostoihin. SISÄÄN tässä tapauksessa kaikki hakemiston tiedostot käsitellään /var/log/squid alla olevien vaihtoehtojen mukaan:

  • päivittäin- asettaa päivittäisen kierron viikoittaiseen tai kuukausittaiseen käyttöön viikoittain tai kuukausittain.
  • puristaa- määrittää arkistoitujen lokien pakkaamisen, päinvastainen vaihtoehto ilman pakkausta.
  • viivepakkaus- älä pakkaa nykyistä lokia ennen seuraavaa kiertoa, käytetään yleensä tapauksissa, joissa lokissa tapahtuu jatkuvaa tallennusta.
  • pyöritä 2- kierrosten lukumäärä ennen tiedoston poistamista, tässä tapauksessa tallennetaan kaksi arkistoa.
  • puuttuu- jos lokitiedostoa ei ole, osoittaa, että työskentelyä jatketaan ilman virheilmoitusta.
  • nocreate- älä luo uutta lokitiedostoa.
  • jaetut skriptit- käytetään osissa esikierto Ja kiertää jälkikäteen, tämä vaihtoehto määrittää näiden osien komentosarjojen suorittamisen kerran ennen kiertoa ja sen jälkeen kaikille lokit, muuten komentosarjat suoritetaan ennen kiertoa ja sen jälkeen kaikille Hirsi.

Alla on osiot esikierto Ja kiertää jälkikäteen, joista jokainen päättyy riviin loppukirjoitus, kaikki, mikä on näiden rivien välissä, suoritetaan ennen kiertoprosessia ja sen jälkeen.

osio kiertää jälkikäteen tarkistaa, onko squid käynnissä ja käynnistää välityspalvelimen itse lokien kiertämisen. Pysähdytään tähän kohtaan hieman yksityiskohtaisemmin. Squid-määritystiedostossa on vaihtoehto:

Logfile_rotate n

Missä n- kierrosten lukumäärä (oletus 0), ts. Kalmari itsessään voi varastoida useita kiertoja tukia, joista jokainen puolestaan ​​käsitellään logrotatella. Oletusasetuksilla tämä käsky aiheuttaa pääkalmarilokin tyhjentämisen.

osio esikierto lisätään automaattisesti asennuksen aikana ja jos tiedosto /usr/sbin/sarg-reports on olemassa ja on suoritettava, suorittaa sen.

Erikseen kannattaa keskittyä komentojen tallentamiseen, ja niissä käytetty rakenne ei ehkä ole selvä ensimmäisellä kerralla. Tässä tapauksessa käytetään kaksoisnegatiota, jos ehdon negaatio on epätosi, suoritetaan ||-symbolin jälkeen määritetty komento. (looginen TAI), tämä liittyy komennon logiikkaan testata ja tiedoston kirjoitussyntaksi ( Huutomerkki testin jälkeen osoittaa ehdon negatiivisen).

Kuten näet, logrotate antaa sinun määrittää lokin kiertoprosessin erittäin joustavasti. Joten jos haluamme tuottaa tilastoja kalmareiden käytöstä kuukausittain, meidän on ilmoitettava kiertojakso - kuukausi ja osiossa esikierto muuta komento luodaksesi kuukausiraportin.

Linuxissa useimmat taustalla toimivat palvelut ja ohjelmat, kuten Apache, Nginx, Postfix ja muut, tallentavat tietoja tilastaan, tuloksistaan ​​ja virheistään lokitiedostoihin. Normaali sijainti lokit tai kuten niitä kutsutaan myös - lokit - kansiossa /var/log.

Lokianalyysin avulla voit ymmärtää, mikä toimii väärin, miksi virhe tapahtui ja kuinka ongelma ratkaistaan. Mutta yksi ongelma piilee. Lokien koko kasvaa jatkuvasti ja ne vievät yhä enemmän levytilaa, joten lokit on puhdistettava ajoissa ja poistettava vanhentuneet merkinnät, jotta ne eivät häiritse normaalia toimintaa. Tämä voidaan tehdä manuaalisesti ajoittain tai asettamalla Cron-skriptit, mutta on vielä helpompi vaihtoehto - logrotate-apuohjelma. Tämä artikkeli käsittelee logrotaten määrittämistä ja sen käyttöä.

Logrotate-apuohjelma on suunniteltu automatisoimaan lokinkäsittelyä. Hän voi esiintyä heidän kanssaan Tarvittavat toimet tiettyjen ehtojen ja noudattamissääntöjen mukaisesti. Voit esimerkiksi pakata lokit arkistoon tai lähettää ne toiselle palvelimelle, kun ne saavuttavat tietyn koon, iän tai muut parametrit.

Voit asettaa ehtoja tarkistettavaksi päivittäin, viikoittain tai kuukausittain. Tämän avulla voit luoda lokin kiertomallin, joka on kätevä sinulle ja palvelimellesi. Myös lokin kierto voi olla hyödyllistä kotitietokone, mutta tässä se ei ole yhtä tärkeää kuin palvelimilla, joissa Apachen lokeihin voidaan kirjoittaa jopa satoja tuhansia rivejä päivittäin.

Asetetaan Logrotate

Logrotate on suosittu apuohjelma, joten useimmat jakelut tulevat sen mukana oletusarvoisesti. Voit varmistaa, että ohjelma on asennettu jakeluusi yrittämällä asentaa sen. Esimerkiksi CentOS:ssä:

sudo yum asenna logrotate

Tai Ubuntussa ja siihen perustuvissa jakeluissa:

sudo apt install logrotate

Nyt, vaikka apuohjelmaa ei olisi asennettu, asennat sen. Kaikki ohjelman perusasetukset ovat /etc/logrotate.conf-tiedostossa, Lisäasetukset, jotka koskevat sääntöjä ja muita ominaisuuksia, voidaan sijoittaa kansioon /etc/logroate.d/. Voit sijoittaa kaikki logroatae-asetukset suoraan pääasetustiedostoon, on oikeampi, jos kunkin asetukset erillinen palvelu tulee olemaan erillinen tiedosto, /etc/logrotate.d/-kansiossa.

Jotta ohjelma voi ladata tämän kansion asetustiedostot, sinun on lisättävä seuraava rivi pääasetustiedostoon:

vi /etc/logrotate.conf

sisältää /etc/logrotate.d

Varmista vain, että se on jo siellä. Katsotaanpa ensin perusdirektiivejä, joita noudatamme asennuksen aikana. Tässä direktiivit eivät näytä aivan tavallisilta, direktiivi itse määrittelee mitä on tehtävä ja milloin, ja tarvittaessa, se annetaan Lisävaihtoehdot. Määrittääksesi, kuinka usein olosuhteet tulee tarkistaa, käytetään seuraavia ohjeita:

  • tunnin välein- joka tunti;
  • päivittäin- joka päivä;
  • viikoittain- joka viikko;
  • kuukausittain- joka kuukausi;
  • vuosittain- Joka vuosi.

Lokien hallinnan ja käsittelyn perusohjeet:

  • kiertää- osoittaa kuinka monta vanhaa lokia on varastoitava, määrä välitetään parametreissa;
  • luoda- ilmaisee, että on tarpeen luoda tyhjä lokitiedosto vanhan siirtämisen jälkeen;
  • päivämääräteksti- lisää kiertopäivämäärän ennen vanhan lokin otsikkoa;
  • puristaa- osoittaa, että loki on pakattava;
  • viivepakkaus- älä pakkaa viimeistä ja toiseksi viimeistä päiväkirjaa;
  • laajennus- tallenna alkuperäinen lokitiedosto kiertämisen jälkeen, jos sillä on määritetty tunniste;
  • postia- lähetä sähköposti, kun kierto on suoritettu;
  • maxage- kiertää tukia, jos ne ovat ilmoitettua vanhempia;
  • puuttuu- älä luo virheitä, jos lokitiedostoa ei ole olemassa;
  • olddir- siirtää vanhat lokit erilliseen kansioon;
  • postrotate/endscript- suorittaa mielivaltaisia ​​komentoja pyörityksen jälkeen;
  • alkaa- numero, josta vanhojen tukkien numerointi alkaa;
  • koko- puun koko, kun sitä siirretään;

Nämä ovat perusdirektiivit, joita käytämme. Pääkonfiguraatiotiedosto sisältää yleisen kokoonpanon, käskyt, jotka koskevat kaikkia lokeja, jos niiden vaikutusta ei ole peruutettu. Jokainen pyöritettävä tuki on kuvattu seuraavasti:

lokitiedoston_osoite {
direktiivit
}

Luodaan nyt tiedosto rsyslog.conf kansioon /etc/logrotate.d/ ja asetetaan lokin kiertämisen asetukset siihen:

/var/log/messages (
päivittäin
pyöritä 3
koko 10M
puristaa
viivepakkaus
}

Nämä asetukset tarkoittavat, että lokit pyörivät päivittäin ja säilytämme kolme viimeisintä lokia, vanhemmat kopiot poistetaan automaattisesti. Minimikoko kierto - 10 megatavua, kiertoa ei suoriteta, jos loki ei vie yli 10 megatavua. Pakkaamista käytetään kaikissa lokeissa paitsi viimeisessä ja toiseksi viimeisessä. Täsmälleen samaa periaatetta noudattaen voit määrittää lokin kiertämisen mille tahansa lokille. Sinun on luotava tällainen osio jokaiselle lokille, jota haluat hallita.

Nyt on vain testattava, kuinka kokoonpanomme toimii. Voit tehdä tämän suorittamalla logrotate-apuohjelman vaihtoehdolla -d. Se tulostaa kaiken, mitä se suunnittelee, mutta ei muuta levyllä olevia tiedostoja. Meillä on tiedosto /var/log/messages, kooltaan 40 megatavua, katsotaan mitä apuohjelma tekee:

logrotate -d /etc/logrotate.d/rsyslog.conf


Kuten näet, ohjelma tunnistaa lokitiedoston ja jakaa sen useisiin osiin. Voit varmistaa, että logrotate toimii odotetulla tavalla tarkistamalla cron-aikataulu:

ls /var/cron.daily/

Logrotate-asennus on valmis, ja sinun tarvitsee vain kuvata, kuinka tukkeja käännetään kunkin paljon tilaa vievän tukin kohdalla.

johtopäätöksiä

Tässä artikkelissa tarkastelimme, kuinka logrotate centos tai mikä tahansa muu määritetään Linux-jakelu. Apuohjelman toiminta ei eroa paljon jakelusta riippuen. Jos sinulla on palvelin raskas kuorma, sinun on ehdottomasti määritettävä lokin kierto. Toivottavasti näistä tiedoista oli sinulle hyötyä. Lopuksi video siitä, kuinka lokit kierrätetään Ubuntussa LPIC:stä:

Ja vielä yksi asia englanniksi:

Logrotate on sovellus, joka on suunniteltu helpottamaan sitä lokitiedostojen hallinta. Erityisesti Logrotate hyödyllinen siellä, missä se on luotu suuri määrä lokitiedostot. Apuohjelma antaa sinulle mahdollisuuden automaattinen tila arkistoida, poistaa, tyhjentää ja lähettää lokitiedostoja sähköpostitse. Tätä prosessia kutsutaan yleensä ns lokitiedoston kierto.

Logrotate voidaan asettaa pyörimään päivittäin, viikoittain tai kuukausittain. Lisäksi voit asettaa tiedostokoon, jonka saavuttaessa tiedosto käännetään. Yleensä logrota toimii päivittäisenä cron-työnä.

Logrotate asennus
Asennus on tavallista Debian/Ubuntu-pohjaisissa jakeluissa:

$ sudo aptitude asenna logrotate Lyhyt kuvaus tiedostosta Logrota asetukset Kuvaus miten Logrotate toimii yhden tai toisen lokitiedoston kanssa, joka sijaitsee erityisessä määritystiedostossa. Yleensä ne sijaitsevat hakemistossa /etc/logrotate.d/. Esimerkiksi apache2:n asetustiedosto näyttää tältä: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log ( viikoittain # kiertää kerran viikossa missingok # puuttuva tiedosto ei ole virhe rotate 52 # viimeiset 52 tallennettua käännetyn tiedoston pakkaus # pakkaa kierrettyä tiedostoa viivepakkaus # pakkaa edellinen tiedosto seuraavan kierron aikana # (eli tiedostoa *.log.1 ei pakata, mutta *.log.2 ja edelleen pakattu) notifepty # älä käsittele tyhjät tiedostot luo 640 root adm # heti rotaation jälkeen, luo tyhjä tiedosto annetuilla oikeuksilla ja käyttäjä jakoskriptit # prerotate/postrotate kryptejä suoritetaan vain kerran # riippumatta lokien määrästä, jotka vastaavat annettua mallia postrotate # komentosarja tulee suoritetaan välittömästi kääntämisen jälkeen, jos [ -f "`. /etc/apache2/envvars ; echo $(APACHE_PID_FILE:-/var/run/apache2.pid)`" ], sitten /etc/init.d/apache2 reload > /; dev/null fi endscript )

Tässä tapauksessa ensimmäinen rivi /var/log/apache2/*.log ei ole mitään muuta kuin käsiteltyjen lokitiedostojen malli. Se tarkoittaa, että määritettyä kiertokokoonpanoa käytetään kaikille tiedostoille, jotka sijaitsevat hakemistossa /var/log/apache2/ ja joiden tunniste on "log".

Asetustiedostossa on paljon kelvollisia ohjeita (yli 40). Lisätietoja niistä löytyy osoitteesta mies logrotate.

Logrotate perusasetukset

Pääsääntöisesti määritystiedoston määrittämisen jälkeen on tarpeen tarkistaa toiminta logrota uusia tukia varten. Tähän on mahdollisuus suora laukaisu logrota komentoriviltä. Seuraavat vaihtoehdot ovat sallittuja:

  • -d. Ottaa käyttöön virheenkorjaustilan ja myös kopioida vaihtoehdon -v. Vianetsintätilassa lokien kanssa ei suoriteta toimintoja.
  • -f, --voima. Saa logrotate suorittamaan lokin kierron. Joskus tarvitaan uusien lisäämisen jälkeen asetustiedostot tai jos vanha tukki tiedosto poistettiin manuaalisesti; näin luodaan uusia lokitiedostoja ja kirjaaminen jatkuu oikein.
  • -m, --mail komento . Määrittää, mitä komentoa käytetään lokien lähettämiseen postitse. Komennon on hyväksyttävä 2 syöttöparametria:
    • kirjeen otsikko
    • kirjeen vastaanottaja
  • -s, --tila tilatiedosto . Osoittaa vaihtoehtoisen tilatiedoston käytön. Hyödyllinen tapauksissa, joissa logrotate on käynnissä eri käyttäjinä eri lokitiedostosarjoille. Oletustilatiedosto: /var/lib/logrotate/status
  • --käyttö. Lähdöt lyhyet ohjeet apuohjelman käytöstä.
  • -v, --sanallinen. Diagnostisten viestien näyttäminen pyörityksen aikana

Logrotate-kokoonpanoesimerkki

Esimerkkinä sanotaan, että hakemistossa /home/site/site/logs/ Web-palvelimien, kuten nginx ja apache, lokitiedostot sijaitsevat. Ne toimivat yhdessä: - frontend, apache2-backend.

$ more /etc/logrotate.d/debianworld.ru # Nginx-lokin rotaatio (etuosa) # Antaa staattista dataa, kaikki muu välitetään apachelle. # Hakkuita tehdään intensiivisemmin. /home/dw/debianworld.ru/logs/nginx_*.log ( päivittäin # päivittäinen kierto puuttuu pakattu, loput pakataan notifempty # älä käsittele tyhjiä tiedostoja luo 640 dw www-data # oikeudet, uuden tiedoston käyttäjä sharescripts # prerotate/postrotate suoritetaan vain 1 kerran esirotate # Kerää vierailijatilastoja AWstatsille /usr/bin/perl /usr/lib/cgi-bin/awstats .pl -update -config=debianworld.ru -databasebreak=day endscript postrotate # Käynnistä nginx [ ! -f /var/run/nginx.pid ] ||. var/run/nginx.pid` endscript ) # Apache2:n lokikierto (back-end) # Kirjaaminen tapahtuu vähemmän intensiivisesti. /home/dw/debianworld.ru/logs/apache*.log ( viikoittainen # viikoittainen kierto puuttuu notifempty # ei käsittele tyhjiä tiedostoja luo 640 dw www-data # oikeudet, uuden tiedoston käyttäjä jaetut skriptit # postrotate suoritetaan vain 1 kerran postrotate # Käynnistä apache2 uudelleen, jos [ -f /var/run/apache.pid ] sitten /etc/init. d/apache2 uudelleenkäynnistys > /dev/null fi endscript )

Logrotate on sovellus, joka on suunniteltu helpottamaan sitä lokitiedostojen hallinta. Erityisesti Logrotate hyödyllinen, kun luodaan suuri määrä lokitiedostoja. Apuohjelman avulla voit automaattisesti arkistoida, poistaa, tyhjentää ja lähettää lokitiedostoja sähköpostitse. Tätä prosessia kutsutaan yleensä ns lokitiedoston kierto.

Logrotate voidaan asettaa pyörimään päivittäin, viikoittain tai kuukausittain. Lisäksi voit asettaa tiedostokoon, jonka saavuttaessa tiedosto käännetään. Yleensä logrota toimii päivittäisenä cron-työnä.

Logrotate asennus
Asennus on tavallista Debian/Ubuntu-pohjaisissa jakeluissa:

$ sudo aptitude asenna logrotate Lyhyt kuvaus Logrotate-asetustiedostosta Kuvaus miten Logrotate toimii yhden tai toisen lokitiedoston kanssa, joka sijaitsee erityisessä määritystiedostossa. Yleensä ne sijaitsevat hakemistossa /etc/logrotate.d/. Esimerkiksi apache2:n asetustiedosto näyttää tältä: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log ( viikoittain # kiertää kerran viikossa missingok # puuttuva tiedosto ei ole virhe rotate 52 # viimeiset 52 tallennettua käännetyn tiedoston pakkaus # pakkaa kierrettyä tiedostoa viivepakkaus # pakkaa edellinen tiedosto seuraavan kierron aikana # (eli tiedostoa *.log.1 ei pakata, mutta *.log.2 ja edelleen pakattu) notifepty # älä käsittele tyhjät tiedostot luo 640 root adm # heti rotaation jälkeen, luo tyhjä tiedosto annetuilla oikeuksilla ja käyttäjä jakoskriptit # prerotate/postrotate kryptejä suoritetaan vain kerran # riippumatta lokien määrästä, jotka vastaavat annettua mallia postrotate # komentosarja tulee suoritetaan välittömästi kääntämisen jälkeen, jos [ -f "`. /etc/apache2/envvars ; echo $(APACHE_PID_FILE:-/var/run/apache2.pid)`" ], sitten /etc/init.d/apache2 reload > /; dev/null fi endscript )

Tässä tapauksessa ensimmäinen rivi /var/log/apache2/*.log ei ole mitään muuta kuin käsiteltyjen lokitiedostojen malli. Se tarkoittaa, että määritettyä kiertokokoonpanoa käytetään kaikille tiedostoille, jotka sijaitsevat hakemistossa /var/log/apache2/ ja joiden tunniste on "log".

Asetustiedostossa on paljon kelvollisia ohjeita (yli 40). Lisätietoja niistä löytyy osoitteesta mies logrotate.

Logrotate perusasetukset

Pääsääntöisesti määritystiedoston määrittämisen jälkeen on tarpeen tarkistaa toiminta logrota uusia tukia varten. Tätä varten on mahdollista käynnistää suoraan logrota komentoriviltä. Seuraavat vaihtoehdot ovat sallittuja:

  • -d. Ottaa käyttöön virheenkorjaustilan ja myös kopioida vaihtoehdon -v. Vianetsintätilassa lokien kanssa ei suoriteta toimintoja.
  • -f, --voima. Saa logrotate suorittamaan lokin kierron. Se voi olla tarpeen uusien asetustiedostojen lisäämisen jälkeen tai jos vanha lokitiedosto on poistettu manuaalisesti; näin luodaan uusia lokitiedostoja ja kirjaaminen jatkuu oikein.
  • -m, --mail komento . Määrittää, mitä komentoa käytetään lokien lähettämiseen postitse. Komennon on hyväksyttävä 2 syöttöparametria:
    • kirjeen otsikko
    • kirjeen vastaanottaja
  • -s, --tila tilatiedosto . Osoittaa vaihtoehtoisen tilatiedoston käytön. Hyödyllinen tapauksissa, joissa logrotate on käynnissä eri käyttäjinä eri lokitiedostosarjoille. Oletustilatiedosto: /var/lib/logrotate/status
  • --käyttö. Näyttää lyhyet ohjeet apuohjelman käyttöön.
  • -v, --sanallinen. Diagnostisten viestien näyttäminen pyörityksen aikana

Logrotate-kokoonpanoesimerkki

Esimerkkinä sanotaan, että hakemistossa /home/site/site/logs/ Web-palvelimien, kuten nginx ja apache, lokitiedostot sijaitsevat. Ne toimivat yhdessä: - frontend, apache2-backend.

$ more /etc/logrotate.d/debianworld.ru # Nginx-lokin rotaatio (etuosa) # Antaa staattista dataa, kaikki muu välitetään apachelle. # Hakkuita tehdään intensiivisemmin. /home/dw/debianworld.ru/logs/nginx_*.log ( päivittäin # päivittäinen kierto puuttuu pakattu, loput pakataan notifempty # älä käsittele tyhjiä tiedostoja luo 640 dw www-data # oikeudet, uuden tiedoston käyttäjä sharescripts # prerotate/postrotate suoritetaan vain 1 kerran esirotate # Kerää vierailijatilastoja AWstatsille /usr/bin/perl /usr/lib/cgi-bin/awstats .pl -update -config=debianworld.ru -databasebreak=day endscript postrotate # Käynnistä nginx [ ! -f /var/run/nginx.pid ] ||. var/run/nginx.pid` endscript ) # Apache2:n lokikierto (back-end) # Kirjaaminen tapahtuu vähemmän intensiivisesti. /home/dw/debianworld.ru/logs/apache*.log ( viikoittainen # viikoittainen kierto puuttuu notifempty # ei käsittele tyhjiä tiedostoja luo 640 dw www-data # oikeudet, uuden tiedoston käyttäjä jaetut skriptit # postrotate suoritetaan vain 1 kerran postrotate # Käynnistä apache2 uudelleen, jos [ -f /var/run/apache.pid ] sitten /etc/init. d/apache2 uudelleenkäynnistys > /dev/null fi endscript )