Kuweka mzunguko wa kumbukumbu katika Linux. Mzunguko wa magogo ya seva ya wavuti ya Apache (na magogo mengine yoyote pia). Chaguzi zinazohusiana na saizi ya faili ya kumbukumbu na uwepo

Wakati fulani uliopita niliweka script kwenye VPS yangu ambayo mara kwa mara inaonyesha baadhi ya taarifa kutoka kwa kumbukumbu kwenye tovuti iliyopo ... Sitaelezea ni aina gani ya script na ni kumbukumbu gani zinazosoma habari kutoka - sio muhimu. Lakini jambo muhimu ni kwamba baada ya muda seva ilianza kubadilishana kwa njia kali zaidi, na matokeo yake, polepole polepole. Ilibadilika kuwa faili ya logi (ile ambayo habari hiyo ilisomwa) ilikuwa inakua kwa saizi nyingi za megabyte, na maandishi yalikuwa yakila rasilimali muhimu, ikisoma habari kutoka kwake kila wakati ...

Kwa hivyo ilinibidi kusanidi logrotate kwenye Linux ...

Mara nyingi, watengenezaji wa programu fulani ya Linux wenyewe huhakikisha kwamba faili za logi zilizoundwa na programu zao zinasafishwa na kuhifadhiwa kumbukumbu zao kila siku (ama kila wiki / mwezi, au kulingana na ukubwa wa faili hizi za kumbukumbu). Na kwa kawaida hufanya hivyo kwa kuweka logrotate kwa programu yao.

Hii imefanywa ili magogo hayakua kwa ukubwa wa gigabyte na usiifunge nafasi ya diski. Baada ya yote, mara nyingi hitaji la kupekua-pekua magazeti huja katika saa au siku chache zijazo, au angalau kwa wiki, baada ya kuvunjika au shida fulani. Na kwa njia, kama inavyoweza kuonekana kutoka kwa mfano wangu, wakati mwingine saizi kubwa faili haziwezi tu kuchukua nafasi ya diski, lakini pia husababisha mfumo mzima kupungua.

Kwa hivyo, matumizi ya logrotate ilizuliwa kwa madhumuni haya. Kama inavyoonekana wazi mara moja kutoka kwa jina, hutumiwa kuzungusha magogo. Njia inavyofanya kazi ni kwamba chini ya hali zilizoainishwa katika faili za usanidi (kwa mfano, wakati au saizi ya faili), faili za logi ambazo hali hizi zimeainishwa zimewekwa kwenye kumbukumbu na logi huanza kuandikwa tayari. faili mpya. Unaweza pia kutaja idadi ya kumbukumbu za kumbukumbu zilizohifadhiwa, baada ya kufikia faili gani za zamani zitafutwa tu. Ukipenda, unaweza hata kutuma kumbukumbu kwa barua pepe...

Karibu katika usambazaji wote uliopangwa tayari, logrotate tayari imewekwa na kuwezeshwa, lakini ikiwa sivyo, basi ni dhahiri inapatikana katika hifadhi kuu.

Mara nyingi zaidi, mipangilio ya msingi tayari kuhifadhiwa katika /etc/logrotate.conf faili. Inaweza pia kuwepo mipangilio maalum kwa programu maalum katika saraka ya /etc/logrotate.d/. Ili faili kutoka kwa folda hii zichukuliwe na shirika la logrotate, faili kuu lazima iwe na mstari:

ni pamoja na /etc/logrotate.d

ni pamoja na /etc/logrotate.d

Inaonyesha kuwa faili kutoka kwa saraka hii, kama ilivyokuwa, zimeunganishwa kwenye faili kuu ya mipangilio (kwa kusema, "imejumuishwa"). Njia hii hukuruhusu usiingie kwenye shida kila wakati faili kuu usanidi na usitafute maagizo hapo programu inayotaka kati ya wengine wengi, lakini wazi tu faili inayohitajika kwa ajili yake na kuhariri. Ili kuunda mipangilio ya programu fulani, unahitaji kuunda faili katika saraka hii, na kufuta mzunguko wa logi kwa programu maalum, unahitaji tu kufuta faili (au kuifanya isisomeke).

Mfano wa faili /etc/logrotate.conf:

# Tunaanza mzunguko kila wiki kila wiki # Tunaacha tatu faili ya hivi karibuni zhirnalov zungusha 3 # Unda faili mpya badala ya ile iliyohifadhiwa unda # Tumia compression ya faili ya logi ya urithi # Jumuisha faili kutoka kwa saraka maalum ni pamoja na /etc/logrotate.d # hakuna vifurushi mwenyewe wtmp, au btmp - tutazunguka yao hapa /var/ log/wtmp ( missingok kila mwezi unda 0664 root utmp zungusha 1 ) /var/log/btmp ( missingok kila mwezi unda 0660 root utmp zungusha 1 )

Mfano wa faili /etc/logrotate.d/programma, ambapo programma ni jina la programu ambayo ungependa kuweka mipangilio yake:

