ວິທີການຕັ້ງແລະຈັດການການ ໝູນ ວຽນການ ນຳ ໃຊ້ Logrotate ໃນ Linux


ຫນຶ່ງໃນທີ່ ໜ້າ ສົນໃຈທີ່ສຸດ (ແລະບາງທີ ໜຶ່ງ ທີ່ ສຳ ຄັນທີ່ສຸດເຊັ່ນດຽວກັນ) ໃນລະບົບ Linux ແມ່ນ /var/log . ອີງຕາມມາດຕະຖານລະບົບ Filesystem Hierarchy, ກິດຈະ ກຳ ຂອງການບໍລິການສ່ວນໃຫຍ່ທີ່ແລ່ນຢູ່ໃນລະບົບຖືກຂຽນໃສ່ແຟ້ມເອກະສານພາຍໃນໄດເລກະທໍລີນີ້ຫຼື ໜຶ່ງ ໃນໄດເລກະທໍລີຍ່ອຍຂອງມັນ.

ບັນດາເອກະສານດັ່ງກ່າວແມ່ນເປັນທີ່ຮູ້ຈັກເປັນທ່ອນໄມ້ແລະແມ່ນກຸນແຈ ສຳ ຄັນໃນການກວດກາວິທີການເຮັດວຽກຂອງລະບົບ (ແລະມັນມີການປະພຶດແນວໃດໃນອະດີດ) ບັນທຶກຍັງເປັນແຫລ່ງຂໍ້ມູນ ທຳ ອິດທີ່ຜູ້ບໍລິຫານແລະວິສະວະກອນເບິ່ງໃນຂະນະທີ່ ກຳ ລັງແກ້ໄຂບັນຫາ.

ຖ້າພວກເຮົາເບິ່ງເນື້ອໃນຂອງ /var/log ຢູ່ໃນ CentOS/RHEL/Fedora ແລະ Debian/Ubuntu (ສຳ ລັບຫລາກຫລາຍ) ພວກເຮົາຈະເຫັນໄຟລ໌ບັນທຶກແລະເອກະສານຍ່ອຍຍ່ອຍຕໍ່ໄປນີ້.

ກະລຸນາຮັບຊາບວ່າຜົນໄດ້ຮັບອາດຈະແຕກຕ່າງກັນບາງຢ່າງໃນກໍລະນີຂອງທ່ານຂື້ນຢູ່ກັບການບໍລິການທີ່ແລ່ນຢູ່ໃນລະບົບຂອງທ່ານແລະເວລາທີ່ພວກເຂົາໃຊ້.

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

ໃນທັງສອງກໍລະນີ, ພວກເຮົາສາມາດສັງເກດເຫັນວ່າບາງບັນຊີ log log ສິ້ນສຸດຕາມທີ່ຄາດວ່າຈະຢູ່ໃນ“ log”, ໃນຂະນະທີ່ບາງຊື່ກໍ່ຖືກປ່ຽນຊື່ໂດຍໃຊ້ວັນທີ (ຕົວຢ່າງ maillog-20160822 ໃນ CentOS) ຫຼືຖືກບີບອັດ (ພິຈາລະນາ auth.log.2.gz ແລະ mysql.log.1.gz ໃນ Debian).

ນີ້ບໍ່ແມ່ນພຶດຕິ ກຳ ເລີ່ມຕົ້ນໂດຍອີງໃສ່ການແຈກຢາຍທີ່ເລືອກໄວ້ແຕ່ສາມາດປ່ຽນແປງໄດ້ໂດຍຈະໃຊ້ທິດທາງໃນເອກະສານການຕັ້ງຄ່າ, ດັ່ງທີ່ພວກເຮົາຈະເຫັນໃນບົດຂຽນນີ້.

ຖ້າບັນທຶກຖືກເກັບຮັກສາໄວ້ຕະຫຼອດໄປ, ໃນທີ່ສຸດພວກເຂົາຈະເຮັດໃຫ້ລະບົບແຟ້ມເອກະສານບ່ອນທີ່/var/log ຢູ່. ເພື່ອປ້ອງກັນສິ່ງດັ່ງກ່າວ, ຜູ້ເບິ່ງແຍງລະບົບສາມາດໃຊ້ປະໂຫຍດທີ່ດີທີ່ເອີ້ນວ່າ logrotate ເພື່ອ ທຳ ຄວາມສະອາດທ່ອນໄມ້ໃນແຕ່ລະໄລຍະ.

