บันทึก Systemd (`journalctl`) ใหญ่เกินไปและช้า


20

ของฉันjournalctlคือการรักษากว่า 300 MB journalctl --disk-usageของบันทึกเป็นเปิดเผยโดย ทุกอย่างดูเหมือนจะเป็นไปตามลำดับเมื่อฉันเรียกใช้journalctl --verify:

$ journalctl --disk-usage
Archived and active journals take up 328.0M on disk.

$ journalctl --verify
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system.journal    
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534.journal
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system@02f1aae76e32467390ab88ba03ae559e-0000000000000001-00056515dbdcd67e.journal
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-1000.journal 
PASS: /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534@9838f64d6ee047bebec9d30d329064d4-00000000000005bb-00056515dbfe8d9d.journal

ผมสังเกตเห็นว่าช้าระบบคือเมื่อฉันท่อจากgrepjournalctl

ฉันจะลดขนาดของสิ่งที่ฉันกำลังทำอยู่อย่างสมเหตุสมผลได้journalctlอย่างไร

รูปภาพ. GIF ดั้งเดิม

คำตอบ:


29

systemd มาพร้อมกับเครื่องดูดฝุ่นที่ดี

ในการ จำกัด ไฟล์บันทึกให้มีขนาดเฉพาะsystemdจะมีvacuumคุณสมบัติในการ "ดูดข้อมูล" ข้อมูลเก่าจากไฟล์บันทึก พารามิเตอร์ที่อนุญาตคือ:

 --vacuum-size=BYTES   Reduce disk usage below specified size
 --vacuum-files=INT    Leave only the specified number of journal files
 --vacuum-time=TIME    Remove journal files older than specified time

ตัวอย่างเช่นเพื่อลดปริมาณการใช้ 312 MB ลดลงเหลือ 200 MB (หรือน้อยกว่า) ใช้:

$ journalctl --vacuum-size=200M
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/system@00056515dbdd9a4e-a6fe2ec77e516045.journal~ (56.0M).
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-65534@00056515dbfe731d-b7bab56cb4efcbf6.journal~ (8.0M).
Deleted archived journal /var/log/journal/d7b25a27fe064cadb75a2f2f6ca7764e/user-1000@1bbb77599cf14c65a18af51646751696-000000000000064f-00056444d58433e1.journal (112.0M).
Vacuuming done, freed 176.0M of archived journals on disk.

บันทึกพื้นที่ดิสก์แล้ว

journalctlขนาดจะลดลงอย่างมีนัยสำคัญ:

$ journalctl --disk-usage
Archived and active journals take up 136.0M on disk.

ขนาดลดลงจาก 312 MB เป็น 136 MB ประหยัดได้มากกว่า 176 MB และ 64 MB มากกว่าที่คาดไว้ อาจเป็นความผิดปกติเพียงครั้งเดียวเนื่องจากไฟล์บันทึกขนาดใหญ่พิเศษ ฉันจะแก้ไขคำตอบนี้หลังจากผ่านไปหนึ่งเดือนหากมีข้อมูลใหม่เกิดขึ้น

บันทึกการบูตลดลง

จำนวนjournalctlบันทึกการบูตคือ 32 แต่ตอนนี้ลดลงเหลือ 26:

$ journalctl --list-boots
-26 0f230cc546fd4aec8f5233e0074ab3e1 Tue 2018-02-13 03:57:20 MST—Wed 2018-02-14 
-25 c0d2c0141dd840cbab75d3c2254f8781 Wed 2018-02-14 22:59:13 MST—Sat 2018-02-17 
-24 aafb2573a6374e019a7165cb8eee74a0 Sun 2018-02-18 06:02:03 MST—Mon 2018-02-19 
-23 8462f1969c6f4d61973e7e245014b846 Mon 2018-02-19 04:16:53 MST—Sat 2018-02-24 
-22 7f71ac2fb9714c49aa05989b741655f2 Sat 2018-02-24 04:24:36 MST—Sat 2018-02-24 
-21 b12a48c363474e5fb39311a166a98d54 Sat 2018-02-24 04:28:09 MST—Sun 2018-02-25 
-20 fbef1e659de64a0cbdcb9994f5a39457 Sun 2018-02-25 17:48:20 MST—Mon 2018-02-26 
-19 3d9b4c10f98d4ef7aab1cb2baa9b74e1 Mon 2018-02-26 08:37:01 MST—Mon 2018-02-26 
-18 4412b117dcc648aa9eceabcd0f205207 Mon 2018-02-26 08:38:00 MST—Mon 2018-02-26 
-17 f6794cbb7fb24213a6f2c3e368f666a1 Mon 2018-02-26 08:39:12 MST—Mon 2018-02-26 
-16 472f968506ed446ab12cf7abc65fa81a Mon 2018-02-26 08:49:37 MST—Mon 2018-02-26 
-15 d575c609d82e4ecd8dcebb70d40160d7 Mon 2018-02-26 17:07:36 MST—Mon 2018-02-26 
-14 878cfd9239a84dae80c62e7413c72951 Mon 2018-02-26 17:24:54 MST—Mon 2018-02-26 
-13 7f9913c7dbff46ab9bbd7c2cbefc4d7d Mon 2018-02-26 17:35:19 MST—Mon 2018-02-26 
-12 bf90829ef13a4e9fa1794bf0a88f4033 Mon 2018-02-26 17:45:12 MST—Wed 2018-02-28 
-11 fb879a836c7c459ab27f6332bee6013b Wed 2018-02-28 03:56:29 MST—Wed 2018-02-28 
-10 b0fec230765046f5bf3d654db1dc13ee Wed 2018-02-28 20:03:15 MST—Thu 2018-03-01 
 -9 72a2d6789eab4396be16348d9ead0408 Thu 2018-03-01 03:58:25 MST—Fri 2018-03-02 
 -8 8bccdc9b16124d26af05c34c8a30a0f5 Fri 2018-03-02 16:54:36 MST—Sat 2018-03-03 
 -7 40c2875db30349f5a9b1dfc849a47c05 Sat 2018-03-03 10:03:48 MST—Sat 2018-03-03 
 -6 781c79d2ec7946afba0fa2300e8ebe56 Sat 2018-03-03 10:04:34 MST—Sat 2018-03-03 
 -5 bb66dc875e414021940b7233072516d2 Sat 2018-03-03 17:43:08 MST—Tue 2018-03-06 
 -4 ba3bcfdc71584757b8bef9df16e7b0f6 Tue 2018-03-06 16:56:36 MST—Tue 2018-03-06 
 -3 60faa0fda99a4ef4b14b73c412d69e50 Tue 2018-03-06 17:00:47 MST—Tue 2018-03-06 
 -2 9b317bb8403344ca84dd2f288bc90410 Tue 2018-03-06 17:02:15 MST—Tue 2018-03-06 
 -1 dcb126be665a4531aae4312af7e51a34 Tue 2018-03-06 17:09:00 MST—Tue 2018-03-06 
  0 6a105af650d5442a9b03004165e58adf Tue 2018-03-06 17:42:45 MST—Wed 2018-03-07 

