Yadda ake Saita da Sarrafa Juyawa Log Amfani da Logrotate a cikin Linux


Ɗaya daga cikin mafi ban sha'awa (kuma watakila ɗayan mafi mahimmanci kuma) kundayen adireshi a cikin tsarin Linux shine /var/log. Bisa ga Matsayin Matsayin Tsarin Fayil, ayyukan mafi yawan ayyukan da ke gudana a cikin tsarin ana rubuta su zuwa fayil ɗin da ke cikin wannan kundin adireshi ko ɗaya daga cikin kundin adireshi.

Irin waɗannan fayiloli ana kiran su da logs kuma su ne mabuɗin don bincika yadda tsarin ke aiki (da kuma yadda ya kasance a baya). Logs kuma shine tushen farko na bayanai inda masu gudanarwa da injiniyoyi ke dubawa yayin da suke magance matsala.

Idan muka kalli abubuwan da ke cikin /var/log akan CentOS/RHEL/Fedora da Debian/Ubuntu (na iri-iri) za mu ga fayilolin log ɗin masu zuwa da kuma kundin adireshi.

Lura cewa sakamakon na iya ɗan bambanta a yanayinka ya danganta da ayyukan da ke gudana akan tsarin (s) da lokacin da suke gudana.

# ls /var/log
# ls /var/log

A cikin duka biyun, zamu iya lura da cewa wasu sunayen log ɗin suna ƙare kamar yadda ake tsammani a cikin \log, yayin da wasu ana canza suna ta amfani da kwanan wata (misali, maillog-20160822 akan CentOS) ko kuma matsawa (la'akari auth.log.2. gz da mysql.log.1.gz akan Debian).

Wannan ba dabi'a ba ce ta tsohuwa dangane da zaɓaɓɓen rarraba amma ana iya canza ta ta amfani da umarni a cikin fayilolin sanyi, kamar yadda za mu gani a wannan labarin.

Idan an adana rajistan ayyukan har abada, a ƙarshe za su ƙare cika tsarin fayil inda /var/log ke zaune. Don hana hakan, mai gudanar da tsarin zai iya amfani da kyakkyawan kayan aiki da ake kira logrotate don tsaftace rajistan ayyukan lokaci-lokaci.

A cikin ƴan kalmomi, logrotate zai sake suna ko damfara babban log ɗin lokacin da yanayi ya cika (ƙarin game da hakan a cikin minti ɗaya) ta yadda za a yi rikodin abin da ya faru na gaba akan fayil mara komai.

Bugu da ƙari, zai cire fayilolin log ɗin tsofaffin kuma zai adana na baya-bayan nan. Tabbas, za mu iya yanke shawarar abin da tsohuwar yake nufi da sau nawa muke son logrotate don tsaftace mana gunkin.

Shigar da Logrotate a cikin Linux

Don shigar da logrotate, kawai amfani da mai sarrafa fakitinku:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Yana da kyau kuma a lura cewa fayil ɗin sanyi (/etc/logrotate.conf) na iya nuna cewa wasu, ƙarin takamaiman saituna za a iya sanya su a kan fayilolin .conf guda ɗaya a ciki. /etc/logrotate.d.

Wannan zai kasance idan kuma kawai idan layin mai zuwa ya wanzu kuma ba a yi sharhi ba:

include /etc/logrotate.d

Za mu ci gaba da bin wannan hanyar, domin zai taimaka mana mu daidaita abubuwa, kuma mu yi amfani da akwatin Debian don misalai na gaba.

Sanya Logrotate a cikin Linux

Kasancewa kayan aiki mai mahimmanci, logrotate yana ba da umarni da yawa don taimaka mana saita lokacin da yadda za a juya rajistan ayyukan, da abin da ya kamata ya faru nan da nan.

Bari mu saka abubuwan ciki masu zuwa a /etc/logrotate.d/apache2.conf (lura cewa da alama za ku ƙirƙiri wannan fayil ɗin) kuma bincika kowane layi don nuna manufarsa:

/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

Layin farko yana nuna cewa umarnin da ke cikin toshe ya shafi duk rajistan ayyukan ciki /var/log/apache2:

  • mako-mako yana nufin cewa kayan aikin zai yi ƙoƙarin juya rajistan ayyukan akan kowane mako. Sauran kyawawan dabi'u na yau da kullun da kowane wata.
  • juya 3 yana nuna cewa ya kamata a adana rajistan ayyukan jujjuya 3 kawai. Don haka, za a cire tsohon fayil ɗin a karo na huɗu na gaba.
  • size=10M yana saita mafi ƙarancin girman don juyawa zuwa 10M. Wato, kowane log ɗin ba zai juya ba har sai ya kai 10MB.
  • Ana amfani da damfara da ƙwanƙwasa jinkiri don faɗar cewa duk jujjuyawar rajistan ayyukan, ban da na baya-bayan nan, yakamata a matsa su.

Bari mu aiwatar da bushe-bushe don ganin abin da logrotate zai yi idan an aiwatar da shi yanzu. Yi amfani da zaɓin -d sannan fayil ɗin daidaitawa (zaku iya aiwatar da logrotate ta hanyar tsallake wannan zaɓi):

# logrotate -d /etc/logrotate.d/apache2.conf

Ana nuna sakamakon a ƙasa:

Maimakon matsawa rajistan ayyukan, za mu iya sake suna bayan ranar da aka juya su. Don yin hakan, za mu yi amfani da umarnin kwanakin kwanan wata. Idan tsarin kwanan wata ban da tsoho yyyymmdd, za mu iya tantance ta ta amfani da dateformat.

Lura cewa za mu iya hana juyawa daga faruwa idan log ɗin ya zama fanko tare da sanarwa. Bugu da ƙari, bari mu gaya wa logrotate don aikawa da jujjuya log ɗin zuwa ga mai sarrafa tsarin (sabar saƙon da za a kafa, wanda ba shi da iyaka na wannan labarin).

Idan kuna son samun imel game da logrotate, zaku iya saita sabar saƙon Postfix kamar yadda aka nuna anan: Shigar Postfix Mail Server

Wannan lokacin za mu yi amfani da /etc/logrotate.d/squid.conf don juya kawai /var/log/squid/access.log:

/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email 
}