/var/log/programma/*.log ( # kukimbia kila siku#kila siku # tekeleza tu ikiwa saizi ya faili ni kubwa kuliko 1MB#minsize=1M # compress faili iliyozungushwa kubana #kubana faili iliyotangulia katika mzunguko unaofuata delaycompress Idadi # ya vipande vilivyobanwa vilivyohifadhiwa mzunguko 5 # ukubwa wa juu faili isiyobanwa ukubwa =999k Faili # inayokosekana sio kosa kukosa #usichakate faili tupu notfempty # mara baada ya kuzungusha kuunda faili tupu na haki maalum na mtumiaji # unda 644_programma_kikundi_cha_programu_ya_mtumiaji # Baada ya kuunda nakala, punguza faili asili log badala ya kusonga faili ya logi ya zamani na kuunda mpya # Unapotumia parameta hii, maagizo ya kuunda haina athari, kwani faili ya zamani gazeti linabaki mahali pake copytruncate # nini cha kufanya baada ya mzunguko? postrotate chown programma_user:programma_group / var/ log/ programma/ endscript)

/var/log/programma/*.log ( # endesha kila siku # kila siku # tekeleza ikiwa tu ukubwa wa faili ni mkubwa kuliko MB 1 # minsize=1M # gandamiza faili iliyozungushwa # bana faili iliyotangulia wakati wa kucheleweshwa kwa mzunguko unaofuata. vipande vilivyoshinikizwa vilivyohifadhiwa huzunguka 5 # saizi ya juu ya faili isiyoshinikizwa size=999k # kukosekana kwa faili sio kosa kukosa # usichakate faili tupu notifempty # mara baada ya kuzungusha kuunda faili tupu na haki zilizobainishwa na mtumiaji # unda 644 programma_user programma_group # Baada ya kuunda nakala, punguza faili ya logi ya asili badala ya kuisonga faili ya logi ya zamani na kuunda mpya # Unapotumia paramu hii, maagizo ya kuunda hayana athari, kwani faili ya logi ya zamani inabaki mahali pake copytruncate # nini kufanya baada ya kuzungusha? postrotate chown programma_user:programma_group /var/log/programma/ endscript )

Chaguzi za matumizi ya Logrotate:

-d- (debug) huwasha hali ya utatuzi, ambayo -v chaguo pia imewezeshwa; hata hivyo, katika hali ya utatuzi faili ujumbe wa mfumo, pamoja na faili ya hali ya logrotate, haijabadilishwa na matumizi.

-v- (verbose) huwasha hali ya pato maelezo ya kina kuhusu kila hatua ya matumizi.

-f- (nguvu) hulazimisha logrotate kufanya mzunguko wa logi, hata kama shirika lenyewe halioni kuwa ni muhimu. Hii wakati mwingine ni muhimu baada ya kuongeza maingizo mapya ili kusajili au ikiwa faili ya zamani ya kumbukumbu imefutwa kwa mikono; kwa njia hii faili mpya zitaundwa na ukataji miti utaendelea kwa usahihi.

-m- (barua) huambia shirika ni amri gani ya kutumia kutuma kumbukumbu kupitia barua pepe. Amri hii inaweza kuchukua hoja mbili: somo na mpokeaji. Amri inapaswa kusoma ujumbe kutoka pembejeo ya kawaida na utume kwa barua pepe kwa mpokeaji. Amri chaguo-msingi ni /bin/mail -s.

-s- (hali) inaelekeza matumizi ya matumizi faili mbadala hali. Hii ni muhimu ikiwa logrotate inaendeshwa kama watumiaji mbalimbali Kwa seti tofauti faili za ujumbe wa mfumo. Faili ya hali chaguo-msingi ni /var/lib/logrotate/status.

-? - inaonyesha kumbukumbu fupi.

-- matumizi- Inaonyesha habari kuhusu matumizi.

Ifuatayo ni habari kuhusu maagizo ambayo yanaweza kubainishwa katika faili ya usanidi ya logrotate (kutoka hapa):

kubana
Matoleo ya zamani ya faili za kumbukumbu yatabanwa (gzip kwa chaguomsingi). Tazama pia nocompress.

compresscmd
Inakuruhusu kubainisha amri ya kubana faili za kumbukumbu. Chaguomsingi ni gzip. Tazama pia compress.

uncompresscmd
Maagizo hukuruhusu kutaja amri ya kupunguza faili za logi. Chaguomsingi ni gunzip.

compressext
Ikiwa compression inatumiwa, inabainisha ugani faili zilizobanwa magazeti. Chaguo-msingi imedhamiriwa kutoka kwa mipangilio ya amri ya ukandamizaji.

compressoptions
Mpango wa compression unaweza kupitishwa chaguo mstari wa amri, ikiwa atazitumia. Chaguo-msingi kwa gzip ni "-9" (ukandamizaji wa juu).

nakala
Unda nakala ya faili ya kumbukumbu bila kubadilisha asili kabisa. Chaguo hili linaweza kutumika, kwa mfano, kuunda picha(kata) faili ya sasa log, au wakati matumizi mengine yanahitaji kupunguza au kusafisha faili. Wakati chaguo hili linatumiwa, mwongozo wa kuunda hauna athari, kwani faili ya zamani ya logi inabakia.

copytruncate
Baada ya kufanya nakala, punguza faili ya logi ya asili badala ya kuhamisha faili ya zamani ya kumbukumbu na kuunda mpya. Hii inaweza kutumika katika kesi ambapo programu fulani haiwezi kuambiwa kufunga logi yake, na kwa hivyo inaweza kuendelea kuandika (kuongeza) kila wakati. faili iliyopo gazeti. Tafadhali kumbuka kuwa ingawa kuna muda mfupi sana kati ya kunakili faili na kuikata, baadhi ya data iliyoingia inaweza kupotea. Wakati chaguo hili linatumiwa, mwongozo wa kuunda hauna athari, kwani faili ya zamani ya logi inabaki mahali pake.

unda kikundi cha wamiliki wa hali
Mara tu baada ya simu (kabla ya kutekeleza hati ya postrotate), tengeneza faili ya kumbukumbu (iliyo na jina sawa na logi uliyohamisha hivi punde). Hoja ya hali inabainisha hali ya ufikiaji wa faili ya kumbukumbu katika octal (sawa na chmod(2)), mmiliki anabainisha jina la mtumiaji anayemiliki. faili iliyoundwa log, na kikundi kinabainisha kikundi ambacho faili ya kumbukumbu itakuwa. Yoyote kati ya sifa hizi inaweza kuachwa; katika kesi hii, sifa ambazo zina thamani sawa na faili ya kumbukumbu ya asili zitatumika badala ya faili mpya. Chaguo hili linaweza kulemazwa kwa kutumia maagizo ya nocreate.

kila siku
Mzunguko wa kila siku wa faili za kumbukumbu.

delaycompress
Ahirisha mbano wa faili ya kumbukumbu iliyotangulia hadi zamu inayofuata ya mzunguko. Maagizo haya ni halali tu kwa kuchanganya na compress. Hii inaweza kutumika ikiwa programu haiwezi kuambiwa kufunga faili yake ya kumbukumbu, kwa hivyo inaweza kuendelea kuandika kwa faili ya logi iliyotangulia kwa muda.

ugani wa ugani
Faili za kumbukumbu baada ya ufikiaji zitapokea kiendelezi kilichobainishwa. Ikiwa ukandamizaji unatumiwa, basi baada ya upanuzi maalum programu ya kukandamiza itaongeza nyingine (kawaida .gz).

ifempty
Badilisha faili ya kumbukumbu hata ikiwa ni tupu; tabia hii inaweza kubadilishwa kwa kutumia maagizo ya notifty (ifempty imewezeshwa kwa chaguo-msingi).

ni pamoja na faili_au_saraka
Husoma faili iliyopitishwa kama hoja kana kwamba imejumuishwa mstari kwa mstari kwenye mwili wa faili ya usanidi kutoka mahali ambapo maagizo ya pamoja yamebainishwa. Ikiwa saraka imeainishwa, basi faili zilizomo ndani yake zitasomwa mpangilio wa alfabeti, kabla ya kuwasilishwa kwa kujumuishwa. Faili zisizo za kawaida (kama vile saraka na mirija iliyotajwa) na faili zinazoishia na viendelezi visivyo halali (kama inavyofafanuliwa na kigezo cha tabooext) zitapuuzwa. Maagizo ya pamoja hayawezi kutumika ndani ya ufafanuzi wa faili ya kumbukumbu.

barua pepe
Mwishoni mwa mzunguko wa mzunguko, logi itatumwa kwa barua pepe kwa anwani. Ikiwa hii haihitajiki kwa magogo ya mtu binafsi, basi maagizo ya nomail yanaweza kutumika.

barua kwanza
Unapotumia amri ya barua, tuma faili ambayo imehamishwa tu, sio faili ya kumbukumbu ambayo imekamilisha safari ya kurudi.

barua pepe
Unapotumia amri ya barua, usitume faili iliyohamishwa tu, lakini faili iliyokamilishwa ya logi (hii ndiyo chaguo-msingi).

kukosa
Ikiwa hakuna faili ya kumbukumbu, endelea kusindika inayofuata bila kutoa ujumbe wa makosa. Tazama pia nomissingok.

kila mwezi
logrotate itazungusha faili za kumbukumbu mara moja kwa mwezi (kawaida ya kwanza ya kila mwezi).

nocompress
Usipange matoleo ya zamani ya faili za kumbukumbu. Tazama pia compress.

nocopy
Usinakili faili asili ya kumbukumbu na kuiacha katika eneo lake chaguo-msingi (hii inabatilisha kigezo cha nakala).

nocopytruncate
Baada ya kuunda nakala, usipunguze faili ya kumbukumbu ya asili katika eneo lake chaguo-msingi (hii inabatilisha parameta ya copytruncate).

nocreate
Usiunde faili mpya ya kumbukumbu (hii inabatilisha agizo la kuunda).

nodelaycompress
Usichelewe kubana faili ya kumbukumbu iliyohamishwa hadi mzunguko unaofuata wa ufikiaji (hii inabatilisha agizo la kucheleweshwa kwa mgandamizo).

nomail
Usitume faili za kumbukumbu za zamani kwa barua.

nomissingok
Ikiwa faili ya logi haipo, tupa makosa. Hii imewekwa na chaguo-msingi.

noolddir
Baada ya kufikiwa, kumbukumbu hubaki kwenye saraka sawa na kumbukumbu za sasa (hii inabatilisha maagizo ya olddir).

hati zisizoshirikiwa
Tekeleza hati za prerotate na postrotate kwa kila kumbukumbu iliyochakatwa (hii ndiyo tabia chaguo-msingi na inaweza kubatilishwa kwa kigezo cha hati zilizoshirikiwa).

notfempty
Usihamishe logi ikiwa ni tupu (hii inabatilisha chaguo ifempty).

saraka ya olddir
Hamisha majarida yaliyohamishwa hadi saraka. Saraka iliyobainishwa lazima iwe iko kwenye sehemu moja kifaa kimwili, ambayo ni sawa na faili ya logi inayobadilishwa. Wakati wa kutumia chaguo hili, matoleo yote ya zamani ya logi yatawekwa kwenye saraka. Kigezo hiki kinaweza kubatilishwa na kigezo cha noolddir.

postrotate/endscript
Mistari ya maagizo kati ya postrotate na hati ya mwisho (ambayo yenyewe inapaswa kuwa kwenye mistari tofauti) itatekelezwa baada ya logi kufikiwa. Maagizo haya yanaweza kupatikana tu ndani ya ufafanuzi wa faili ya kumbukumbu. Tazama pia prerotate.

prerotate/endscript
Mistari ya maagizo kati ya prerotate na hati ya mwisho (ambayo yenyewe lazima iwe kwenye mistari tofauti) itatekelezwa kabla ya logi kuzungushwa na ikiwa tu kumbukumbu imezungushwa. Maagizo haya yanaweza kupatikana tu ndani ya ufafanuzi wa faili ya kumbukumbu. Tazama pia postrotate.

mzunguko wa nyakati
Faili ya kumbukumbu itahamishwa idadi maalum ya nyakati kabla ya kufutwa au kutumwa kwa barua pepe kwa anwani iliyoainishwa katika maagizo ya barua. Ikiwa imebainishwa mara 0, basi logi ya zamani itafutwa badala ya kufikia.

saizi ya ukubwa
Faili za kumbukumbu zitahamishwa zinapokuwa kubwa ukubwa maalum kwa ka. Ikiwa saizi inaisha na M, basi saizi inatafsiriwa kwa megabytes. Ikiwa unatumia k, unaweza kutaja ukubwa katika kilobytes. Kwa hivyo, maagizo ya saizi 100, saizi 100k na saizi 100M ni sahihi.

maandishi yaliyoshirikiwa
Kwa kawaida, hati za maagizo na postscript hutekelezwa kwa kila logi iliyochakatwa; hii inamaanisha kuwa hati hiyo hiyo inaweza kutekelezwa mara nyingi kwa ingizo moja la usanidi ambalo linajumuisha faili nyingi (kama ilivyo /var/log/news/*). Ikiwa kigezo cha hati ya pamoja kimebainishwa, basi hati zitatekelezwa mara moja tu, bila kujali idadi ya kumbukumbu zinazolingana na kiolezo kilichotolewa. Walakini, ikiwa hakuna kumbukumbu yoyote inayolingana na mchoro inayohitaji ufikiaji, basi hati hazitatekelezwa hata kidogo. Chaguo hili linabatilisha maagizo ya nosharedscripts.

nambari ya kuanza
Nambari maalum-- ile ambayo hesabu ya maombi itaanza. Kwa mfano, ukitaja 0, baada ya ufikiaji wa kwanza (kuhamisha faili ya logi ya asili), kumbukumbu zitapewa ugani .0. Ukibainisha 9, faili za kumbukumbu zitaundwa kwa kiendelezi .9, kuruka 0-8. Faili bado zitafikiwa (kubadilishwa) idadi ya nyakati zilizobainishwa katika maagizo ya kuhesabu.

tabooext [+] extension_list
Hubadilisha orodha ya sasa ya viendelezi vilivyopigwa marufuku (ona ni pamoja na). Ikiwa orodha ya viendelezi inatanguliwa na ishara +, basi orodha hii itaongezwa kwa ya sasa, vinginevyo itaibadilisha. Ilipozinduliwa mwanzoni, orodha ina viendelezi vifuatavyo: .rpmorig, .rpmsave,v, .swp, .rpmnew na ~.

kila wiki
Faili za kumbukumbu zitahamishwa ikiwa siku ya sasa ya juma ni chini ya siku ya juma ambayo ufikiaji wa kumbukumbu ya mwisho ulitokea, au ikiwa zaidi ya wiki imepita tangu wakati huo. Hii ni karibu sawa na kuzungusha magogo siku ya Jumatatu, lakini hufanya kazi vyema ikiwa logrotate haiendeshwi kila usiku.

PS: Baada ya kufanya mabadiliko, ili kuyatumia, inashauriwa kukimbia kwenye terminal kama mtumiaji mkuu:

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

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

Kama jibu la msomaji lilivyoonyesha, mzunguko wa kumbukumbu ni mojawapo ya mada ambayo husababisha ugumu fulani. Hasa, matatizo hutokea kwa kuanzisha mzunguko wa kumbukumbu za seva ya wakala wa squid, ambayo inafanya kuwa vigumu kupata ripoti kwa muda mrefu. Kwa hiyo, tuliamua kufafanua na kukuambia ni nini mzunguko wa logi na jinsi ya kuiweka.

Matukio yote ambayo yanastahili kuzingatia yanarekodiwa na mfumo katika faili za kumbukumbu au faili za kumbukumbu, ambazo zinaweza kutumika baadaye kuchambua kushindwa, kupata takwimu, kuchunguza matukio, nk. Nakadhalika. Haja ya ukataji miti, matukio ya kurekodiwa, maelezo na ukamilifu wao kawaida hubainishwa katika usanidi wa huduma fulani na, kama sheria, huwa na mipangilio ya chaguo-msingi ambayo inafaa kwa watumiaji wengi.

Ili kuzuia ukuaji usiodhibitiwa wa faili kama hizo, utaratibu unahitajika ili kupunguza idadi ya rekodi kwa kikomo kinachofaa, hii inaweza kuwa saizi ya faili, ambayo rekodi za zamani zitafutwa, au kipindi ambacho rekodi hazitakuwa muhimu tena. na inaweza kufutwa. KATIKA Seva ya Ubuntu utaratibu kama huo unaitwa mzunguko wa logi na inatekelezwa kwa kutumia huduma ya mfumo logrotate.

Kama jina linavyopendekeza, mzunguko wa kumbukumbu mara kwa mara hubadilisha kumbukumbu za zamani na mpya, kuweka data ya zamani kwenye kumbukumbu au kuifuta tu. Kulingana na mipangilio, kumbukumbu ya kumbukumbu inaweza kuhifadhiwa katika fomu iliyobanwa au isiyobanwa na kuwa na kina kinachohitajika.

Hakuna vikwazo hapa, isipokuwa akili ya kawaida na kiasi gari ngumu, hukuruhusu kubinafsisha mchakato ili kukidhi mahitaji yako. Kwa hivyo, kwa mfano, unaweza kufanya mzunguko wa kila siku na kuhifadhi logi ya jana katika fomu isiyobanwa, na iliyobaki kama kumbukumbu. Kwa kila mzunguko unaofuata, mnyororo unaonekana kuhama, logi ya hivi karibuni zaidi imeandikwa na logi ya mwisho, na logi ya sasa inafutwa (au kuundwa upya).

Wacha tuangalie kusanidi mzunguko kwa kutumia magogo kama mfano seva ya wakala wa ngisi, ambayo husababisha matatizo kadhaa kwa wasomaji wetu. Mipangilio ya msingi ya mzunguko huhifadhiwa ndani /etc/logrotate.conf, kwa kuongeza, huduma za mtu binafsi zinaweza kuwa mipangilio yako mwenyewe mizunguko, ambayo huhifadhiwa katika faili maalum kwenye saraka /etc/logrotate.d, ambayo mipangilio yake inaingiliana na mipangilio logrotate.conf.

Mbinu hii hukuruhusu kusanidi kwa urahisi mzunguko kwa kila huduma mahususi bila kuathiri mipangilio ya jumla. Huduma yenyewe inaitwa mara moja kwa siku kupitia mpangilio cron.

Hebu tufungue faili /etc/logrotate.d/squid, tunayo mtazamo unaofuata:

#
#Mgawanyiko wa Logrotate kwa ngisi.
#
/var/log/squid/*.log (
kila siku
kubana
delaycompress
mzunguko 2
kukosa
nocreate
maandishi yaliyoshirikiwa
prerotate
mtihani! -x /usr/sbin/sarg-ripoti || /usr/sbin/sarg-reports
hati ya mwisho
postrotate
mtihani! -e /var/run/squid.pid || /usr/sbin/squid -k zungusha
hati ya mwisho
}

Wacha tuangalie muundo wake kwa undani zaidi. Mstari wa kwanza unabainisha njia ya faili za kumbukumbu zinazochakatwa. KATIKA kwa kesi hii faili zote kwenye saraka zinachakatwa /var/log/squid kulingana na chaguzi hapa chini:

  • kila siku- huweka mzunguko wa kila siku, kwa matumizi ya kila wiki au kila mwezi kila wiki au kila mwezi.
  • kubana- inabainisha compress kumbukumbu kumbukumbu, chaguo kinyume nocompress.
  • delaycompress- usisonge logi ya sasa hadi mzunguko unaofuata, kwa kawaida hutumiwa katika matukio ambapo kurekodi kuendelea hutokea kwenye logi.
  • mzunguko 2- idadi ya mizunguko kabla ya kufuta faili; katika kesi hii, kumbukumbu mbili zitahifadhiwa.
  • kukosa- ikiwa hakuna faili ya logi, inaonyesha kuendelea kufanya kazi bila kuonyesha ujumbe wa kosa.
  • nocreate- usitengeneze faili mpya ya kumbukumbu.
  • maandishi yaliyoshirikiwa- kutumika kwa sehemu prerotate Na postrotate, chaguo hili inabainisha kutekeleza hati kutoka kwa sehemu hizi mara moja kabla na baada ya mzunguko kila mtu magogo, vinginevyo maandishi yatatekelezwa kabla na baada ya mzunguko kila mtu logi.

Chini ni sehemu prerotate Na postrotate, ambayo kila moja inaisha na mstari hati ya mwisho, kila kitu kilicho kati ya mistari hii kinatekelezwa kabla na baada ya mchakato wa mzunguko.

Sehemu postrotate hukagua kama ngisi anaendesha na kuanza mzunguko wa kumbukumbu na seva mbadala yenyewe. Wacha tukae juu ya hatua hii kwa undani zaidi. Kuna chaguo katika faili ya usanidi wa squid:

Logfile_zungusha n

Wapi n- idadi ya mzunguko (chaguo-msingi 0), i.e. squid yenyewe inaweza kuhifadhi mizunguko kadhaa ya magogo, ambayo kila moja itashughulikiwa na logrotate. Na mipangilio ya chaguo-msingi amri hii husababisha logi kuu ya ngisi kusafishwa.

Sehemu prerotate imeongezwa kiotomatiki wakati wa usakinishaji na ikiwa faili /usr/sbin/sarg-reports ipo na inaweza kutekelezwa, inaiendesha.

Kwa kando, unapaswa kukaa juu ya kurekodi amri; ujenzi unaotumiwa ndani yao hauwezi kuwa wazi mara ya kwanza. Katika kesi hii, kukanusha mara mbili kunatumika; ikiwa ukanushaji wa sharti ni wa uwongo, basi amri iliyobainishwa baada ya ishara ya || kutekelezwa. (mantiki AU), hii inahusiana na mantiki ya amri mtihani na syntax ya uandishi wa faili ( Pointi ya mshangao baada ya mtihani inaonyesha kukanusha hali hiyo).

Kama unavyoona, logrotate hukuruhusu kusanidi kwa urahisi sana mchakato wa mzunguko wa logi. Kwa hivyo ikiwa tunataka kutoa takwimu za matumizi ya ngisi kila mwezi, lazima tuonyeshe kipindi cha mzunguko - mwezi na katika sehemu. prerotate badilisha amri ili kutoa ripoti ya kila mwezi.

Katika Linux, huduma na programu nyingi zinazoendeshwa chinichini, kama vile Apache, Nginx, Postfix na zingine, hurekodi habari kuhusu hali zao, matokeo na makosa katika faili za kumbukumbu. Eneo la kawaida magogo au kama vile pia huitwa - magogo - kwenye /var/log folda.

Kutumia uchambuzi wa logi, unaweza kuelewa ni nini kinachofanya kazi vibaya, kwa nini hitilafu ilitokea na jinsi ya kutatua tatizo. Lakini kuna shida moja. Ukubwa wa magogo huongezeka mara kwa mara na huchukua nafasi zaidi na zaidi ya disk, kwa hiyo ni muhimu kusafisha magogo kwa wakati unaofaa na kufuta viingilio vilivyopitwa na wakati ili wasiingiliane na uendeshaji wa kawaida. Hii inaweza kufanywa kwa mikono mara kwa mara au kwa kusanidi hati za Cron, lakini kuna chaguo rahisi zaidi - matumizi ya logrotate. Nakala hii itashughulikia kusanidi logrotate na kuitumia.

Huduma ya Logrotate imeundwa kuhariri usindikaji wa kumbukumbu. Anaweza kuigiza nao vitendo muhimu chini ya masharti fulani na sheria za kufuata. Kwa mfano, unaweza kubana kumbukumbu kwenye kumbukumbu au kuzituma kwa seva nyingine zinapofikia saizi fulani, umri au vigezo vingine.

Unaweza kuweka masharti ya kuangalia kila siku, kila wiki au kila mwezi. Hii hukuruhusu kuunda mpango wa mzunguko wa logi ambao unafaa kwako na seva yako. Pia, mzunguko wa logi unaweza kuwa muhimu kwa kompyuta ya nyumbani, lakini hapa sio muhimu kama kwenye seva, ambapo hadi mamia ya maelfu ya mistari inaweza kuandikwa kwa kumbukumbu za Apache pekee kila siku.

Kuanzisha Logrotate

Logrotate ni matumizi maarufu, kwa hivyo usambazaji mwingi huja nayo kwa chaguo-msingi. Unaweza kuthibitisha kuwa programu imesakinishwa kwenye usambazaji wako kwa kujaribu kuisakinisha. Kwa mfano, kwenye CentOS:

sudo yum kufunga logrotate

Au kwa Ubuntu na usambazaji kulingana na hiyo:

sudo apt install logrotate

Sasa, hata kama huduma haijasakinishwa, utaisakinisha. Mipangilio yote ya msingi ya programu iko kwenye faili ya /etc/logrotate.conf, mipangilio ya ziada, kuhusu sheria na vipengele vingine vinaweza kuwekwa kwenye folda /etc/logroate.d/. Unaweza kuweka mipangilio yote ya logroatae moja kwa moja kwenye faili kuu ya usanidi, itakuwa sahihi zaidi ikiwa mipangilio ya kila moja. huduma tofauti itakuwa ndani faili tofauti, kwenye folda ya /etc/logrotate.d/.

Ili faili za usanidi kutoka kwa folda hii kupakiwa na programu, unahitaji kuongeza laini ifuatayo kwenye faili kuu ya usanidi:

vi /etc/logrotate.conf

ni pamoja na /etc/logrotate.d

Hakikisha tu kwamba tayari iko. Kwanza, hebu tuangalie maagizo ya msingi ambayo tutatumia wakati wa kuanzisha. Hapa maagizo hayaonekani kuwa ya kawaida kabisa, maagizo yenyewe huamua nini kifanyike na lini, na ikiwa ni lazima, inapitishwa. Chaguzi za ziada. Ili kutaja ni mara ngapi hali zinapaswa kukaguliwa, maagizo yafuatayo hutumiwa:

  • kila saa- kila saa;
  • kila siku- kila siku;
  • kila wiki- kila wiki;
  • kila mwezi- kila mwezi;
  • kila mwaka- Kila mwaka.

Maagizo ya kimsingi ya kusimamia na kusindika kumbukumbu:

  • zungusha- inaonyesha ngapi magogo ya zamani yanahitajika kuhifadhiwa, wingi hupitishwa katika vigezo;
  • kuunda- inaonyesha kuwa ni muhimu kuunda faili tupu ya logi baada ya kusonga ya zamani;
  • maandishi ya tarehe- anaongeza tarehe ya mzunguko kabla ya kichwa cha logi ya zamani;
  • kubana- inaonyesha kwamba logi inahitaji kusisitizwa;
  • delaycompress- usilazimishe jarida la mwisho na la mwisho;
  • ugani- kuokoa faili ya logi ya awali baada ya kuzunguka, ikiwa ina ugani maalum;
  • barua- tuma barua pepe baada ya mzunguko kukamilika;
  • maksi- mzunguko wa magogo ikiwa ni wakubwa kuliko ilivyoainishwa;
  • kukosa- usitoe makosa ikiwa faili ya logi haipo;
  • olddir- hoja magogo ya zamani kwenye folda tofauti;
  • postrotate/endscript- kutekeleza amri za kiholela baada ya kuzunguka;
  • kuanza- nambari ambayo hesabu ya magogo ya zamani itaanza;
  • ukubwa- ukubwa wa logi wakati inapohamishwa;

Haya ndiyo maagizo ya msingi ambayo tutatumia. Faili kuu ya usanidi ina usanidi wa kimataifa, maagizo ambayo yatatumika kwa kumbukumbu zote ikiwa athari yao haijaghairiwa. Kila logi ambayo iko chini ya mzunguko imeelezewa kama ifuatavyo:

log_file_anwani {
maelekezo
}

Sasa wacha tuunde faili rsyslog.conf kwenye folda ya /etc/logrotate.d/ na tuweke mipangilio ya kuzungusha logi hii ndani yake:

/var/log/messages (
kila siku
mzunguko 3
ukubwa 10M
kubana
delaycompress
}

Mipangilio hii inamaanisha kuwa kumbukumbu zitazungushwa kila siku na tutahifadhi kumbukumbu tatu za hivi majuzi zaidi, nakala za zamani zitafutwa kiotomatiki. Ukubwa wa chini kwa mzunguko - megabytes 10, mzunguko hautafanywa ikiwa logi haipati zaidi ya megabytes 10. Mfinyazo utatumika kwa kumbukumbu zote isipokuwa ile ya mwisho na ya mwisho. Kwa kutumia kanuni hiyo hiyo, unaweza kusanidi mzunguko wa logi kwa magogo yoyote. Unahitaji kuunda sehemu kama hiyo kwa kila kumbukumbu unayotaka kudhibiti.

Sasa kilichobaki ni kujaribu jinsi usanidi wetu unavyofanya kazi. Ili kufanya hivyo, endesha matumizi ya logrotate na -d chaguo. Itachapisha kila kitu inachopanga kufanya, lakini haitabadilisha faili kwenye diski. Tunayo faili /var/log/messages, Megabytes 40 kwa ukubwa, wacha tuone matumizi yatafanya nini:

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


Kama unaweza kuona, programu hugundua faili ya logi na kuigawanya katika sehemu kadhaa. Unaweza kuhakikisha kuwa logrotate itaendesha kama inavyotarajiwa kwa kuangalia ratiba ya cron:

ls /var/cron.daily/

Usanidi wa Logrotate umekamilika, na unachotakiwa kufanya ni kueleza jinsi kumbukumbu zitakavyozungushwa kwa kila kumbukumbu zinazochukua nafasi nyingi.

hitimisho

Katika makala hii tuliangalia jinsi ya kusanidi centos ya logrotate au nyingine yoyote Usambazaji wa Linux. Uendeshaji wa shirika hautofautiani sana kulingana na usambazaji. Ikiwa unayo seva na mzigo mzito, hakika unahitaji kusanidi mzunguko wa logi. Natumai habari hii ilikuwa muhimu kwako. Kuhitimisha video kuhusu jinsi magogo yanavyozungushwa katika Ubuntu kutoka LPIC:

Na jambo moja zaidi kwa Kiingereza:

Logrotate ni programu iliyoundwa ili kurahisisha usimamizi wa faili ya logi. Hasa Logrotate muhimu pale inapoundwa idadi kubwa ya faili za kumbukumbu. Huduma hukuruhusu mode otomatiki kuhifadhi, kufuta, kufuta na kutuma faili za kumbukumbu kwa barua pepe. Utaratibu huu kawaida huitwa mzunguko wa faili ya logi.

Logrotate inaweza kuweka kuzunguka kila siku, kila wiki au kila mwezi. Kwa kuongeza, unaweza kuweka ukubwa wa faili, baada ya kufikia ambayo faili itazungushwa. Kwa kawaida logrotate inaendesha kama kazi ya cron ya kila siku.

Inasakinisha Logrotate
Ufungaji ni wa kawaida kwa usambazaji wa msingi wa Debian / Ubuntu:

$ sudo aptitude kufunga logrotate Maelezo mafupi ya faili Logrotate mipangilio Maelezo ya jinsi Logrotate itafanya kazi na faili moja au nyingine ya logi iliyo kwenye faili maalum ya usanidi. Kama sheria, ziko kwenye saraka /etc/logrotate.d/. Kwa mfano, faili ya usanidi ya apache2 inaonekana kama hii: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log ( kila wiki # zungusha mara moja kwa wiki missok # kukosa faili sio kosa zungusha 52 # 52 za ​​mwisho zimehifadhiwa gandamiza faili iliyozungushwa # gandamiza faili iliyozungushwa kuchelewesha # finyaza faili iliyotangulia wakati wa mzunguko unaofuata # (yaani faili *.log.1 haitabanwa, lakini *.log.2 na kubanwa zaidi) notifempty # usifanye chakata faili tupu kuunda adm ya mizizi 640 # mara baada ya kuzungushwa, tengeneza faili tupu na haki uliyopewa na maandishi yaliyoshirikiwa ya mtumiaji # prerotate/postrotate crypts yatatekelezwa mara moja tu # bila kujali idadi ya magogo yanayolingana na kiolezo ulichopewa postrotate # hati. itatekelezwa mara baada ya kuzunguka ikiwa [ -f "`. /etc/apache2/envvars ; echo $(APACHE_PID_FILE:-/var/run/apache2.pid)`" ]; kisha /etc/init.d/apache2 pakia upya > /dev/null fi endscript)

Katika kesi hii, mstari wa kwanza /var/log/apache2/*.log hakuna kitu zaidi ya muundo wa faili za logi zilizochakatwa. Inamaanisha kuwa usanidi uliobainishwa wa mzunguko utatumika kwa faili zote zilizo kwenye saraka ya /var/log/apache2/ yenye kiendelezi cha "logi".

Kuna maagizo mengi halali katika faili ya usanidi (zaidi ya 40). Habari zaidi juu yao inaweza kupatikana katika mtu logrotate.

Chaguzi za Msingi za Logrotate

Kama sheria, baada ya kusanidi faili ya usanidi, inakuwa muhimu kuangalia operesheni logrotate kwa kumbukumbu mpya. Kuna uwezekano kwa hili uzinduzi wa moja kwa moja logrotate kutoka kwa mstari wa amri. Chaguzi zifuatazo zinaruhusiwa:

  • -d. Huwasha hali ya utatuzi na pia nakala chaguo -v. Katika hali ya utatuzi, hakuna vitendo vitafanywa na kumbukumbu.
  • -f, --nguvu. Husababisha logrotate kutekeleza mzunguko wa kumbukumbu. Wakati mwingine ni muhimu baada ya kuongeza mpya faili za usanidi au kama logi ya zamani faili ilifutwa kwa mikono; kwa njia hii faili mpya za kumbukumbu zitaundwa na ukataji miti utaendelea kwa usahihi.
  • -m, --barua amri . Hubainisha ni amri gani ya kutumia kutuma kumbukumbu kwa barua. Amri lazima ukubali vigezo 2 vya kuingiza:
    • kichwa cha barua
    • mpokeaji wa barua
  • -s, --jimbo faili ya serikali . Inaonyesha matumizi ya faili mbadala ya hali. Inatumika katika hali ambapo logrotate inafanya kazi kama watumiaji tofauti kwa seti tofauti za faili za kumbukumbu. Faili ya hali chaguomsingi: /var/lib/logrotate/status
  • -- matumizi. Matokeo maelekezo mafupi juu ya kutumia shirika.
  • -v, --kitenzi. Inaonyesha ujumbe wa uchunguzi wakati wa mzunguko

Mfano wa usanidi wa Logrotate

Kwa mfano, wacha tuseme hivyo kwenye saraka /nyumbani/tovuti/tovuti/magogo/ faili za kumbukumbu za seva za wavuti kama vile nginx na apache ziko. Wanafanya kazi kwa kushirikiana: - frontend, apache2-backend.

$ zaidi /etc/logrotate.d/debianworld.ru # Mzunguko wa logi wa Nginx (mwisho wa mbele) # Hutoa data tuli, kila kitu kingine kinatumiwa kwa apache. # Ukataji miti unafanywa kwa umakini zaidi. /home/dw/debianworld.ru/logs/nginx_*.log ( kila siku # mzunguko wa kila siku missingok # kukosa faili sio kosa zungusha 45 # historia kwa siku 45 huhifadhiwa compress # faili zinazozungushwa zimebanwa delaycompress # faili iliyozungushwa sio imebanwa, iliyobaki imebanwa notisifempty # usichakate faili tupu kuunda 640 dw www-data # haki, mtumiaji wa hati mpya zilizoshirikiwa # prerotate/postrotate hutekelezwa mara 1 tu # Kukusanya takwimu za wageni za AWstats /usr/bin/perl /usr/lib/cgi-bin/awstats .pl -update -config=debianworld.ru -databasebreak=day endscript postrotate # Anzisha upya nginx [ ! -f /var/run/nginx.pid ] || kill -USR1 `paka / var/run/nginx.pid` endscript ) # Mzunguko wa logi wa Apache2 (mwisho wa nyuma) # Uwekaji kumbukumbu unafanywa kwa bidii kidogo. /home/dw/debianworld.ru/logs/apache*.log ( kila wiki # mzunguko wa kila wiki missingok # kukosa faili sio kosa zungusha 4 # historia kwa wiki 4 huhifadhiwa compress # faili zinazozunguka zimebanwa nodelaycompress # faili iliyozungushwa pia imebanwa notifempty # sio kusindika faili tupu kuunda ruhusa 640 dw www-data #, mtumiaji wa hati mpya zilizoshirikiwa # postrotate inatekelezwa mara 1 tu ya postrotate # Anzisha tena apache2 ikiwa [ -f /var/run/apache.pid ]; kisha /etc/ init.d/apache2 anza upya > /dev/null fi endscript )

Logrotate ni programu iliyoundwa ili kurahisisha usimamizi wa faili ya logi. Hasa Logrotate muhimu ambapo idadi kubwa ya faili za logi hutolewa. Huduma hukuruhusu kuhifadhi kiotomatiki, kufuta, kufuta na kutuma faili za kumbukumbu kwa barua pepe. Utaratibu huu kawaida huitwa mzunguko wa faili ya logi.

Logrotate inaweza kuweka kuzunguka kila siku, kila wiki au kila mwezi. Kwa kuongeza, unaweza kuweka ukubwa wa faili, baada ya kufikia ambayo faili itazungushwa. Kwa kawaida logrotate inaendesha kama kazi ya cron ya kila siku.

Inasakinisha Logrotate
Ufungaji ni wa kawaida kwa usambazaji wa msingi wa Debian / Ubuntu:

$ sudo aptitude kufunga logrotate Maelezo mafupi ya faili ya mipangilio ya Logrotate Maelezo ya jinsi Logrotate itafanya kazi na faili moja au nyingine ya logi iliyo kwenye faili maalum ya usanidi. Kama sheria, ziko kwenye saraka /etc/logrotate.d/. Kwa mfano, faili ya usanidi ya apache2 inaonekana kama hii: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log ( kila wiki # zungusha mara moja kwa wiki missok # kukosa faili sio kosa zungusha 52 # 52 za ​​mwisho zimehifadhiwa gandamiza faili iliyozungushwa # gandamiza faili iliyozungushwa kuchelewesha # finyaza faili iliyotangulia wakati wa mzunguko unaofuata # (yaani faili *.log.1 haitabanwa, lakini *.log.2 na kubanwa zaidi) notifempty # usifanye chakata faili tupu kuunda adm ya mizizi 640 # mara baada ya kuzungushwa, tengeneza faili tupu na haki uliyopewa na maandishi yaliyoshirikiwa ya mtumiaji # prerotate/postrotate crypts yatatekelezwa mara moja tu # bila kujali idadi ya magogo yanayolingana na kiolezo ulichopewa postrotate # hati. itatekelezwa mara baada ya kuzunguka ikiwa [ -f "`. /etc/apache2/envvars ; echo $(APACHE_PID_FILE:-/var/run/apache2.pid)`" ]; kisha /etc/init.d/apache2 pakia upya > /dev/null fi endscript)

Katika kesi hii, mstari wa kwanza /var/log/apache2/*.log hakuna kitu zaidi ya muundo wa faili za logi zilizochakatwa. Inamaanisha kuwa usanidi uliobainishwa wa mzunguko utatumika kwa faili zote zilizo kwenye saraka ya /var/log/apache2/ yenye kiendelezi cha "logi".

Kuna maagizo mengi halali katika faili ya usanidi (zaidi ya 40). Habari zaidi juu yao inaweza kupatikana katika mtu logrotate.

Chaguzi za Msingi za Logrotate

Kama sheria, baada ya kusanidi faili ya usanidi, inakuwa muhimu kuangalia operesheni logrotate kwa kumbukumbu mpya. Kwa kufanya hivyo, inawezekana kuzindua moja kwa moja logrotate kutoka kwa mstari wa amri. Chaguzi zifuatazo zinaruhusiwa:

  • -d. Huwasha hali ya utatuzi na pia nakala chaguo -v. Katika hali ya utatuzi, hakuna vitendo vitafanywa na kumbukumbu.
  • -f, --nguvu. Husababisha logrotate kufanya mzunguko wa kumbukumbu. Inaweza kuwa muhimu baada ya kuongeza faili mpya za usanidi au ikiwa faili ya logi ya zamani ilifutwa kwa mikono; kwa njia hii faili mpya za kumbukumbu zitaundwa na ukataji miti utaendelea kwa usahihi.
  • -m, --barua amri . Hubainisha ni amri gani ya kutumia kutuma kumbukumbu kwa barua. Amri lazima ukubali vigezo 2 vya kuingiza:
    • kichwa cha barua
    • mpokeaji wa barua
  • -s, --jimbo faili ya serikali . Inaonyesha matumizi ya faili mbadala ya hali. Inatumika katika hali ambapo logrotate inafanya kazi kama watumiaji tofauti kwa seti tofauti za faili za kumbukumbu. Faili ya hali chaguomsingi: /var/lib/logrotate/status
  • -- matumizi. Inaonyesha maagizo mafupi ya jinsi ya kutumia matumizi.
  • -v, --kitenzi. Inaonyesha ujumbe wa uchunguzi wakati wa mzunguko

Mfano wa usanidi wa Logrotate

Kwa mfano, wacha tuseme hivyo kwenye saraka /nyumbani/tovuti/tovuti/magogo/ faili za kumbukumbu za seva za wavuti kama vile nginx na apache ziko. Wanafanya kazi kwa kushirikiana: - frontend, apache2-backend.

$ zaidi /etc/logrotate.d/debianworld.ru # Mzunguko wa logi wa Nginx (mwisho wa mbele) # Hutoa data tuli, kila kitu kingine kinatumiwa kwa apache. # Ukataji miti unafanywa kwa umakini zaidi. /home/dw/debianworld.ru/logs/nginx_*.log ( kila siku # mzunguko wa kila siku missingok # kukosa faili sio kosa zungusha 45 # historia kwa siku 45 huhifadhiwa compress # faili zinazozungushwa zimebanwa delaycompress # faili iliyozungushwa sio imebanwa, iliyobaki imebanwa notisifempty # usichakate faili tupu kuunda 640 dw www-data # haki, mtumiaji wa hati mpya zilizoshirikiwa # prerotate/postrotate hutekelezwa mara 1 tu # Kukusanya takwimu za wageni za AWstats /usr/bin/perl /usr/lib/cgi-bin/awstats .pl -update -config=debianworld.ru -databasebreak=day endscript postrotate # Anzisha upya nginx [ ! -f /var/run/nginx.pid ] || kill -USR1 `paka / var/run/nginx.pid` endscript ) # Mzunguko wa logi wa Apache2 (mwisho wa nyuma) # Uwekaji kumbukumbu unafanywa kwa bidii kidogo. /home/dw/debianworld.ru/logs/apache*.log ( kila wiki # mzunguko wa kila wiki missingok # kukosa faili sio kosa zungusha 4 # historia kwa wiki 4 huhifadhiwa compress # faili zinazozunguka zimebanwa nodelaycompress # faili iliyozungushwa pia imebanwa notifempty # sio kusindika faili tupu kuunda ruhusa 640 dw www-data #, mtumiaji wa hati mpya zilizoshirikiwa # postrotate inatekelezwa mara 1 tu ya postrotate # Anzisha tena apache2 ikiwa [ -f /var/run/apache.pid ]; kisha /etc/ init.d/apache2 anza upya > /dev/null fi endscript )