Hadyai Internet R&D LAB

แหล่งความรู้ => Server => Linux Server System => ข้อความที่เริ่มโดย: admin ที่ 24 กันยายน 2008, 20:37:36

หัวข้อ: เก็บ traffic log ที่ proxy / webcache ด้วย shell script
เริ่มหัวข้อโดย: admin ที่ 24 กันยายน 2008, 20:37:36
พอดีเจอบทความของอาจารย์ วิบูลย์  นักวิชาการคอมพิวเตอร์  ศูนย์คอม มอ. หาดใหญ่ นี่เอง

น่าสนใจ เลยนำมาโพสเก็บไว้อ่าน  สามารถนำไปประยุกต์ใช้เก็บ 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 ไปไว้อีกเครื่อง

จบ