พอดีเจอบทความของอาจารย์ วิบูลย์ นักวิชาการคอมพิวเตอร์ ศูนย์คอม มอ. หาดใหญ่ นี่เอง
น่าสนใจ เลยนำมาโพสเก็บไว้อ่าน สามารถนำไปประยุกต์ใช้เก็บ Logfile 90 วันได้ครับ
Reff ::
http://mamboeasy.psu.ac.th/~wiboon.w/content/view/57/42/Contributed by วิบูลย์
Thursday, 29 November 2007
เขียนโดย วิบูลย์ วราสิทธิชัย นักวิชาการคอมพิวเตอร์ ม.อ.
ที่แฟ้ม /etc/squid/squid.conf จะมีคำสั่งเรื่อง logfile_rotate
ตั้งค่าเป็น logfile_rotate 1
เพื่อให้ rotate แค่ครั้งเดียว
เราสามารถเขียน shell script ให้ลดขนาดแฟ้ม access.log.0 เลือกเฉพาะข้อมูลที่จะเก็บ ตั้งชื่อแฟ้มว่า keep_proxy_log
day=`date '+%Y%m%d'`
cat /var/log/squid/access.log.0 | awk '{print $1 " " $3 " " $7}' | perl -pe 's/^\d+\.\d+/localtime($&)/e;' \
> /root/logs/access.log.cache.${day}
grep POST /var/log/squid/access.log.0 | awk '{print $1 " " $3 " " $6 " \
" $7 " " $9}' | perl -pe 's/^\d+\.\d+/localtime($&)/e;' > /root/logs/post.log.cache.${day}
สร้างไดเรกทอรีที่เก็บ
mkdir /root/logs
ใช้คำสั่งเพื่อทำ rotate แฟ้ม squid จาก access.log ไปเป็น access.log.0
squid -k rotate
เมื่อจะใช้งานก็รันคำสั่ง
sh keep_proxy_log
ในการทำ rotate และ รันคำสั่ง keep_proxy_log สามารถทำได้ทุกคืนด้วย crontab daily
cp keep_proxy_log /etc/crontab.daily/rotate_and_keep_proxy_log
chmod +x /etc/crontab.daily/rotate_and_keep_proxy_log
แก้ไขแฟ้ม /etc/crontab.daily/rotate_and_keep_proxy_log เพื่อเพิ่มคำสั่ง squid -k rotate ไว้ด้วย
เป็นดังนี้
#!/bin/bash
day=`date '+%Y%m%d'`
if [ -f /root/logs/access.log.cache.${day ]; then
exit 0;
fi
squid -k rotate
cat /var/log/squid/access.log.0 | awk '{print $1 " " $3 " " $7}' | perl -pe 's/^\d+\.\d+/localtime($&)/e;' \
> /root/logs/access.log.cache.${day}
grep POST /var/log/squid/access.log.0 | awk '{print $1 " " $3 " " $6 " \
" $7 " " $9}' | perl -pe 's/^\d+\.\d+/localtime($&)/e;' > /root/logs/post.log.cache.${day}
แล้วทุกคืน linux มันจะทำการเก็บ log ไว้ให้ในเวลาประมาณตี 4
อย่าลืมเตรียมเนื้อที่ไว้ หากไม่พอคงต้องใช้คำสั่ง scp ไปไว้อีกเครื่อง
จบ