ໃນສອງສາມ ຄຳ, logrotate ຈະປ່ຽນຊື່ຫລືອັດບັນທຶກຕົ້ນຕໍເມື່ອມີເງື່ອນໄຂ (ມີປະມານຫຼາຍກວ່ານັ້ນໃນນາທີ) ເພື່ອໃຫ້ເຫດການຕໍ່ໄປຖືກບັນທຶກລົງໃນເອກະສານເປົ່າ.

ນອກຈາກນັ້ນ, ມັນຈະ ກຳ ຈັດເອກະສານບັນທຶກ“ ເກົ່າ” ແລະຈະເກັບຮັກສາເອກະສານທີ່ລ້າສຸດ. ແນ່ນອນ, ພວກເຮົາຕ້ອງໄດ້ຕັດສິນໃຈວ່າ“ ເກົ່າ” ມີຄວາມ ໝາຍ ແນວໃດແລະພວກເຮົາຕ້ອງການທີ່ຈະຂົນໄມ້ທ່ອນເລື້ອຍໆເພື່ອ ທຳ ຄວາມສະອາດໄມ້ທ່ອນ ສຳ ລັບພວກເຮົາ.

ການຕິດຕັ້ງ Logrotate ໃນ Linux

ການຕິດຕັ້ງ logrotate, ພຽງແຕ່ໃຊ້ຜູ້ຈັດການຊຸດຂອງທ່ານ:

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

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

ມັນຄຸ້ມຄ່າແລະຄວນສັງເກດວ່າເອກະສານການຕັ້ງຄ່າ ( /etc/logrotate.conf ) ອາດຈະສະແດງໃຫ້ເຫັນວ່າອີກ, ການຕັ້ງຄ່າສະເພາະເພີ່ມເຕີມອາດຈະຖືກຈັດໃສ່ໃນ .conf ແຟ້ມພາຍໃນ /etc/logrotate.d.

ນີ້ຈະເປັນກໍລະນີຖ້າແລະຖ້າຫາກວ່າເສັ້ນຕໍ່ໄປນີ້ມີຢູ່ແລະບໍ່ໄດ້ຮັບການສະແດງຄວາມຄິດເຫັນໃດໆ:

include /etc/logrotate.d

ພວກເຮົາຈະຕິດກັບວິທີການນີ້, ເພາະມັນຈະຊ່ວຍໃຫ້ພວກເຮົາຮັກສາສິ່ງຕ່າງໆໃຫ້ເປັນລະບຽບ, ແລະ ນຳ ໃຊ້ກ່ອງ Debian ສຳ ລັບຕົວຢ່າງຕໍ່ໄປນີ້.

ຕັ້ງຄ່າ Logrotate ໃນ Linux

ເປັນເຄື່ອງມືທີ່ມີຄວາມຄ່ອງແຄ້ວຫຼາຍ, logrotate ໃຫ້ທິດທາງຫຼາຍຢ່າງເພື່ອຊ່ວຍພວກເຮົາ ກຳ ນົດເວລາແລະວິທີການທ່ອນໄມ້ຈະ ໝູນ ວຽນ, ແລະສິ່ງທີ່ຄວນຈະເກີດຂື້ນໃນພາຍຫຼັງ.

ໃຫ້ຂຽນໃສ່ເນື້ອໃນຕໍ່ໄປນີ້ໃນ /etc/logrotate.d/apache2.conf (ໃຫ້ສັງເກດວ່າທ່ານອາດຈະຕ້ອງສ້າງເອກະສານນັ້ນ) ແລະກວດເບິ່ງແຕ່ລະແຖວເພື່ອຊີ້ບອກຈຸດປະສົງຂອງມັນ:

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

ສາຍ ທຳ ອິດຊີ້ໃຫ້ເຫັນວ່າທິດທາງໃນທ່ອນໄມ້ ນຳ ໃຊ້ກັບບັນທຶກທັງ ໝົດ ພາຍໃນ/var/log/apache2:

  • ປະ ຈຳ ອາທິດ ໝາຍ ຄວາມວ່າເຄື່ອງມືຈະພະຍາຍາມ ໝູນ ທ່ອນໄມ້ທ່ອນໃນແຕ່ລະອາທິດ. ຄ່າອື່ນໆທີ່ເປັນໄປໄດ້ແມ່ນປະ ຈຳ ວັນແລະທຸກເດືອນ.
  • ໝຸນ 3 ສະແດງວ່າຄວນເກັບຮັກສາໄມ້ທ່ອນພຽງແຕ່ 3 ທ່ອນເທົ່ານັ້ນ. ດັ່ງນັ້ນ, ເອກະສານເກົ່າແກ່ທີ່ສຸດຈະຖືກລຶບອອກເປັນຄັ້ງທີສີ່ຕໍ່ໄປ.
  • ຂະ ໜາດ = 10M ກຳ ນົດຂະ ໜາດ ຕຳ ່ສຸດ ສຳ ລັບການ ໝູນ ວຽນທີ່ຈະເກີດຂື້ນເຖິງ 10M. ເວົ້າອີກຢ່າງ ໜຶ່ງ, ແຕ່ລະທ່ອນຈະບໍ່ ໝຸນ ຈົນກວ່າມັນຈະຮອດ 10 MB.
  • ການບີບອັດແລະການລ່າຊ້າແມ່ນຖືກໃຊ້ເພື່ອບອກວ່າທຸກໆທ່ອນທີ່ ໝູນ ວຽນ, ຍົກເວັ້ນບັນດາຂໍ້ມູນ ໃໝ່ ທີ່ສຸດ, ຄວນຖືກບີບອັດ.

