Logrotate
เป็นกลไกของระบบปฏิบัติการลีนุกซ์ที่ช่วยลบ log file ที่เก่ากว่าออกไป แล้วสร้างไฟล์ log ขึ้นใหม่ ซึ่งมีผลทำให้ไฟล์ log ไม่ใหญ่มากเกินไป โดยการสร้าง
log file มาใหม่นั้นจะไปสร้างซ้ำกับไฟล์เดิม ในไฟล์
/etc/logrotate.conf จะมี option มากกมายให้เราแก้ไข แต่ พอสรุป ได้ คราวๆ ดังนี้
1.
Weekly-daily-monthly หมายถึง ให้มีการ rotate ใน ทุกๆ อาทิตย์ (weekly) หรือ ทุกๆ วัน (daily) หรือ เดือน (monthly)
2.
rotate xx หมายถึง สั่งให้มีการ rotate xx ครั้ง ก่อนลบไฟล์เก่าทิ้งไป
3.
compress หมายถึง สั่งให้มีการ zip ไฟล์ที่ถูก rotate ไปแล้ว
4.
delaycompress หมายถึง สั่งให้มีการชะลอการ zip ไป 1 ครั้ง ทำให้การ rotate ครั้งแรกเป็นการเปลี่ยนชื่อไฟล์เพียงอย่างเดี่ยว และจะถูก zip ในการ rotate ในครั้งต่อไป
5.
notifemply-ifemply หมายถึง ไม่ให้มีการ rotate เมื่อ log file นั้นว่าง
6.
postrotate เป็นการกำหนดให้มีการรันคำสั่ง หลังจาก ที่มีการ rotate ไปแล้ว
7.
endscript เป็นการจบคำสั่งของ postrotate
8.
mail(address)[/color] เป็นการสั่งให้ระบบส่ง log file ให้ผู้ดูแลระบบทาง E-mail
9.
prerotage/endscript เป็นการกำหนดให้มีการรันคำสั่ง ก่อน ที่จะมีการมีการ rotate ซึ่งจะเป็นแบบ postrotate
การประยุกต์การใช้งานใน /etc/logrotate.conf
หลังจากที่เราได้เรียนรู้ option ใน logrotate แล้ว เราจะประยุกต์การปรับแต่งในส่วนของ squid (access.log store.log) เพื่อเตรียมตัวสำหรับการเก็บ log file ให้ดียิ่งขึ้น
# pico /etc/logrotate.confให้เราดูในส่วนของ squid เท่านั้น (อย่าลืม backup ข้อมูลเก่าด้วยนะครับ)
ด้วยคำสั่ง
# cp /ete/logrotage.conf /etc/logrotage.conf.orgเราจะเห็น Config เดิมๆ ดังนี้
/var/log/squid/access.log /var/log/squid/user_agent.log /var/log/squid/referer.log {
weekly
copytruncate
ifempty
missingok
}
/var/log/squid/cache.log {
weekly
rotate 3
copytruncate
compress
missingok
}
แก้เป็น /var/log/squid/access.log /var/log/squid/user_agent.log /var/log/squid/referer.log {
daily (ลบทุกวัน)
copytruncate
ifempty
missingok
}
/var/log/squid/cache.log {
weekly
rotate 2copytruncate
compress
missingok
}
การทำเก็บ access.log ไปตามวัน
1.access.log และ store.log เป็นข้อมูลการใช้งาน อินเตอร์เน็ต ภายในร้าน ซึ่งเรามีวิธีการเก็บให้เป็นไปตามวัน สามารถทำดังนี้
แก้ใน squid.conf เพื่อให้มีการเก็บ access.log และ store.log (โดยปกติใน ipcop จะเก็บอยู่แล้ว)
#pico /etc/squid/squid.conf
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none( แล้ว ทำการ save หรือ ใครจะใช้ vi ก็ ได้ นะครับ)
2.
pico /home/changeaccess.sh#!/bin/sh
timeaccess=`date +%Y-%m-%d`
cp /var/log/squid/access.log /home/shared/$timeaccess-access.log
cp /var/log/squid/store.log /home/shared/$timeaccess-store.log( แล้ว ทำการ save หรือ ใครจะใช้ vi ก็ ได้ นะครับ)
ในที่นี้ผมได้สร้าง folder /home/shared ไว้แล้วนะครับ ใครที่ยังสร้างไม่เป็น ก็สร้างตามนี้เลย
#mkdir /home/shared3. chmod +x /home/changeaccess.sh ( เพื่อให้ โปรแกรมสามารถ รัน script นี่ ได้)
4. เวลาจะเรียกใช้
# cd /home
# ./changeaccess.logจากรูป จะเห็น ว่า access.log มัน จะเปลี่ยนไป ตามวัน
ในกรณีนี้เราจะทำเอาไป ไว้ใน folder shared ซึ่งเป็น folder ที่ share ด้วย samba เราจึงสามารถเอาไฟล์ access.log เหล่านี้ไป write ได้ เลย อิอิ
5. เอา ไป สั่ง ใน fcrontab ( ใน ipcop)
# fcrontab -u root –e เพิ่ม
00 22 * * * sh /home/changeaccess.sh
(ให้ทุกวัน เวลา 22.00 run คำสั่ง นี้ และอย่าลืม save นะครับ)
จัดทำโดย ร้านใบละพันอินเตอร์เน็ต
ที่มา linuxthai