- ประเด็นปัญหาของโพสนี้คือ error กับ access log ของ apache มันมีขนาดใหญ่มากเกินไปแล้ว
- 10 กว่า GB เลยล่ะ
- และอีกอย่าง พื้นที่เก็บ log เราจะเต็มแล้ว ย้ายพาธไปวางที่ partition อื่นดีกว่า
- แก้ปัญหาการเก็บ Log ให้ได้ขนาด หรือ เวลา ตามแต่เราต้องการโดย rotatelogs
- ตรวจสอบดูก่อนว่า Linux เราในที่นี้คือ Debian 7 Wheezy พาธของ rotatelogs อยู่หนใดโดยคำสั่งนี้
whereis rotatelogs
- ผลลัพธ์ในที่นี้ rotatelogs จะอยู่ที่ /usr/sbin/ นะจ้ะ
- จากนั้นตามหาคอนฟิกของ site เรา ของผู้โพสจะอยู่ที่ /etc/apache2/sites-available/myhost.com
- เปิดมันขึ้นมาแก้ไขซะหน่อย
- คำเตือนก่อนทำตามด้านล่างนี้ ให้เราทำการสำรองไฟล์ site เราไว้ก่อนนะเดี๋ยวจะหาว่าไม่เตือน
cp /etc/apache2/sites-available/myhost.com /etc/apache2/sites-available/myhost.com.org
อันนี้เป็นการแก้การเก็บ Error log
nano /etc/apache2/sites-available/myhost.com
- มองหาประมาณนี้ ErrorLog คอมเม้นของเก่าไว้โดยเติม # นำหน้าบรรทัดเดิม แล้วแก้ใหม่เป็นประมาณนี้
#ErrorLog /var/log/apache2/error.log
ErrorLog "|/usr/sbin/rotatelogs /newpath/error.%Y-%m-%d.log 86400"
- อธิบายคือ ให้เก็บ error log ไว้ที่ /newpath/ ไฟล์ error log จะได้ชื่อประมาณนี้ error.yyyy-mm-dd.log ตัวอย่างเช่น error.2014-11-20.log
nano /etc/apache2/sites-available/myhost.com
- มองหาประมาณนี้ CustomLog คอมเม้นของเก่าไว้โดยเติม # นำหน้าบรรทัดเดิม แล้วแก้ใหม่เป็นประมาณนี้
#CustomLog /var/log/apache2/access.log combined
CustomLog "|/usr/sbin/rotatelogs /newpath/access.%Y-%m-%d.log 5M" common
- อธิบายคือ ให้เก็บ access log ไว้ที่ /newpath/ ไฟล์ access log จะได้ชื่อประมาณนี้ access.yyyy-mm-dd.log ตัวอย่างเช่น access.2014-11-20.log
อธิบายเพิ่มเติมจากอ้างอิง
- เราสามารถตั้งค่า Config ของการ Rotate Log ของ Apache โดยระบุเงื่อนไขในการ Rotate เป็นตามขนาดของไฟล์ก็ได้ครับ
- จากเดิมที่ยกตัวอย่างการตั้งค่าเป็น
CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
- ก็ให้ลองเปลี่ยนเป็น
CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 5M" common
- อันนี้เป็นการ Rotate Log file ทุก 5MB ครับ
เพิ่มเติมอีกวิธีใน pantip
- งั้นคุณอาจจะเขียนใส่ใน crontab ของระบบก็ได้ครับ โดยเขียน script ขึ้นมาง่าย ๆ ตัวนึง สมมติว่าชื่อ rotate_apache_log.sh
#!/bin/sh
mv /usr/local/apache/logs/acccess_log /usr/local/apache/logs/access_log.`date +'%y%m%d'`
- แล้วเขียนใน crontab โดย login เข้าไปเป็น root แล้วสั่ง crontab -e จากนั้นก็เพิ่มเข้าไปว่า
0 0 * * * * /usr/local/apache/bin/rotate_apache_log.sh
- เท่านี้มันก็จะเปลี่ยนทุก ๆ เที่ยงคืน โดย log ของวันที่แล้วจะอยู่ในรูปแบบ access_log.ปี เดือน วันเช่น access.log.001103
- http://www.thaiadmin.org/board/index.php?topic=97193.0
- https://www.gotoknow.org/posts/110670
- http://www.atriumtech.com/cgi-bin/hilightcgi?Home=/home/InterWeb2000&File=/home2/searchdata/Forums/http/www.pantip.inet.co.th/tech/xchange/internet/topic/ID566234.html
- http://httpd.apache.org/docs/2.2/logs.html
No comments:
Post a Comment