วิธีการหมุนบันทึกตามช่วงเวลาเว้นแต่บันทึกเกินขนาดที่กำหนด?


20

จาก man page ของ logrotate:

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

ขนาด ขนาด
ไฟล์เข้าสู่ระบบจะหมุนเมื่อพวกเขาเติบโตมีขนาดใหญ่กว่าขนาดไบต์ หากขนาดตามด้วย k ขนาดจะถือว่าเป็นกิโลไบต์ หากใช้ M ขนาดจะเป็นเมกะไบต์และหากใช้ G จะมีขนาดเป็นกิกะไบต์ ดังนั้นขนาด 100, ขนาด 100k, ขนาด 100M และขนาด 100Gare ใช้ได้ทั้งหมด

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

ฉันตีความคู่มือผิดหรือเปล่า? ฉันจะรับการบันทึกเพื่อหมุนเป็นรายสัปดาห์และถ้าเกิน 5M ได้อย่างไร

แก้ไข:

ฉันไม่แน่ใจว่าข้อมูลต่อไปนี้เกี่ยวข้องหรือไม่ แต่เพื่อเสริม:

ฉันใช้ rsyslog เพื่อทำการบันทึกหลักสำหรับข้อความ, ปลอดภัย, cron, maillog, boot ต่อไปนี้เป็นวันที่การหมุนและขนาดไฟล์ของบันทึกการทำงานสุดท้ายที่ขนาดและช่วงเวลาถูกตั้งค่าตามที่อธิบายไว้ข้างต้น

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

ดังที่เห็นได้เฉพาะข้อความที่หมุน

EDIT2:

man logrotateฉันควรจะมีการตรวจสอบด้วย พวกเขาจริงอัพเกรดกับmaxsizeตัวเลือก นี่ควรเป็นสิ่งที่ฉันกำลังมองหา:

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

คำตอบ:


24

บางคำถามมีคำตอบที่นี่: logrotate ทุกวันและขนาด?

โดยทั่วไปlogrotateจะทำงานวันละครั้งดังนั้นขนาด จำกัด จะไม่ได้รับการยกย่องอย่างแน่นอน logrotateไฟล์สถานะของ (อาจ/var/lib/logrotate.status) เก็บเฉพาะวันที่ (ไม่ใช่ครั้ง) มันไม่ได้มีไว้สำหรับใช้บ่อยขึ้นดังนั้นคุณจึงไม่สามารถหมุนไฟล์ได้บ่อยนัก ( อัปเดต : เวอร์ชั่น 3.85 เพิ่มการสนับสนุนรายชั่วโมงและเก็บบันทึกเวลาทั้งหมดในไฟล์สถานะ .)

คุณไม่ได้บอกว่าsyslogdคุณกำลังใช้อันไหน rsyslogและsyslog-ngสนับสนุนการหมุนตามขนาดที่จัดการด้วยตนเองดังนั้นคุณควรจะสามารถทำให้มันหมุนตามขนาดได้และlogrotateหมุนทุกสัปดาห์ การตั้งชื่อไฟล์เพื่อให้แน่ใจว่าการหมุนไฟล์พร้อมกันจะไม่ลบบางสิ่งโดยไม่ได้ตั้งใจ)

อีกทางเลือกหนึ่งคือการใช้บันทึกแบบ pip เช่นเดียวกับ Apache ในความเป็นจริงแล้ว Apache-2.4 rotatelogs รองรับคุณสมบัตินี้อย่างแน่นอน (เวอร์ชันก่อนหน้านี้รองรับเฉพาะขนาดหรือเวลาเท่านั้น) คุณไม่ได้บอกว่าแหล่งกำเนิดมาจากที่ไหน แต่คุณสามารถเข้าสู่ระบบไปป์หรือ Fifo และใช้rotatelogsหากได้รับการสนับสนุน

ด้วยlogrotate<= v3.8.0 ทั้งสามสถานการณ์ที่รองรับคือ:

  1. ขนาด หมุนตามขนาดวันละครั้งมากที่สุดโดยไม่คำนึงถึงช่วงเวลาที่ผ่านไป
  2. timeperiod หมุนโดยไม่มีเงื่อนไขโดย timeperiod โดยไม่คำนึงถึงขนาด
  3. minsize & timeperiod ถ้า logfile มีขนาดเกิน minsize แล้วหมุนตาม timeperiod การใช้งานทั่วไปคือ "minsize 1" ซึ่งหมายถึงบันทึก 0 ไบต์ไม่ได้รับการหมุน

logrotate-3.8.1 เพิ่ม:

  1. ขยายใหญ่สุด & timeperiod หมุนเมื่อขนาดใดเกินกว่าขนาดสูงสุดหรือหลัง timeperiod ที่ผ่านไป logrotateอาจต้องเรียกใช้มากกว่าค่าเริ่มต้นวันละครั้งในกรณีนี้

logrotate-3.8.5 เพิ่ม:

  1. การสนับสนุนรายชั่วโมงและเก็บการประทับเวลาที่สมบูรณ์ในไฟล์สถานะ คุณควรเรียกใช้logrotate(อย่างน้อย) รายชั่วโมงสำหรับสิ่งนี้

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

1
ใช่ตัวเลือกขนาดสูงสุดพร้อมใช้งานแล้ว กรณีใกล้ :)
ล้นคำถาม

พบว่าในเอกสารก่อนที่ฉันจะอ่านการปรับปรุงของคุณ ... คำตอบตอนนี้ขยาย ขอบคุณ.
mr.spuratic

1
> ไฟล์สถานะของ logrotate (อาจเป็น /var/lib/logrotate.status) เก็บเฉพาะวันที่ (ไม่ใช่ครั้ง) คำสั่งนี้อาจล้าสมัย ฉันเพิ่งตรวจสอบไฟล์สถานะ logrotate ของฉันและมันมีการประทับเวลาที่มีความละเอียดที่สอง: "/var/log/kern.log" 2018-3-12-1: 8: 16
ไฮเปอร์แอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.