Linux Server Deployment & SSH Mastery · บทเรียน

การหมุนเวียนและจัดเก็บบันทึก

นำ `logrotate` มาใช้เพื่อจัดการขนาดไฟล์บันทึก ป้องกันดิสก์เต็ม และทำให้การจัดเก็บบันทึกเป็นไปอย่างมีประสิทธิภาพ

บทเรียน 3 จาก 411 ขั้นตอน

การหมุนเวียนและจัดเก็บบันทึก เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เครื่องมือเฝ้าติดตามระบบ
  2. ทำความเข้าใจบันทึกระบบ
  3. การหมุนเวียนและจัดเก็บบันทึก
  4. การตรวจสอบและการแจ้งเตือนแบบรวมศูนย์
← กลับไปที่ Linux Server Deployment & SSH Mastery