ดูบันทึก journalctl รุ่นเก่าได้อย่างไร (หลังจากการหมุนอาจจะ?)


23

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

ฉันยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับ journald.conf ดังนั้นฉันจึงใช้ค่าเริ่มต้นที่นั่น

ตัวอย่างของสิ่งที่ฉันเห็น:

systemctl docker statusยืนยันว่าบริการใช้งานsince Thu 2016-10-13 18:56:28 UTCได้

อย่างไรก็ตามเมื่อฉันเรียกใช้สิ่งที่ชอบjournalctl -u docker.service --until "2016-10-13 22:00"- ผลลัพธ์เดียวที่ฉันได้รับคือ-- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --ฉันสามารถดูบันทึกในช่วงนั้นได้ตามที่คาดไว้

คำถามของฉันคือทำไมฉันไม่สามารถดูบันทึกเก่า ๆ ด้วย journalctl และฉันจะแก้ไขปัญหานี้ได้อย่างไรเพื่อดูบันทึกได้

คำตอบ:


15

อาจเป็นเพราะคุณพยายามตรวจสอบวารสารตั้งแต่การบู๊ตครั้งล่าสุดซึ่งน่าจะเป็นกรณีภายในอิมเมจนักเทียบท่า

บน Ubuntu 16.04 ที่จัดเก็บเจอร์นัลจะมีค่าเริ่มต้นเป็นหน่วยความจำภายใน คุณสามารถเปลี่ยนค่าเริ่มต้นที่จะเป็นแบบถาวรโดยการเปิด/etc/systemd/journald.confและเปลี่ยนStorage=สายจากไปauto persistentคุณอาจต้องเริ่มต้น journald ใหม่systemctl restart systemd-journaldหลังจากแก้ไขไฟล์ config

ฉันคิดว่าสมุดรายวันควรจะคงอยู่เป็นค่าเริ่มต้นดังนั้นฉันจึงเปิดข้อบกพร่องเกี่ยวกับเรื่องนั้น


ฉันเห็นด้วยกับคุณมันควรจะคงอยู่ตามค่าเริ่มต้น (และจะเปลี่ยนการตั้งค่านั้น) แต่ฉันมั่นใจว่าเครื่องนี้ไม่ได้ถูกรีบูทดังนั้นฉันจึงไม่มั่นใจ 100% ว่าจะแก้ไขปัญหาของฉันเพียงอย่างเดียว ยังดีใจที่คุณยื่นเรื่องนั้น
jdf

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

3

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

journald will use 10% of the disk or 4G, whichever is smaller.

journald will leave free 15% of the disk or 4G, whichever is larger.

สำหรับการดูบันทึกจากการบู๊ตครั้งล่าสุดสมมติว่าคุณมีStorage=persistentใน journald.conf เหมือนกับบันทึกคำตอบอื่น ๆ คุณสามารถใช้การ--boot=-1ตั้งค่าสถานะบนjournalctlคำสั่งเพื่อรับบันทึกจากการบู๊ตก่อนหน้า

ในกรณีของ OP ที่พวกเขาแน่ใจว่าโฮสต์ไม่ได้ถูกรีบูทการสูญเสียบันทึกนั้นเกิดจากการSystemMaxUseและ / หรือSystemKeepFreeค่าเริ่มต้น

หมายเหตุ: ฉันเป็น OP และคำถามนี้ยังมี upvotes ที่เล็ดลอดเข้ามาดังนั้นเนื่องจากฉันได้รับประสบการณ์มากขึ้นกับ journald (และ rtfm) ฉันโพสต์ที่นี่โดยหวังว่าจะช่วยผู้อื่น

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