ໃຫ້ໃຊ້ເວລາແຫ້ງແລ້ງເພື່ອເບິ່ງວ່າ logrotate ຈະເຮັດຫຍັງຖ້າມັນຖືກປະຕິບັດຕົວຈິງໃນປະຈຸບັນ. ໃຊ້ຕົວເລືອກ -d ຕາມດ້ວຍແຟ້ມການຕັ້ງຄ່າ (ຕົວຈິງທ່ານສາມາດແລ່ນ logrotate ໂດຍການຍົກເລີກຕົວເລືອກນີ້):

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

ຜົນໄດ້ຮັບແມ່ນສະແດງຢູ່ດ້ານລຸ່ມ:

ແທນທີ່ຈະບີບອັດໄມ້ທ່ອນ, ພວກເຮົາສາມາດປ່ຽນຊື່ໄດ້ຫຼັງຈາກວັນທີທີ່ພວກມັນຖືກ ໝູນ ວຽນ. ເພື່ອເຮັດສິ່ງນັ້ນ, ພວກເຮົາຈະໃຊ້ ຄຳ ສັ່ງແນະ ນຳ . ຖ້າຮູບແບບວັນທີຂອງພວກເຮົາແມ່ນອື່ນກ່ວາ yyyymmdd ໃນຕອນຕົ້ນ, ພວກເຮົາສາມາດລະບຸໄດ້ໂດຍໃຊ້ວັນທີ.

ໃຫ້ສັງເກດວ່າພວກເຮົາຍັງສາມາດປ້ອງກັນບໍ່ໃຫ້ເກີດການຫມູນວຽນເກີດຂື້ນຖ້າຫາກວ່າທ່ອນແມ່ນຫວ່າງເປົ່າກັບ notifempty. ນອກຈາກນັ້ນ, ໃຫ້ບອກ logrotate ໃຫ້ສົ່ງທ່ອນພືດຫມູນວຽນໃຫ້ກັບຜູ້ເບິ່ງແຍງລະບົບ (ເຄື່ອງແມ່ຂ່າຍເມລທີ່ຈະຕັ້ງ, ເຊິ່ງບໍ່ເກີນຂອບເຂດຂອງບົດຄວາມນີ້).

ຖ້າທ່ານຕ້ອງການທີ່ຈະໄດ້ຮັບອີເມວກ່ຽວກັບ logrotate, ທ່ານສາມາດຕັ້ງຄ່າ Server Postfix mail ດັ່ງທີ່ສະແດງຢູ່ນີ້: ຕິດຕັ້ງ Postfix Mail Server

ເວລານີ້ພວກເຮົາຈະໃຊ້ /etc/logrotate.d/squid.conf ພຽງແຕ່ ໝູນ /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 
}

ດັ່ງທີ່ພວກເຮົາສາມາດເຫັນໃນຮູບຂ້າງລຸ່ມນີ້, log ນີ້ບໍ່ ຈຳ ເປັນຕ້ອງ ໝູນ ວຽນ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ເມື່ອເງື່ອນໄຂຂະ ໜາດ ບັນລຸໄດ້ (ຂະ ໜາດ = 1M), ທ່ອນທີ່ ໝູນ ວຽນຈະຖືກປ່ຽນຊື່ ໃໝ່ access.log-25082020 (ຖ້າ log ຖືກ ໝູນ ວຽນໃນວັນທີ 25 ສິງຫາ 2020) ແລະບັນທຶກຕົ້ນຕໍ (access.log) ຈະຖືກ ນຳ ໃຊ້ຄືນ ໃໝ່ ສ້າງຂື້ນດ້ວຍການອະນຸຍາດເຂົ້າເຖິງທີ່ ກຳ ນົດເຖິງ 0644 ແລະມີຮາກເປັນເຈົ້າຂອງແລະເຈົ້າຂອງກຸ່ມ.

