0Pricing
DevOps Bootcamp · บทเรียน

การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ

ดูแลดิสก์ให้มีพื้นที่พร้อมใช้งานด้วยการหมุนเวียนบันทึกและล้างไฟล์เก่าโดยอัตโนมัติด้วย logrotate และสคริปต์ที่ใช้ find ตามกำหนดเวลา

การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาของบันทึกที่เพิ่มขึ้นเรื่อย ๆ

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

du -sh /var/log/*

การหมุนเวียนบันทึกทำอะไร

การหมุนเวียนจะเปลี่ยนชื่อบันทึกปัจจุบัน สร้างบันทึกใหม่ที่ว่างเปล่า และเก็บสำเนาเก่าที่บีบอัดไว้จำนวนจำกัด

  • app.log จะกลายเป็น app.log.1
  • สำเนาเก่าจะถูกบีบอัดด้วย gzip
  • สำเนาที่เก่าที่สุดจะถูกลบ

แนะนำ logrotate

logrotate เป็นเครื่องมือมาตรฐานของ Linux ที่ทำให้การหมุนเวียนเป็นอัตโนมัติตามขนาดหรืออายุ โดยกำหนดค่าไว้ภายใต้ /etc/logrotate.d/

cat /etc/logrotate.conf

การกำหนดค่า logrotate เบื้องต้น

บล็อกการกำหนดค่าจะระบุชื่อไฟล์บันทึกและนโยบายการหมุนเวียน

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

ทำความเข้าใจคำสั่งกำกับ

คำสั่งกำกับที่ใช้บ่อย:

  • daily หมุนเวียนทุกวัน
  • rotate 7 เก็บไฟล์เก่าไว้ 7 ไฟล์
  • compress บีบอัดบันทึกที่หมุนเวียนแล้วด้วย gzip
  • missingok ข้ามหากไม่มีไฟล์

ทดสอบโดยไม่ต้องรอ

บังคับให้ทำงานด้วย -f หรือทดลองทำงานด้วย -d เพื่อตรวจสอบการกำหนดค่าก่อนวางใจให้ตารางเวลาทำงาน

logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myapp

สคริปต์ postrotate

บริการจำนวนมากยังคงเปิดตัวจัดการไฟล์เก่าไว้ บล็อก postrotate จะส่งสัญญาณให้บริการเปิดบันทึกอีกครั้งหลังการหมุนเวียน

/var/log/myapp/*.log {
    daily
    postrotate
        systemctl reload myapp
    endscript
}

ลบไฟล์เก่าด้วย find

สำหรับการเก็บกวาดเฉพาะกิจ ใช้ find ร่วมกับ -mtime เพื่อค้นหาไฟล์ที่เก่ากว่า N วันและลบไฟล์เหล่านั้น

find /var/log/myapp -name "*.log" -mtime +30 -delete

สคริปต์เก็บกวาดที่ปลอดภัย

รวมการเก็บกวาดไว้ในสคริปต์ที่บันทึกสิ่งที่ลบ เพื่อให้มีหลักฐานการตรวจสอบย้อนหลัง

#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
  >> /var/log/cleanup.log 2>&1

กำหนดเวลาการเก็บกวาด

จัดการการหมุนเวียนผ่าน logrotate ซึ่งขับเคลื่อนด้วย cron อยู่แล้ว และกำหนดเวลาสคริปต์เก็บกวาดที่กำหนดเองด้วยรายการ crontab ของคุณ

# crontab -e
30 2 * * * /usr/local/bin/cleanup.sh

ตรวจสอบการใช้ดิสก์

เพิ่มกลไกป้องกันที่แจ้งเตือนเมื่อพาร์ทิชันใช้พื้นที่เกินเกณฑ์ เพื่อไม่ให้การเก็บกวาดล่าช้าเกินไป

USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert root

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับการทำงานอัตโนมัติ

สรุปทบทวน

คุณทำให้การดูแลบันทึกเป็นอัตโนมัติแล้ว:

  • logrotate หมุนเวียนตามอายุหรือขนาดด้วย rotate, compress, postrotate
  • ตรวจสอบความถูกต้องด้วย -d / -f
  • ใช้ find -mtime +N -delete สำหรับการเก็บกวาดแบบกำหนดเอง
  • กำหนดเวลาด้วย cron และใช้การแจ้งเตือนการใช้ดิสก์เป็นกลไกป้องกัน

คำถามที่พบบ่อย

บทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ”

ดูแลดิสก์ให้มีพื้นที่พร้อมใช้งานด้วยการหมุนเวียนบันทึกและล้างไฟล์เก่าโดยอัตโนมัติด้วย logrotate และสคริปต์ที่ใช้ find ตามกำหนดเวลา คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การตั้งเวลางานด้วย Cron
  2. การทำงานดูแลระบบให้เป็นอัตโนมัติ
  3. โครงงานการเขียนสคริปต์ขั้นสูง
  4. การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ
← กลับไปที่ DevOps Bootcamp