การจัดเก็บ log ของ Web

การจัดเก็บ log ของ Web

การจัดเก็บ log ของเว็บไซด์ในตัวอย่างการจัดเก็บ log นี้ได้จำลองการให้บริการเว็บไซด์โดยใช้ Apache บนระบบปฏิบัติการ CentOS 5.4 โดยจะเก็บไว้ที่ /log/web/access_log ขั้นตอนแรกให้เลือก Facility ในส่วนของ local0 – local7 แล้วกำหนดลงไปใน /etc/rsyslog.conf ดังตัวอย่างจะเลือก local6 เป็น local messages ในการจัดเก็บ access_log ของ Apache ดังนี้

vi /etc/rsyslog.config

;สร้างพาทโดยใช้คำสั่ง mkdir –p /log/web/

;สร้างไฟล์โดยใช้คำสั่ง touch /log/web/apache_log

;กำหนดการส่งข้อมูล log ผ่าน local6 ใช้ action เป็น info เพื่อเก็บข้อมูลทั่วไป

#web log

local6.info /log/web/access_log

หรือส่งไปยัง log server

local6.info @(ip log server):(port)

;เริ่มต้น service ใหม่ด้วยคำสั่ง service rsyslog restart

ส่วนของ Apache นั้นต้องเขียน script เพิ่มเพราะว่า access logs มีลักษณะเป็นแบบ bit trickier ไม่มี Function การส่ง access_log โดยตรงแต่สามารถส่งผ่านในลักษณะของ pipe ได้ด้วยการเขียน script ในตัวอย่างนี้จะใช้ perl script ช่วยในการส่งผ่าน rsyslog ดังนี้

;สร้างไฟล์โดยใช้คำสั่ง touch /usr/local/sbin/apache_syslog

;และกำหนดให้สามารถเอกซีคิวได้ด้วยคำสั่ง chmod a+x /usr/local/sbin/apache_syslog

;เขียน script ดังนี้

#!/usr/bin/perl

use Sys::Syslog qw (:DEFAULT setlogsock);

setlogsock('unix');

# open our log socket

openlog('httpd', 'pid', 'local6');

# log all our input

while () {

syslog('info', $_);

}

# close the log socket

closelog;

จากนั้นกำหนดค่าใน /etc/httpd/conf/httpd.conf ค้นหาข้อความ CustomLog logs/access_log combined จากนั้เปลี่ยนเป็น CustomLog |/usr/local/sbin/apache_syslog combined แนะนำให้ทำเป็นคอมเมนต์ไว้ครับ เช่น

#CustomLog logs/access_log combined

CustomLog |/usr/local/sbin/apache_syslog combined

เริ่มการทำงานของ apache ใหม่โดยใช้คำสั่ง service httpd restart ทดสอบด้วยการดู log ว่าหลังจากที่ได้มีการเรียกหน้าเว็บไซด์ไฟล์ /log/web/access_log ได้มีการจัดเก็บหรือบันทึก log ไว้หรือไม่ อาจจะใช้คำสั่ง tail –f /log/web/access_log ซึ่งเป็นการดูไฟล์แบบ real time จากนั้นสั่งเกตุการเปลี่ยนแปลง นอกจากนี้ยังสามารถเก็บ log อื่นๆได้อีกด้วยเช่น การจัดเก็บ error log จาก ErrorLog logs/error_log เปลี่ยนเป็น ErrorLog syslog:local6 เป็นต้น

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การ Mounting Disks บน Linux

การคอนฟิก rsyslog server and rsyslog client