Kamar yadda muke iya gani a hoton da ke ƙasa, wannan log ɗin baya buƙatar juyawa. Koyaya, lokacin da yanayin girman ya cika (girman = 1M), za'a canza sunan log ɗin access.log-25082020 (idan an juya log ɗin a ranar 25 ga Agusta, 2020) kuma babban log ɗin (access.log) za a sake- ƙirƙira tare da saita izini zuwa 0644 kuma tare da tushen a matsayin mai shi da mai rukuni.

A ƙarshe, lokacin da adadin rajistan ayyukan a ƙarshe ya kai 6, za a aika da tsohon log ɗin zuwa wasiku zuwa [email kare].

Yanzu bari mu ɗauka kana so ka gudanar da umarni na al'ada lokacin da juyawa ya faru. Don yin hakan, sanya layi tare da irin wannan umarni tsakanin umarni na juyawa da ƙarshen rubutun.

Misali, bari mu ɗauka muna son aika imel zuwa tushen lokacin da kowane ɗayan rajistan ayyukan cikin /var/log/myservice ya juya. Bari mu ƙara layukan cikin ja zuwa /etc/logrotate.d/squid.conf:

/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

A ƙarshe, amma ba kalla ba, yana da mahimmanci a lura cewa zaɓuɓɓukan da ke cikin /etc/logrotate.d/*.conf .conf suna soke waɗanda ke cikin babban fayil ɗin daidaitawa idan akwai rikici.

Logrotate da Cron

Ta hanyar tsoho, shigarwa na logrotate yana ƙirƙirar fayil ɗin crontab a ciki /etc/cron.daily mai suna logrotate. Kamar yadda lamarin yake tare da sauran fayilolin crontab a cikin wannan jagorar, za a aiwatar da shi kowace rana daga 6:25 na safe idan ba a shigar da anacron ba.

In ba haka ba, za a fara aiwatar da hukuncin da misalin karfe 7:35 na safe. Don tabbatarwa, duba layin da ke ɗauke da cron.daily a cikin ko dai /etc/crontab ko /etc/anacrontab.

Takaitawa

A cikin tsarin da ke samar da rajistan ayyukan da yawa, ana iya sauƙaƙe sarrafa irin waɗannan fayiloli ta amfani da logrotate. Kamar yadda muka yi bayani a cikin wannan labarin, za ta juya ta atomatik, damfara, cirewa, da rajistan ayyukan wasiƙa a lokaci-lokaci ko lokacin da fayil ɗin ya kai girman da aka bayar.

Kawai tabbatar an saita shi azaman aikin cron kuma logrotate zai sauƙaƙa muku abubuwa da yawa. Don ƙarin bayani, koma zuwa shafin mutum.

Kuna da wasu tambayoyi ko shawarwari game da wannan labarin? Jin kyauta don sanar da mu ta amfani da fam ɗin sharhi da ke ƙasa.