การใช้งาน Log Rotate ทำได้โดยการเพิ่ม Config ไฟล์ที่ไดเรกทอรี
/etc/logrotate.d/
ซึ่งโปรแกรม logrotate จะเข้ามาอ่าน config file แล้วรันเป็นประจำทุกวัน
โดยใน Config file มีคำสั่งดังนี้ (ตัวอย่างการจัดการ log ของ my_program)
file : /etc/logrotate.d/my_program
/var/log/my_program.log { # ตำแหน่งของ log file
rotate 10 # สั่งให้ rotate 10 ครั้ง ก่อนลบไฟล์เก่าทิ้งไป
daily # สั่งให้มีการ rotate วันละ 1 ครั้ง
compress # สั่งให้มีการบีบอัดไฟล์ที่ถูก rotate ไปแล้ว
delaycompress # สั่งให้ชะลอการบีบอัดข้อมูลไป 1 ครั้ง ทำให้การ rotate ครั้งแรกเป็นการเปลี่ยนชื่อไฟล์เพียงอย่างเดียว และจะถูกบีบอัดในการ rotate ครั้งต่อไป
create 644 root root # เป็นคำสั่งในการกำหนด permission , user , group ของไฟล์ใหม่
postrotate # เป็นกำหนดให้มีการการรันคำสั่ง หลังจากที่มีการ rotate ไปแล้ว
kill -HUP `cat /var/run/my_program.pid` # เป็นคำสั่งที่สั่งให้รัน ในตัวอย่างนี้คือคำสั่ง reload process
endscript # เป็นการจบคำสั่งของ postrotate
}
คอนฟิกอื่นๆที่สำคัญของ logrotate มีดังนี้
weekly,monthly # เป็นการกำหนดให้มีการ rotate เป็นรายสัปดาห์และรายเดือน
mail <.address> # เป็นการสั่งให้ระบบส่ง log file ให้ผู้ดูแลระบบทางอีเมล์
prerotate/endscript # เป็นการกำหนดให้มีการรันคำสั่ง ห่อนที่จะมีการ rotate ซึ่งมีวิธีใช้แบบเดียวกับ postrotate/endscript
นอกจากนี้ ท่านยังสามารถอ่าน config อื่นๆได้เพิ่มเติมได้โดยการรันคำสั่ง man logrotate
cd /home mkdir log-squid |
nano /etc/squid/squid.conf |
http://www.hadyaiinternet.com/index.php?topic=254.0
nano /etc/logrotate.d/squid |
/var/squid/logs/access.log {
daily
rotate 1
copytruncate
notifempty
ifempty
missingok
postrotate
#!/bin/sh
LIMIT=90
timeaccess=`date +%Y-%m-%d`
cp /var/squid/logs/access.log.1 /home/log-squid/$timeaccess-access.log
find /home/log-squid -maxdepth 1 -type f \( -ctime $LIMIT \) -print \-exec rm {} \; > /dev/null
endscript
}
สร้าง iptables logrotate เพื่อก็บ message.log แยกเป็นวันจำนวน 90 วัน เพื่อให้ตรวจสอบได้ง่ายขึ้น
nano /etc/logrotate.d/iptables |
/var/log/message.log {
daily
rotate 1
copytruncate
notifempty
ifempty
missingok
postrotate
#!/bin/sh
LIMIT=90
timeaccess=`date +%Y-%m-%d`
cp /var/log/message.log.1 /home/log-squid/$timeaccess-message.log
find /home/log-squid -maxdepth 1 -type f \( -ctime $LIMIT \) -print \-exec rm {} \; > /dev/null
endscript
}
ทดสอบและดีบัก
/usr/sbin/logrotate -d /etc/logrotate.conf
/usr/sbin/logrotate -f /etc/logrotate.conf
ที่มา http://www.thaislack.com
ไม่มีความคิดเห็น:
แสดงความคิดเห็น