ສຸດທ້າຍ, ເມື່ອ ຈຳ ນວນຂໍ້ມູນບັນທຶກສຸດທ້າຍຮອດ 6, ບັນທຶກເກົ່າແກ່ທີ່ສຸດຈະຖືກສົ່ງໄປທີ່ [email .

ຕອນນີ້ສົມມຸດວ່າທ່ານຕ້ອງການທີ່ຈະໃຊ້ ຄຳ ສັ່ງທີ່ ກຳ ນົດເອງເມື່ອ ໝູນ ວຽນ. ເພື່ອເຮັດສິ່ງນັ້ນ, ໃຫ້ວາງສາຍທີ່ມີ ຄຳ ສັ່ງດັ່ງກ່າວລະຫວ່າງທິດທາງ postrotate ແລະ endcript.

ຍົກຕົວຢ່າງ, ສົມມຸດວ່າພວກເຮົາຕ້ອງການສົ່ງອີເມວຫາຮາກໃນເວລາທີ່ບັນທຶກພາຍໃນ/var/log/myservice ຖືກ ໝູນ ວຽນ. ໃຫ້ຕື່ມສາຍໃນສີແດງໃສ່ /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
}

ສຸດທ້າຍ, ແຕ່ບໍ່ ຈຳ ເປັນຕ້ອງສັງເກດວ່າຕົວເລືອກຕ່າງໆທີ່ມີຢູ່ໃນ /etc/logrotate.d/*.conf ເອົາຊະນະຜູ້ທີ່ຢູ່ໃນແຟ້ມການຕັ້ງຄ່າຕົ້ນຕໍໃນກໍລະນີມີຂໍ້ຂັດແຍ່ງ.

Logrotate ແລະ Cron

ໂດຍຄ່າເລີ່ມຕົ້ນ, ການຕິດຕັ້ງ logrotate ສ້າງໄຟລ໌ crontab ພາຍໃນ /etc/cron.daily ຊື່ logrotate. ເຊັ່ນດຽວກັນກັບເອກະສານ crontab ອື່ນໆທີ່ຢູ່ພາຍໃນໄດເລກະທໍລີນີ້, ມັນຈະຖືກປະຕິບັດທຸກໆວັນເລີ່ມຕັ້ງແຕ່ເວລາ 6:25 ຖ້າ anacron ບໍ່ຕິດຕັ້ງ

ຖ້າບໍ່ດັ່ງນັ້ນ, ການປະຕິບັດຈະເລີ່ມຕົ້ນປະມານ 7:35. ເພື່ອກວດສອບ, ເບິ່ງສາຍທີ່ມີ cron.daily ໃນ/etc/crontab ຫຼື/etc/anacrontab.

ບົດສະຫຼຸບ

ໃນລະບົບທີ່ສ້າງບັນທຶກຫລາຍທ່ອນ, ການບໍລິຫານເອກະສານດັ່ງກ່າວສາມາດເຮັດໄດ້ງ່າຍຂື້ນໂດຍໃຊ້ logrotate. ດັ່ງທີ່ພວກເຮົາໄດ້ອະທິບາຍໄວ້ໃນບົດຄວາມນີ້, ມັນຈະ ໝຸນ, ອັດ, ລຶບແລະບັນທຶກອີເມວໂດຍອັດຕະໂນມັດໃນແຕ່ລະໄລຍະຫຼືເມື່ອເອກະສານຮອດຂະ ໜາດ ທີ່ໄດ້ມອບໃຫ້.

ພຽງແຕ່ຮັບປະກັນວ່າມັນໄດ້ຖືກ ກຳ ນົດໃຫ້ເຮັດວຽກ cron ແລະ logrotate ຈະເຮັດໃຫ້ສິ່ງຕ່າງໆງ່າຍຂຶ້ນຫຼາຍ ສຳ ລັບທ່ານ. ສຳ ລັບລາຍລະອຽດເພີ່ມເຕີມ, ເບິ່ງທີ່ ໜ້າ ຜູ້ຊາຍ.

ທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ແນະ ນຳ ຫຍັງກ່ຽວກັບບົດຂຽນນີ້? ຮູ້ສຶກບໍ່ເສຍຄ່າທີ່ຈະແຈ້ງໃຫ້ພວກເຮົາຮູ້ໂດຍໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.