การหมุนเวียนและจัดเก็บบันทึก
นำ `logrotate` มาใช้เพื่อจัดการขนาดไฟล์บันทึก ป้องกันดิสก์เต็ม และทำให้การจัดเก็บบันทึกเป็นไปอย่างมีประสิทธิภาพ
การหมุนเวียนและจัดเก็บบันทึก เป็นบทเรียน Linux Server Deployment & SSH Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Server Deployment & SSH Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดการหมุนเวียนบันทึกจึงสำคัญ
บันทึกเซิร์ฟเวอร์จำเป็นต่อการแก้ไขข้อบกพร่องและการตรวจสอบ แต่เมื่อเวลาผ่านไปบันทึกเหล่านี้อาจมีขนาดใหญ่มาก หากปล่อยไว้โดยไม่จัดการ บันทึกอาจใช้พื้นที่ดิสก์จนเต็มอย่างรวดเร็ว ส่งผลให้เซิร์ฟเวอร์ไม่เสถียรหรือถึงขั้นหยุดทำงาน
นี่คือจุดที่ การหมุนเวียนบันทึกเข้ามามีบทบาท ซึ่งเป็นกระบวนการสำคัญสำหรับจัดการขนาดไฟล์บันทึกอย่างมีประสิทธิภาพ
แนะนำเครื่องมือ `logrotate`
ระบบ Linux ใช้เครื่องมือที่เรียกว่า logrotate เพื่อทำให้การจัดการไฟล์บันทึกเป็นอัตโนมัติ โดยออกแบบมาเพื่อ
- หมุนเวียนบันทึก (เปลี่ยนชื่อบันทึกเก่า)
- บีบอัดบันทึกเก่าเพื่อประหยัดพื้นที่
- ลบไฟล์บันทึกที่เก่ามาก
- เรียกใช้สคริปต์ที่กำหนดเองหลังการหมุนเวียน
ดิสทริบิวชัน Linux ส่วนใหญ่ติดตั้งและตั้งค่า logrotate ไว้ล่วงหน้าให้ทำงานทุกวันผ่านงาน cron
วิธีที่ `logrotate` ค้นหาคำสั่ง
logrotate อ่านการตั้งค่าจากไฟล์เฉพาะ โดยมีตำแหน่งหลักอยู่สองแห่ง
/etc/logrotate.conf: ไฟล์การตั้งค่าหลัก ซึ่งมักมีการตั้งค่าทั่วไปและค่าเริ่มต้น/etc/logrotate.d/: ไดเรกทอรีที่แอปพลิเคชันและบริการแต่ละรายการเก็บกฎการหมุนเวียนบันทึกเฉพาะของตน ไฟล์แต่ละไฟล์ในไดเรกทอรีนี้จะถือเป็นการตั้งค่าแยกจากกัน
แนวทางแบบแยกส่วนนี้ทำให้จัดการกฎของบริการต่าง ๆ ได้ง่าย
กำหนดความถี่ในการหมุนเวียนบันทึก
สิ่งแรก ๆ ที่ควรกำหนดคือควรหมุนเวียนบันทึกบ่อยเพียงใด logrotate มีคำสั่งกำกับหลายรายการสำหรับการตั้งค่านี้
daily: หมุนเวียนบันทึกทุกวันweekly: หมุนเวียนบันทึกสัปดาห์ละครั้งmonthly: หมุนเวียนบันทึกเดือนละครั้งyearly: หมุนเวียนบันทึกปีละครั้ง
เลือกความถี่ที่สมดุลระหว่างการเก็บรายละเอียดของบันทึกกับการใช้พื้นที่ดิสก์
กำหนดจำนวนบันทึกเก่าที่ต้องเก็บไว้
คำสั่งกำกับ rotate จะบอก logrotate ว่าควรเก็บไฟล์บันทึกเก่าไว้กี่ไฟล์ก่อนลบไฟล์ที่เก่าที่สุด ตัวอย่างเช่น rotate 4 หมายความว่าจะเก็บไฟล์บันทึกปัจจุบันไว้ รวมถึงไฟล์บันทึกที่หมุนเวียนแล้ว (ไฟล์เก็บถาวร) อีกสี่เวอร์ชัน
เมื่อถึงขีดจำกัด ระบบจะลบบันทึกที่หมุนเวียนแล้วซึ่งเก่าที่สุดเมื่อมีการหมุนเวียนครั้งใหม่
การบีบอัดไฟล์บันทึกเก่า
หากต้องการประหยัดพื้นที่ดิสก์ให้มากยิ่งขึ้น logrotate สามารถบีบอัดไฟล์บันทึกเก่าได้ คำสั่ง compress มีหน้าที่ทำสิ่งนี้โดยตรง และโดยทั่วไปจะใช้ gzip
เมื่อเปิดใช้งานตัวเลือกนี้ ไฟล์บันทึกที่หมุนแล้วจะแสดงเป็นไฟล์ .gz (เช่น myapp.log.1.gz) ขอแนะนำให้ใช้ตัวเลือกนี้กับไฟล์บันทึกของเซิร์ฟเวอร์ส่วนใหญ่
หมุนตามขนาด ไม่ใช่แค่ตามเวลา
บางครั้งไฟล์บันทึกอาจมีขนาดเพิ่มขึ้นอย่างรวดเร็ว การรอให้หมุนทุกวันหรือทุกสัปดาห์จึงอาจไม่เพียงพอ คำสั่ง size ช่วยให้คุณหมุนไฟล์บันทึกเมื่อมีขนาดเกินค่าที่กำหนด โดยไม่ขึ้นกับความถี่ตามเวลา
size 100k: หมุนไฟล์เมื่อไฟล์บันทึกมีขนาดใหญ่กว่า 100 กิโลไบต์size 10M: หมุนไฟล์เมื่อไฟล์บันทึกมีขนาดใหญ่กว่า 10 เมกะไบต์size 1G: หมุนไฟล์เมื่อไฟล์บันทึกมีขนาดใหญ่กว่า 1 กิกะไบต์
หากระบุทั้งความถี่ตามเวลา (เช่น daily) และ size ระบบจะหมุนไฟล์เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
ตัวอย่างการกำหนดค่า `logrotate`
ต่อไปนี้คือตัวอย่างง่าย ๆ ของไฟล์กำหนดค่าที่คุณอาจพบใน /etc/logrotate.d/ สำหรับไฟล์บันทึกของแอปพลิเคชันสมมติ
การกำหนดค่านี้จะหมุนไฟล์บันทึกทุกวัน เก็บสำเนาเก่าไว้ 7 ชุด และบีบอัดสำเนาเหล่านั้น
/var/log/my_app/access.log {
daily
rotate 7
compress
notifempty
missingok
}
การเรียกใช้ `logrotate` ด้วยตนเอง
แม้โดยปกติ logrotate จะทำงานโดยอัตโนมัติผ่าน cron แต่คุณก็สามารถทดสอบหรือบังคับให้หมุนไฟล์ด้วยตนเองได้ คำสั่งหลักคือ logrotate /etc/logrotate.conf
หากต้องการบังคับให้หมุนไฟล์ (มีประโยชน์สำหรับทดสอบการกำหนดค่าของคุณ) ให้ใช้ตัวเลือก -f:
logrotate -f /etc/logrotate.d/my_app: บังคับให้หมุนไฟล์สำหรับไฟล์กำหนดค่าเฉพาะlogrotate -f /etc/logrotate.conf: บังคับให้หมุนไฟล์บันทึกทั้งหมดที่กำหนดค่าไว้
ใช้ตัวเลือก -d (ดีบัก) เพื่อดูว่าระบบจะทำอะไร โดยไม่หมุนไฟล์จริง
ตรวจสอบความเข้าใจอย่างรวดเร็ว: การเก็บไฟล์บันทึก
พิจารณาการกำหนดค่า logrotate ต่อไปนี้สำหรับ /var/log/webserver/error.log:
/var/log/webserver/error.log {
weekly
rotate 4
compress
notifempty
}หากการกำหนดค่านี้ทำงานมาหลายสัปดาห์แล้ว คุณคาดว่าจะพบไฟล์บันทึกเก่าที่ *บีบอัดแล้ว* อยู่กี่ไฟล์ในช่วงเวลาใดเวลาหนึ่ง
ทบทวน: เชี่ยวชาญการจัดการไฟล์บันทึก
ในบทเรียนนี้ เราได้เรียนรู้วิธีจัดการไฟล์บันทึกของเซิร์ฟเวอร์อย่างมีประสิทธิภาพโดยใช้ logrotate โดยมีประเด็นสำคัญดังนี้:
- การหมุนไฟล์บันทึกช่วยป้องกันไม่ให้พื้นที่ดิสก์เต็ม
logrotateใช้ไฟล์กำหนดค่าที่/etc/logrotate.confและ/etc/logrotate.d/- คำสั่งสำคัญ ได้แก่
daily/weekly/monthlyสำหรับกำหนดความถี่rotateสำหรับกำหนดจำนวนไฟล์ที่เก็บไว้compressสำหรับประหยัดพื้นที่ และsizeสำหรับการหมุนตามเงื่อนไข
การจัดการไฟล์บันทึกอย่างเหมาะสมเป็นพื้นฐานสำคัญของการทำงานเซิร์ฟเวอร์ที่เสถียร
เรียนรู้ Linux Server Deployment & SSH Mastery ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “การหมุนเวียนและจัดเก็บบันทึก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การหมุนเวียนและจัดเก็บบันทึก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Server Deployment & SSH Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การหมุนเวียนและจัดเก็บบันทึก”
นำ `logrotate` มาใช้เพื่อจัดการขนาดไฟล์บันทึก ป้องกันดิสก์เต็ม และทำให้การจัดเก็บบันทึกเป็นไปอย่างมีประสิทธิภาพ คุณปฏิบัติ Linux Server Deployment & SSH Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Server Deployment & SSH Mastery หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Server Deployment & SSH Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การหมุนเวียนและจัดเก็บบันทึก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Linux Server Deployment & SSH Mastery นี้ได้ไหม
ได้ บทเรียน Linux Server Deployment & SSH Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เครื่องมือเฝ้าติดตามระบบ
- ทำความเข้าใจบันทึกระบบ
- การหมุนเวียนและจัดเก็บบันทึก
- การตรวจสอบและการแจ้งเตือนแบบรวมศูนย์