ข่าว: ข่าวประกาศ

  • 27 เมษายน 2024, 11:44:55

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ผู้เขียน หัวข้อ: เก็บ traffic log ที่ proxy / webcache ด้วย shell script  (อ่าน 17677 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 3820
    • ดูรายละเอียด
    • อีเมล์
เก็บ traffic log ที่ proxy / webcache ด้วย shell script
« เมื่อ: 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 ไปไว้อีกเครื่อง

จบ
 
<a href="http://www.hadyaiinternet.com/images/inetcafe.swf" target="_blank" rel="noopener noreferrer" class="bbc_link bbc_flash_disabled new_win">http://www.hadyaiinternet.com/images/inetcafe.swf</a>


There are no comments for this topic. Do you want to be the first?