ปรับปรุงประสิทธิภาพ

เวลาในการตรวจสอบjournalctlความถูกต้องนั้นเร็วขึ้นอย่างเห็นได้ชัด:

journalctl ตรวจสอบ 2.png

เวลาลดลงจาก 10 วินาทีเป็น 4 วินาที

ให้เครดิตกับแหล่งที่มานี้


โซลูชั่นระยะยาว

ฉันได้สร้างcronงานเพื่อใช้เครื่องดูดฝุ่นเดือนละครั้ง

ตัวเลือกที่เป็นที่กล่าวถึงในความคิดเห็นก็คือการตั้งค่าในSystemMaxUse=50M /etc/systemd/journald.confจริง ๆ แล้วมีสี่ที่แตกต่างกันคุณสามารถตั้งค่าตัวเลือก:

/etc/systemd/journald.conf
/etc/systemd/journald.conf.d/*.conf
/run/systemd/journald.conf.d/*.conf
/usr/lib/systemd/journald.conf.d/*.conf

มีตัวเลือกมากมายที่คุณสามารถใช้สำหรับเป้าหมายที่คล้ายกัน:

SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=, SystemMaxFiles=, RuntimeMaxUse=, RuntimeKeepFree=, RuntimeMaxFileSize=, RuntimeMaxFiles=

5
นี่คือการแก้ไขชั่วคราวไม่ใช่วิธีการแก้ปัญหาอย่างถาวร คุณควรพูดถึง /etc/systemd/journald.confSystemMaxUse=50M
phiresky

@phiresky ขอบคุณที่ชี้นำสิ่งนี้ ฉันได้อัพเดตคำตอบแล้ว
WinEunuuchs2Unix

2

คุณสามารถสั่ง journalctl เพื่อแสดงปริมาณที่น้อยลง การทำเช่นนี้มีหลายวิธีเช่น:

  • -u [unit]หรือ--unit=[unit]: สิ่งนี้บอกให้ journalctl แสดงเฉพาะบันทึกจากหน่วย systemd ตัวอย่างเช่นคุณสามารถพิมพ์journalctl -u NetworkManager.serviceและคุณจะได้รับบันทึกจาก NetworkManager
  • -s [time]หรือ--since=[time]: นี้จะบอก journalctl ที่จะไม่สนใจรายการใด ๆ yyyy-mm-dd hh:mm:ssจากก่อนระยะเวลาหนึ่งตามที่ระบุไว้ หากคุณต้องการออกนอกเวลา journalctl จะใช้เวลา 00:00:00 นอกจากนี้หากคุณไม่ออกเดท journalctl จะใช้วันที่ปัจจุบัน journalctl -s 2012-10-30 18:17:16นี่คือตัวอย่างที่นำมาจากหน้าคน:
  • -U [time]หรือ--until=[time]: สิ่งนี้ค่อนข้างคล้ายกับข้างต้นยกเว้นจะละเว้นรายการจากหลังจากเวลาที่ระบุ อาร์กิวเมนต์และไวยากรณ์เหมือนกัน
  • -n [x]หรือ--lines [x]: จำกัด จำนวนบรรทัดเอาต์พุตโดยที่ "x" เป็นจำนวนเต็ม หากคุณพิมพ์journalctl -n 12เฉพาะไฟล์บันทึกล่าสุดสิบสองไฟล์เท่านั้นที่จะปรากฏขึ้น

คุณสามารถลดจำนวนข้อมูลที่เก็บไว้ได้ แต่ WinEunuuchs2Unix ได้ชี้ให้เห็นแล้วดังนั้นฉันจะไม่เสียเวลาในการทำซ้ำข้อมูลนั้น


ดูเหมือนว่าjournalctlมีตัวเลือกมากมายและบางคนควรเขียนzenityหรือyadส่วนหน้าด้วยเมนูแบบเลื่อนลง GUI และปุ่มตัวเลือก / กล่องกาเครื่องหมายเพื่อกรองด้วย ฉันเป็นคนล่อลวงตัวเอง +1 แม้ว่าคำตอบจะทำให้วิญญาณของคำถาม
หายไป
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.