การจัดการ Log ของ Apache Web Server

Log การใช้งานถือว่าเป็นสิ่งสำคัญเพื่อตรวจสอบระบบมีใครเข้ามาใช้งานบ้าง แต่จะต้องมีการดูแลอย่างสม่ำเสมอ มิเช่นนั้นจะทำให้ขนาดของพื้นที่ในเครื่องไม่เพียงพอในการจัดเก็บ log ในที่นี้จะกล่าวถึง log ของ web server โดยใช้ความสามารถของ apache web server โดยใน configuration ของ apache เราสามารถที่กำหนดให้ทำการบันทึก log ไว้ได้ โดยมาตราฐานในการบันทึก log จะบันทึกเป็นแฟ้มข้อมูลเดียวทำให้ขนาดใหญ่ขึ้นทุกครั้งที่มีการเรียกใช้งาน เราจึงจำเป็นต้องทำการกำหนด configuration ใหม่ เพื่อให้ระบบทำการบันทึก log ตามช่วงเวลาที่ต้องการ โดยกำหนดไว้ใน access และ error log ใน root ของแต่ละ application หรือของระบบก็ได้ เช่น

ErrorLog "|/usr/sbin/rotatelogs -l /home/p10028/log/p10028-error_log.%Y-%m-%d-%H 3600"
CustomLog "|/usr/sbin/rotatelogs -l /home/p10028/log/p10028-access_log.%Y-%m-%d-%H 3600" combined

(ถ้าเป็น windows ไฟล์ rotatelogs จะอยู่ใน bin ของ apache ถ้าต้องการกำหนดเป็นขนาดของไฟล์ก็ได้ โดยแทนที่ 3600 ด้วยขนาดที่ต้องการ เช่น 5M เป็นต้น)
ตามตัวอย่างจะเป็นการกำหนดทุกๆ 1 (3600 วินาที) ชั่วโมงจะทำการสร้างแฟ้มข้อมูลสำหรับบันทึก log ใหม่ ตัวอย่านี้จะเป็นของ Linux ซึ่งต่อไปก็เป็นการจัดการแฟ้มข้อมูล log ที่เพิ่มขึ้นมาทุกๆ 1 ชั่วโมง โดยเราอาจจะเขียน shell script ในการลบแฟ้มข้อมูล log ที่เกินระยะเวลาที่เรากำหนดไว้ เช่น

#!/bin/sh
find /home/log/* -maxdepth 0 –type –f –mtime +15 | xargs rm -f

เมื่อได้ shell script ข้างต้นเราก็นำไปกำหนดไว้ใน crontab เพื่อให้ระบบทำการ run shell script ที่เราต้องการได้ตามเวลาที่กำหนด โดย shell script ข้างต้นจะเป็นการหาแฟ้มข้อมูลในตำแหน่ง /home/log ที่ระยะเวลาเกินกว่า 15 วัน แล้วทำการลบแฟ้มข้อมูลนั้นๆ ออก

ความคิดเห็น

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

PostgreSQL Partitioning

กรณีที่ไม่สามารถ start service ของ PostgreSQL ได้ (ใน windows)