ข้อดีและข้อเสียของ logrotate เทียบกับ rotatelogs กับ Apache คืออะไร?


11

Apache ให้บริการเครื่องมือที่เรียกว่า rotatelogs ซึ่งมีประโยชน์ในการไม่รีสตาร์ท apache เมื่อหมุนบันทึกซึ่งเกิดขึ้นกับ logrotate ฉันไม่มีประสบการณ์เพียงพอที่จะพูดได้ว่านี่เป็นเกณฑ์ที่เพียงพอในการใช้ rotatelogs มากกว่า logrotate

คำถามของฉันคือไม่มีใครมีประสบการณ์ชีวิตจริงโดยใช้เครื่องมืออย่างใดอย่างหนึ่งหรือทั้งสองและสิ่งที่คุณป้อนจะเป็นอย่างไร

คุณจะแนะนำอะไรและทำไม

คำตอบ:


7

ฉันจะแนะนำ logrotate สำหรับคนส่วนใหญ่เนื่องจากนั่นคือสิ่งที่จะหมุนบันทึกอื่น ๆ ทั้งหมด (KISS: Keep it Simple Stupid) Logrotate ไม่ได้รีสตาร์ท Apache ทั้งหมด แต่เพียงแค่ส่งสัญญาณที่บอกให้เปิดไฟล์บันทึกทั้งหมดและเริ่มต้นลูก ๆ อีกครั้ง สัญญาณนี้อาจเป็น SIGHUP ซึ่งเป็นสาเหตุให้เด็ก ๆ เริ่มต้นใหม่ทันที (ซึ่งจะขัดจังหวะการดาวน์โหลด) หรือ SIGUSR1 ซึ่งเป็นการรีสตาร์ทอย่างนุ่มนวล ด้วย SIGUSR1 คุณต้องชะลอการบันทึกจนกว่าคุณจะคิดว่าเด็กทุกคนจะต้องตาย ไม่ว่าจะด้วยวิธีใดคุณอาจต้องการวิเคราะห์บันทึกและกำหนดเวลาสำหรับช่วงเวลาที่มีการรับส่งข้อมูลน้อยที่สุดในวันหรือสัปดาห์

ดูเหมือนว่ามันจะเป็นทางออกที่มีประสิทธิภาพมากกว่า ข้อได้เปรียบที่สำคัญคือการที่มันจะช่วยให้คุณใช้ระบบการบันทึกจากส่วนกลางและโหลดเว็บเซิร์ฟเวอร์เอง คู่มือบอกว่า:

เช่นเดียวกับการบันทึกตามเงื่อนไขล็อกแบบ piped เป็นเครื่องมือที่ทรงพลังมาก แต่ไม่ควรใช้ในกรณีที่วิธีการแก้ปัญหาที่ง่ายกว่าเช่นการประมวลผลแบบออฟไลน์สามารถทำได้

ดังนั้นเห็นได้ชัดว่าไม่ใช้การเข้าสู่ระบบประปาถ้าคุณไม่ต้องการมัน ฉันเคยใช้การบันทึก piped ในอดีตเป็นวิธีแฮ็กในการกรองบันทึกและไม่มีปัญหา


สคริปต์ postrotate ที่มีไฟล์บันทึกการทำงานของ Apache คือการส่ง SIGHUP ซึ่งทำให้ Apache ยุติการใช้งานลูกทั้งหมดและเริ่มต้นใหม่ การเชื่อมต่อที่ใช้งานอยู่ ณ เวลานั้น ๆ จะถูกยกเลิก
Warner

ฉันอ่านความคิดเห็นบางแห่งที่กล่าวว่าการรีสตาร์ทอย่างนุ่มนวลไม่ทำงานกับเซิร์ฟเวอร์ที่มีภาระมาก แต่ฉันไม่คิดว่าจะมีทางเลือกมากนัก
Mohan Gulati

logrotate ด้วย SIGHUP เป็นมาตรฐานที่ค่อนข้างดี ฉันจะไม่กังวลเกี่ยวกับมัน
Warner

2

ฉันเคยใช้ทั้งสองมาก่อน ฉันพบว่าการใช้ rotatelogs เป็นเครื่องมือที่มีประโยชน์มากในการจัดการล็อกการเข้าถึงและหากคุณไม่ต้องการหยุดทำงานของ Apache ในเว็บไซต์ที่มีปริมาณมากฉันจะแนะนำสิ่งนี้ปัญหาเดียวที่ฉันพบคือถ้าคุณต้องการจัดการบันทึกคุณจะต้องมีสคริปต์ cron แยกต่างหากเพื่อล้างหรือย้ายบันทึกไปยังเซิร์ฟเวอร์สำรองอย่างชัดเจน ขึ้นอยู่กับความต้องการ ด้วย logrotate คุณมีตัวเลือกเพิ่มเติมเกี่ยวกับวิธีการจัดการ logfiles ปัญหาเดียวก็คือเมื่อ logrotate ทำงานตามที่อธิบายในคำตอบก่อนหน้าคุณจะต้องเริ่ม apache ใหม่

โดยพื้นฐานแล้วจะมีตัวเลือกให้เลือกหากคุณต้องการ Apache เพื่อให้ทำงานโดยไม่ขัดจังหวะจากนั้น rotatelogs ที่มีสคริปต์ cron ภายนอกเพื่อจัดการ เพียงให้แน่ใจว่าได้ตั้งค่า cron logrotate ไม่ให้หมุนบันทึกเมื่อคุณมีปริมาณการใช้งานสูง

สุดท้ายถ้าคุณต้องการมี apache log ใน syslog ของคุณคุณสามารถใช้คำสั่ง logger ที่อยู่บน Redhat Based linux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.