Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การเรียนรู้บันทึก systemd:คำแนะนำฉบับสมบูรณ์เกี่ยวกับการใช้ Journalctl บน Linux

ความรู้เบื้องต้นเกี่ยวกับการบันทึก systemd Journal และ Journalctl

ข้อดีที่น่าสนใจที่สุดของ 09 คือผู้ที่เกี่ยวข้องกับการบันทึกกระบวนการและระบบ เมื่อใช้เครื่องมืออื่น บันทึกมักจะกระจายไปทั่วระบบ ได้รับการจัดการโดย daemons และกระบวนการที่แตกต่างกัน และอาจตีความได้ยากเมื่อขยายหลายแอปพลิเคชัน 12 พยายามแก้ไขปัญหาเหล่านี้โดยการจัดหาโซลูชันการจัดการแบบรวมศูนย์สำหรับการบันทึกกระบวนการเคอร์เนลและพื้นที่ผู้ใช้ทั้งหมด ระบบที่รวบรวมและจัดการบันทึกเหล่านี้เรียกว่า วารสาร .

สมุดรายวันถูกนำมาใช้กับ 22 daemon ซึ่งจัดการข้อความทั้งหมดที่สร้างโดยเคอร์เนล, initrd, บริการ ฯลฯ ในคู่มือนี้ เราจะพูดถึงวิธีใช้ 36 ยูทิลิตี้ซึ่งสามารถใช้เพื่อเข้าถึงและจัดการข้อมูลที่เก็บไว้ในวารสาร

ในบทความนี้ คุณจะได้เรียนรู้วิธีใช้ 40 เครื่องมือบรรทัดคำสั่งเพื่อเข้าถึงและกรองข้อมูลบันทึกจาก systemd เจอร์นัล เราจะกล่าวถึงวิธีการดูบันทึกจากการบูทหรือช่วงเวลาที่เฉพาะเจาะจง กรองตามหน่วยระบบ ผู้ใช้ หรือระดับความสำคัญ และบันทึกเอาต์พุตในรูปแบบ เช่น JSON สำหรับการผสานรวมกับเครื่องมืออื่นๆ นอกจากนี้คุณยังจะได้เรียนรู้วิธีตรวจสอบเหตุการณ์แบบเรียลไทม์ จัดการการใช้งานดิสก์ กำหนดค่าการบันทึกอย่างต่อเนื่อง และแก้ไขปัญหาทั่วไป เช่น บันทึกที่หายไปหรือข้อผิดพลาดในการอนุญาต ไม่ว่าคุณจะแก้ไขจุดบกพร่องบริการที่ล้มเหลวหรือตั้งค่าการรวบรวมบันทึกแบบรวมศูนย์ Journalctl มอบความยืดหยุ่นและความแม่นยำในการปรับปรุงขั้นตอนการทำงานของคุณ

ประเด็นสำคัญ

  • รหัส <55 Journal มีระบบบันทึกแบบรวมที่รวบรวมข้อความจากเคอร์เนล บริการ และแอปพลิเคชันผู้ใช้ไว้ในบันทึกแบบรวมศูนย์ที่จัดทำดัชนีไว้เพียงแห่งเดียว
  • 63 คำสั่งช่วยให้คุณสามารถกรองบันทึกตามเซสชันการบูต ช่วงเวลา หน่วยระบบ รหัสกระบวนการ รหัสผู้ใช้ รหัสกลุ่ม และอื่นๆ ทำให้ง่ายต่อการระบุเหตุการณ์ที่เกี่ยวข้อง
  • คุณสามารถดึงข้อมูลบันทึกจากกรอบเวลาที่ระบุได้โดยใช้ตัวเลือกเช่น 73 , 85 หรือนิพจน์สัมพัทธ์เช่น 98 หรือ 101 .
  • บันทึกสามารถแสดงในรูปแบบต่างๆ เช่น ข้อความธรรมดา, JSON และโหมดรายละเอียด ทำให้ง่ายต่อการรวมเข้ากับเครื่องมือภายนอกหรือแยกวิเคราะห์เพื่อการวิเคราะห์
  • การใช้ 115 คุณสามารถติดตามข้อความบันทึกได้ทันทีในขณะที่เขียน คล้ายกับ 123 ซึ่งมีประโยชน์สำหรับการตรวจสอบกิจกรรมของระบบหรือพฤติกรรมการบริการแบบเรียลไทม์
  • ตามค่าเริ่มต้น บันทึกอาจถูกจัดเก็บไว้ในหน่วยความจำและสูญหายเมื่อรีบูต คุณสามารถเปิดใช้งานการบันทึกแบบถาวรได้โดยการสร้าง 135 และกำหนดค่า 149 ตามนั้น
  • พื้นที่เก็บข้อมูลของเจอร์นัลสามารถจัดการได้ด้วยคำสั่งเช่น 158 , 164 และ 174 รวมถึงตัวเลือกการกำหนดค่าเพื่อควบคุมขนาดสูงสุดและการคงไว้
  • 180 ลดความยุ่งยากในการแก้ไขข้อบกพร่องของบริการด้วยการรวบรวมบันทึกระหว่างการบูทและยูนิตต่างๆ ทำให้ระบุความล้มเหลว ติดตามการเข้าถึง SSH และตรวจสอบปัญหาด้วยบริบทโดยละเอียดได้ง่ายขึ้น

systemd Journal ทำงานอย่างไร และเหตุใดจึงมีความสำคัญ

หนึ่งในแรงผลักดันเบื้องหลัง 194 Journal คือการรวมศูนย์การจัดการบันทึกไม่ว่าข้อความจะมาจากที่ใด เนื่องจากกระบวนการบูตและการจัดการบริการส่วนใหญ่ได้รับการจัดการโดย 205 กระบวนการ เป็นเรื่องสมเหตุสมผลที่จะกำหนดวิธีการรวบรวมและเข้าถึงบันทึกให้เป็นมาตรฐาน 217 daemon รวบรวมข้อมูลจากแหล่งที่มีอยู่ทั้งหมดและจัดเก็บไว้ในรูปแบบไบนารีเพื่อการจัดการที่ง่ายและไดนามิก

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

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

231 Journal สามารถใช้กับ 243 ที่มีอยู่ได้ การใช้งานหรือสามารถแทนที่ 253 ได้ ฟังก์ชั่นต่างๆ ขึ้นอยู่กับความต้องการของคุณ ในขณะที่ 263 Journal จะครอบคลุมความต้องการในการบันทึกของผู้ดูแลระบบส่วนใหญ่ นอกจากนี้ยังสามารถเสริมกลไกการบันทึกที่มีอยู่ได้อีกด้วย ตัวอย่างเช่น คุณอาจมี 273 แบบรวมศูนย์ เซิร์ฟเวอร์ที่คุณใช้ในการคอมไพล์ข้อมูลจากหลายเซิร์ฟเวอร์ แต่คุณอาจต้องการแทรกบันทึกจากบริการต่างๆ บนระบบเดียวด้วย 288 วารสาร คุณสามารถทำทั้งสองสิ่งนี้ได้โดยการรวมเทคโนโลยีเหล่านี้เข้าด้วยกัน

วิธีตั้งเวลาระบบที่ถูกต้องด้วย 299

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

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

ขั้นแรก ดูว่า 339 มีเขตเวลาใดบ้าง ตัวเลือก:

342

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

363

เพื่อให้แน่ใจว่าเครื่องของคุณใช้เวลาที่ถูกต้องในขณะนี้ ให้ใช้ 372 คำสั่งเพียงอย่างเดียวหรือด้วย 386 ตัวเลือก การแสดงผลจะเหมือนกัน:

399
 Local time: Fri 2021-07-09 14:44:30 EDT
 Universal time: Fri 2021-07-09 18:44:30 UTC
 RTC time: Fri 2021-07-09 18:44:31
 Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
 NTP service: active
 RTC in local TZ: no

บรรทัดแรกควรแสดงเวลาที่ถูกต้อง

วิธีดูบันทึกด้วย 408

หากต้องการดูบันทึกที่ 415 daemon ได้รวบรวมแล้ว ใช้ 421 คำสั่ง

เมื่อใช้เพียงอย่างเดียว ทุกรายการบันทึกประจำวันที่อยู่ในระบบจะถูกแสดงภายในเพจเจอร์ (ปกติคือ 432 ) เพื่อให้คุณเรียกดู รายการที่เก่าที่สุดจะอยู่ด้านบน:

446
-- Logs begin at Tue 2015-02-03 21:48:52 UTC, end at Tue 2015-02-03 22:29:38 UTC. --
Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 03 21:48:52 localhost.localdomain systemd-journald[139]: Received SIGTERM from PID 1 (systemd).
Feb 03 21:48:52 localhost.localdomain kernel: audit: type=1404 audit(1423000132.274:2): enforcing=1 old_en
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 03 21:48:52 localhost.localdomain kernel: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 8 users, 102 roles, 4976 types, 294 bools, 1 sens,
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 83 classes, 104131 rules
. . .

คุณน่าจะมีหน้าและหน้าข้อมูลให้เลื่อนดู ซึ่งอาจยาวได้หลายหมื่นหรือหลายแสนบรรทัดหาก 451 อยู่ในระบบของคุณมาระยะหนึ่งแล้ว สิ่งนี้แสดงให้เห็นว่ามีข้อมูลจำนวนเท่าใดในฐานข้อมูลวารสาร

รูปแบบจะคุ้นเคยกับผู้ที่คุ้นเคยกับมาตรฐาน 462 การบันทึก อย่างไรก็ตาม จริงๆ แล้ววิธีนี้รวบรวมข้อมูลจากแหล่งที่มามากกว่า 475 แบบเดิม การใช้งานมีความสามารถ ประกอบด้วยบันทึกจากกระบวนการบูตก่อนหน้า, เคอร์เนล, initrd และข้อผิดพลาดมาตรฐานของแอปพลิเคชันและออก ทั้งหมดนี้มีอยู่ในวารสาร

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

หากคุณต้องการแสดงการประทับเวลาใน UTC คุณสามารถใช้ 484 ธง:

491

วิธีกรองบันทึก systemd ตามเวลาด้วย 503

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

แสดงบันทึกจากเซสชันการบูตปัจจุบันด้วย 528

สิ่งพื้นฐานที่สุดที่คุณอาจใช้ทุกวันคือ 534 ธง นี่จะแสดงรายการบันทึกประจำวันทั้งหมดที่รวบรวมไว้ตั้งแต่การรีบูตครั้งล่าสุด

545

สิ่งนี้จะช่วยคุณระบุและจัดการข้อมูลที่เกี่ยวข้องกับสภาพแวดล้อมปัจจุบันของคุณ

ในกรณีที่คุณไม่ได้ใช้ฟีเจอร์นี้และแสดงบูทมากกว่าหนึ่งวัน คุณจะเห็น 558 ได้แทรกบรรทัดที่มีลักษณะเช่นนี้ทุกครั้งที่ระบบล่ม:

. . .
-- Reboot --
. . .

ซึ่งสามารถใช้เพื่อช่วยคุณแยกข้อมูลออกเป็นเซสชันการบูตได้อย่างมีเหตุผล

วิธีการเข้าถึงบันทึกจากบูทครั้งก่อนโดยใช้ 563

แม้ว่าโดยทั่วไปคุณจะต้องการแสดงข้อมูลจากการบู๊ตปัจจุบัน แต่ก็มีหลายครั้งที่การบู๊ตในอดีตจะมีประโยชน์เช่นกัน บันทึกประจำวันสามารถบันทึกข้อมูลจากรองเท้าบู๊ตรุ่นก่อนๆ ได้ ดังนั้น 577 สามารถทำให้แสดงข้อมูลได้ง่าย

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

583

หรือคุณสามารถแก้ไขไฟล์การกำหนดค่าเจอร์นัล:

597

ภายใต้ 601 ส่วน ให้ตั้งค่า 616 ตัวเลือก "ถาวร" เพื่อเปิดใช้งานการบันทึกถาวร:

/etc/systemd/journald.conf

. . .
[Journal]
Storage=persistent

เมื่อเปิดใช้งานการบันทึกการบู๊ตก่อนหน้าบนเซิร์ฟเวอร์ของคุณ 621 จัดเตรียมคำสั่งบางอย่างเพื่อช่วยคุณทำงานกับบูทเป็นหน่วยการแบ่ง หากต้องการดูรองเท้าบู๊ตนั้น 633 รู้แล้วใช้ 642 ตัวเลือกที่มี 655 :

662
-2 caf0524a1d394ce0bdbcff75b94444fe Tue 2015-02-03 21:48:52 UTC—Tue 2015-02-03 22:17:00 UTC
-1 13883d180dc0420db0abcb5fa26d6198 Tue 2015-02-03 22:17:03 UTC—Tue 2015-02-03 22:19:08 UTC
 0 bed718b17a73415fade0e4e7f4bea609 Tue 2015-02-03 22:19:12 UTC—Tue 2015-02-03 23:01:01 UTC

นี่จะแสดงบรรทัดสำหรับการบู๊ตแต่ละครั้ง คอลัมน์แรกคือออฟเซ็ตสำหรับการบู๊ตที่สามารถใช้เพื่ออ้างอิงการบู๊ตด้วย 677 ได้อย่างง่ายดาย . หากคุณต้องการการอ้างอิงแบบสัมบูรณ์ ID บูตจะอยู่ในคอลัมน์ที่สอง คุณสามารถบอกเวลาที่เซสชันการบูตอ้างถึงด้วยข้อกำหนดเฉพาะสองเวลาที่แสดงไว้ตอนท้าย

หากต้องการแสดงข้อมูลจากรองเท้าบู๊ตเหล่านี้ คุณสามารถใช้ข้อมูลจากคอลัมน์แรกหรือคอลัมน์ที่สองได้

ตัวอย่างเช่น หากต้องการดูเจอร์นัลจากการบูตครั้งก่อน ให้ใช้ 683 ตัวชี้สัมพันธ์กับ 695 ธง:

707

คุณยังสามารถใช้ ID บูตเพื่อเรียกกลับข้อมูลจากการบูตได้:

716

กรองบันทึก Journalctl ตามช่วงวันที่และเวลาที่กำหนดเอง

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

คุณสามารถกรองตามการจำกัดเวลาที่ต้องการได้โดยใช้ 728 และ 731 ตัวเลือก ซึ่งจำกัดรายการที่แสดงหลังหรือก่อนเวลาที่กำหนดตามลำดับ

ค่าเวลาสามารถมีได้หลายรูปแบบ สำหรับค่าเวลาสัมบูรณ์ คุณควรใช้รูปแบบต่อไปนี้:

744

เช่น เราสามารถดูรายการทั้งหมดได้ตั้งแต่วันที่ 10 มกราคม 2015 เวลา 17:15 น. โดยพิมพ์:

756

หากปล่อยส่วนประกอบของรูปแบบข้างต้นไว้ ระบบจะใช้ค่าเริ่มต้นบางส่วน ตัวอย่างเช่น หากละเว้นวันที่ ระบบจะถือว่าวันที่ปัจจุบัน หากไม่มีองค์ประกอบเวลา "00:00:00" (เที่ยงคืน) จะถูกแทนที่ด้วย คุณสามารถปิดฟิลด์วินาทีได้เช่นเดียวกับค่าเริ่มต้นที่ "00":

766

เจอร์นัลยังเข้าใจค่าสัมพัทธ์และทางลัดที่มีชื่ออีกด้วย ตัวอย่างเช่น คุณสามารถใช้คำว่า "เมื่อวาน" "วันนี้" "พรุ่งนี้" หรือ "ตอนนี้" คุณสามารถกำหนดเวลาสัมพัทธ์ได้โดยเติม "-" หรือ "+" ไว้หน้าค่าตัวเลข หรือใช้คำเช่น "ago" ในการสร้างประโยค

หากต้องการรับข้อมูลจากเมื่อวาน คุณสามารถพิมพ์:

778

หากคุณได้รับรายงานการหยุดชะงักของบริการเริ่มเวลา 9.00 น. และต่อเนื่องไปจนถึงหนึ่งชั่วโมงที่แล้ว คุณสามารถพิมพ์:

782

อย่างที่คุณเห็น การกำหนดกรอบเวลาที่ยืดหยุ่นเพื่อกรองรายการที่คุณต้องการดูนั้นค่อนข้างตรงไปตรงมา

วิธีกรองบันทึกบันทึกประจำวันของระบบตามบริการ, PID หรือผู้ใช้

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

ดูบันทึกตามหน่วยบริการ Systemd

บางทีวิธีการกรองที่มีประโยชน์ที่สุดอาจเป็นตามหน่วยที่คุณสนใจ เราสามารถใช้ 807 ตัวเลือกในการกรองด้วยวิธีนี้

ตัวอย่างเช่น หากต้องการดูบันทึกทั้งหมดจากหน่วย Nginx บนระบบของเรา เราสามารถพิมพ์:

817

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

824

การมุ่งเน้นประเภทนี้จะมีประโยชน์อย่างมากเมื่อคุณใช้ประโยชน์จากความสามารถของวารสารในการแทรกบันทึกจากหน่วยต่างๆ ตัวอย่างเช่น หากกระบวนการ Nginx ของคุณเชื่อมต่อกับหน่วย PHP-FPM เพื่อประมวลผลเนื้อหาแบบไดนามิก คุณสามารถรวมรายการจากทั้งสองรายการตามลำดับเวลาโดยระบุทั้งสองหน่วย:

835

ซึ่งจะทำให้มองเห็นการโต้ตอบระหว่างโปรแกรมต่างๆ และระบบแก้ไขจุดบกพร่องได้ง่ายขึ้นมาก แทนที่จะเป็นแต่ละกระบวนการ

กรองบันทึก systemd ตาม PID, UID หรือ GID

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

ในการดำเนินการนี้ เราสามารถกรองได้โดยระบุ 849 สนาม ตัวอย่างเช่น หาก PID ที่เราสนใจคือ 8088 เราก็สามารถพิมพ์:

850

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

893
33

หลังจากนั้น คุณสามารถใช้ ID ที่ส่งคืนมาเพื่อกรองผลลัพธ์สมุดรายวัน:

903

914 วารสารมีหลายช่องที่สามารถใช้ในการกรองได้ บางส่วนถูกส่งผ่านจากกระบวนการที่กำลังบันทึก และบางส่วนใช้โดย 921 โดยใช้ข้อมูลที่รวบรวมจากระบบ ณ เวลาที่บันทึก

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

944

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

ตัวอย่างเช่น หากต้องการดูว่ารหัสกลุ่มใดคือ 962 วารสารมีรายการสำหรับ คุณสามารถพิมพ์:

972
32
99
102
133
81
84
100
0
124
87

นี่จะแสดงค่าทั้งหมดที่สมุดรายวันเก็บไว้สำหรับฟิลด์รหัสกลุ่ม วิธีนี้สามารถช่วยคุณสร้างตัวกรองของคุณได้

ดูบันทึกตามเส้นทางปฏิบัติการ

นอกจากนี้เรายังสามารถกรองโดยระบุตำแหน่งเส้นทาง

หากเส้นทางนำไปสู่ปฏิบัติการ 985 จะแสดงรายการทั้งหมดที่เกี่ยวข้องกับปฏิบัติการที่เป็นปัญหา ตัวอย่างเช่น เมื่อต้องการค้นหารายการที่เกี่ยวข้องกับ 993 ปฏิบัติการได้ คุณสามารถพิมพ์:

1004

โดยปกติแล้ว หากมีหน่วยสำหรับปฏิบัติการได้ วิธีการนั้นจะสะอาดกว่าและให้ข้อมูลที่ดีกว่า (รายการจากกระบวนการย่อยที่เกี่ยวข้อง ฯลฯ) อย่างไรก็ตาม บางครั้งมันก็เป็นไปไม่ได้

วิธีดูบันทึกเคอร์เนลโดยใช้ 1012

ข้อความเคอร์เนล ซึ่งมักพบใน 1027 เอาต์พุตสามารถดึงข้อมูลจากเจอร์นัลได้เช่นกัน

หากต้องการแสดงเฉพาะข้อความเหล่านี้ เราสามารถเพิ่ม 1032 หรือ 1048 ตั้งค่าสถานะตามคำสั่งของเรา:

1058

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

1064

กรองบันทึกตามระดับความรุนแรงด้วย 1072

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

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

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

1103

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

  • 0 :โผล่ออกมา
  • 1 :แจ้งเตือน
  • 2 :คริติคอล
  • 3 :ผิดพลาด
  • 4 :คำเตือน
  • 5 :ประกาศ
  • 6 :ข้อมูล
  • 7 :แก้ปัญหา

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

ปรับแต่ง 1134 บันทึกการแสดงผลเอาต์พุต

ข้างต้น เราได้สาธิตการเลือกรายการผ่านการกรอง มีวิธีอื่นที่เราสามารถแก้ไขเอาต์พุตได้ เราสามารถปรับ 1144 ได้ แสดงผลให้ตรงกับความต้องการที่หลากหลาย

วิธีควบคุมความยาวเอาต์พุตและการจัดรูปแบบใน 1151

เราสามารถปรับวิธี 1161 ได้ แสดงข้อมูลโดยบอกให้ย่อหรือขยายเอาต์พุต

โดยค่าเริ่มต้น 1177 จะแสดงรายการทั้งหมดในเพจเจอร์ โดยปล่อยให้รายการลากออกไปทางด้านขวาของหน้าจอ สามารถเข้าถึงข้อมูลนี้ได้โดยกดปุ่มลูกศรขวา

หากคุณต้องการให้เอาต์พุตถูกตัดทอน โดยใส่จุดไข่ปลาตรงที่ข้อมูลถูกลบออก คุณสามารถใช้ 1188 ตัวเลือก:

1191
. . .
Feb 04 20:54:13 journalme sshd[937]: Failed password for root from 83.234.207.60...h2
Feb 04 20:54:13 journalme sshd[937]: Connection closed by 83.234.207.60 [preauth]
Feb 04 20:54:13 journalme sshd[937]: PAM 2 more authentication failures; logname...ot

คุณสามารถไปในทิศทางตรงกันข้ามกับสิ่งนี้และบอก 1206 เพื่อแสดงข้อมูลทั้งหมด ไม่ว่าจะมีอักขระที่ไม่สามารถพิมพ์ได้หรือไม่ เราสามารถทำได้ด้วย 1210 ธง:

1226

วิธีปิดการใช้งานเพจเจอร์ใน 1231 เอาท์พุต

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

คุณสามารถทำได้โดยใช้ 1256 ตัวเลือก:

1264

สามารถส่งไปยังยูทิลิตี้การประมวลผลได้ทันทีหรือเปลี่ยนเส้นทางไปยังไฟล์บนดิสก์ ขึ้นอยู่กับความต้องการของคุณ

รูปแบบเอาต์พุตที่แตกต่างกันใน 1274

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

ตัวอย่างเช่น คุณสามารถส่งออกรายการบันทึกประจำวันใน JSON ได้โดยพิมพ์:

1296
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" }
. . .

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

1310
{
 "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635",
 "__REALTIME_TIMESTAMP" : "1422990364739502",
 "__MONOTONIC_TIMESTAMP" : "27200938",
 "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d",
 "PRIORITY" : "6",
 "_UID" : "0",
 "_GID" : "0",
 "_CAP_EFFECTIVE" : "3fffffffff",
 "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee",
 "_HOSTNAME" : "desktop",
 "SYSLOG_FACILITY" : "3",
 "CODE_FILE" : "src/core/unit.c",
 "CODE_LINE" : "1402",
 "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading",
 "SYSLOG_IDENTIFIER" : "systemd",
 "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5",
 "_TRANSPORT" : "journal",
 "_PID" : "1",
 "_COMM" : "systemd",
 "_EXE" : "/usr/lib/systemd/systemd",
 "_CMDLINE" : "/usr/lib/systemd/systemd",
 "_SYSTEMD_CGROUP" : "/",
 "UNIT" : "nginx.service",
 "MESSAGE" : "Starting A high performance web server and a reverse proxy server...",
 "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973"
}
. . .

สามารถใช้รูปแบบต่อไปนี้สำหรับการแสดงผล:

  • แมว :แสดงเฉพาะช่องข้อความเท่านั้น
  • ส่งออก :รูปแบบไบนารี่ที่เหมาะสำหรับการถ่ายโอนหรือสำรองข้อมูล
  • เจสัน :JSON มาตรฐานที่มีหนึ่งรายการต่อบรรทัด
  • json-สวย :จัดรูปแบบ JSON เพื่อให้มนุษย์อ่านง่ายขึ้น
  • json-sse :เอาต์พุตที่จัดรูปแบบ JSON ถูกห่อเพื่อให้เพิ่มเหตุการณ์ที่เซิร์ฟเวอร์ส่งเข้ากันได้
  • สั้น :ค่าเริ่มต้น 1327 เอาต์พุตสไตล์
  • ไอโซสั้น :รูปแบบเริ่มต้นที่เพิ่มเพื่อแสดงการประทับเวลานาฬิกาแขวน ISO 8601
  • สั้นโมโนโทนิก :รูปแบบเริ่มต้นที่มีการประทับเวลาแบบโมโนโทนิก
  • แบบสั้นแม่นยำ :รูปแบบเริ่มต้นที่มีความแม่นยำในระดับไมโครวินาที
  • คำกริยา :แสดงทุกฟิลด์วารสารที่มีอยู่สำหรับรายการ รวมถึงฟิลด์ที่มักจะซ่อนอยู่ภายในด้วย

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

ตรวจสอบบันทึก systemd แบบสดด้วย 1339

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

แสดงรายการบันทึกล่าสุดด้วย 1375

หากต้องการแสดงจำนวนบันทึกที่กำหนด คุณสามารถใช้ 1385 ตัวเลือกซึ่งทำงานเหมือนกับ 1399 ทุกประการ .

โดยค่าเริ่มต้น จะแสดง 10 รายการล่าสุด:

1409

คุณสามารถระบุจำนวนรายการที่คุณต้องการดูด้วยตัวเลขหลัง 1411 :

1426

ติดตามบันทึกเรียลไทม์ด้วย 1432

หากต้องการติดตามบันทึกในขณะที่เขียน คุณสามารถใช้ 1448 ธง ขอย้ำอีกครั้งว่าวิธีนี้ได้ผลตามที่คุณคาดหวังหากคุณมีประสบการณ์ในการใช้ 1451 :

1467

หากต้องการออกจากคำสั่งนี้ ให้พิมพ์ 1478 .

วิธีจัดการและล้างบันทึก systemd Journal

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

ตรวจสอบการใช้งานดิสก์ของบันทึก systemd ด้วย 1482

คุณสามารถค้นหาจำนวนเนื้อที่ที่เจอร์นัลครอบครองบนดิสก์ได้โดยใช้ 1493 ธง:

1501
Archived and active journals take up 8.0M in the file system.

ลบบันทึกเก่าด้วย 1517 และ 1526

หากคุณต้องการย่อบันทึกประจำวันของคุณ คุณสามารถทำได้สองวิธีที่แตกต่างกัน (ใช้ได้กับ 1537 เวอร์ชัน 218 และใหม่กว่า)

หากคุณใช้ 1546 ตัวเลือก คุณสามารถย่อขนาดวารสารของคุณโดยการระบุขนาด การดำเนินการนี้จะลบรายการเก่าจนกว่าพื้นที่เจอร์นัลทั้งหมดที่ใช้บนดิสก์จะมีขนาดตามขนาดที่ร้องขอ:

1557

อีกวิธีหนึ่งที่คุณสามารถย่อเจอร์นัลได้คือการระบุเวลาตัดทอนด้วย 1564 ตัวเลือก รายการใด ๆ ที่เกินเวลานั้นจะถูกลบออก ซึ่งจะทำให้คุณสามารถเก็บรายการที่สร้างขึ้นหลังจากเวลาที่กำหนดได้

ตัวอย่างเช่น หากต้องการเก็บรายการจากปีที่แล้ว คุณสามารถพิมพ์:

1573

กำหนดค่าขีดจำกัดพื้นที่ดิสก์สำหรับบันทึกที่บันทึก

คุณสามารถกำหนดค่าเซิร์ฟเวอร์ของคุณเพื่อจำกัดพื้นที่ที่เจอร์นัลสามารถใช้ได้ ซึ่งสามารถทำได้โดยการแก้ไข 1584 ไฟล์.

รายการต่อไปนี้สามารถใช้เพื่อจำกัดการเติบโตของเจอร์นัล:

  • 1590 :ระบุพื้นที่ดิสก์สูงสุดที่เจอร์นัลสามารถใช้ได้ในที่เก็บข้อมูลถาวร
  • 1605 :ระบุจำนวนพื้นที่ที่เจอร์นัลควรปล่อยให้ว่างเมื่อเพิ่มรายการบันทึกประจำวันไปยังที่เก็บข้อมูลถาวร
  • 1613 :ควบคุมขนาดไฟล์เจอร์นัลแต่ละไฟล์ที่จะขยายได้ในพื้นที่จัดเก็บข้อมูลถาวรก่อนที่จะหมุนเวียน
  • 1626 :ระบุพื้นที่ดิสก์สูงสุดที่สามารถใช้ได้ในที่จัดเก็บข้อมูลชั่วคราว (ภายใน 1636 ระบบไฟล์).
  • 1647 :ระบุจำนวนพื้นที่ที่จะตั้งไว้สำหรับการใช้งานอื่นเมื่อเขียนข้อมูลลงที่เก็บข้อมูลชั่วคราว (ภายใน 1655 ระบบไฟล์).
  • 1660 :ระบุจำนวนพื้นที่ที่ไฟล์เจอร์นัลแต่ละไฟล์สามารถใช้ได้ในที่จัดเก็บข้อมูลชั่วคราว (ภายใน 1676 ระบบไฟล์) ก่อนที่จะถูกหมุน

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

การแก้ไขปัญหาทั่วไป 1715 และปัญหาวารสาร systemd

1. ทำไมถึงเป็น 1729 ไม่แสดงบันทึกใช่หรือไม่

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

ฐานข้อมูลวารสารว่างเปล่าหรือสูญหาย

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

ls /var/log/journal

หากไม่มีไดเร็กทอรีนี้หรือว่างเปล่า แสดงว่าบันทึกของคุณไม่ได้รับการบันทึกระหว่างการบู๊ต คุณสามารถแก้ไขได้โดยการสร้างไดเร็กทอรีและรีสตาร์ท 1760 บริการ:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

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

บริการบันทึกอาจไม่ทำงาน

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

systemctl status systemd-journald

หากบริการไม่ทำงานหรือล้มเหลว การรีสตาร์ทควรคืนค่าฟังก์ชันการรวบรวมบันทึก

ตัวกรองอาจแคบเกินไป

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

บันทึกอาจถูกหมุนเวียนหรือถูกลบ

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

journalctl --disk-usage

หากคุณได้กำหนดค่าระบบของคุณให้จำกัดขนาดเจอร์นัลอย่างมาก หรือหากคุณเพิ่งรันคำสั่งสูญญากาศด้วยตนเอง บันทึกอาจถูกลบออกจากฐานข้อมูล

2. การอนุญาตถูกปฏิเสธเมื่อใช้ 1802

หากคุณพยายามเรียกใช้ 1817 ในฐานะผู้ใช้ทั่วไปและได้รับข้อความ “การอนุญาตถูกปฏิเสธ” คุณไม่ได้อยู่คนเดียว ตามค่าเริ่มต้น การเข้าถึงบันทึกของระบบจะถูกจำกัดไว้ที่ 1822 ผู้ใช้และสมาชิกของ 1834 กลุ่ม ข้อจำกัดนี้ได้รับการออกแบบมาเพื่อปกป้องข้อมูลบันทึกที่อาจมีความละเอียดอ่อน ซึ่งอาจประกอบด้วยข้อมูลเกี่ยวกับกิจกรรมของผู้ใช้ กระบวนการของระบบ และความล้มเหลวของบริการ

กำลังทำงาน 1847 ด้วยสิทธิพิเศษระดับสูง

วิธีแก้ปัญหาที่ง่ายและธรรมดาที่สุดคือการรันคำสั่งด้วย 1853 . สิ่งนี้จะยกระดับสิทธิ์ของคุณในช่วงระยะเวลาของคำสั่งและช่วยให้คุณดูบันทึกของระบบทั้งหมด:

sudo journalctl

หากคุณกำลังเขียนสคริปต์หรือตรวจสอบบันทึกบ่อยครั้ง ให้พิมพ์ 1866 ทุกครั้งอาจกลายเป็นเรื่องน่าเบื่อ ในกรณีเช่นนี้ การให้สิทธิ์ผู้ใช้ของคุณเข้าถึงวารสารอย่างถาวรอาจเป็นประโยชน์มากกว่า

ให้สิทธิ์การเข้าถึงแก่ผู้ใช้ของคุณผ่านการเป็นสมาชิกกลุ่ม

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

sudo usermod -aG systemd-journal yourusername

อย่าลืมแทนที่ 1890 ด้วยชื่อล็อกอินจริงของคุณ หลังจากเพิ่มผู้ใช้ในกลุ่มแล้ว คุณต้อง ออกจากระบบและกลับเข้าสู่ระบบใหม่ เพื่อให้การเปลี่ยนแปลงมีผล เมื่อเสร็จแล้ว คุณควรจะสามารถเรียกใช้ 1907 ได้ โดยไม่ต้องใช้สิทธิ์ระดับสูง

การตรวจสอบสิทธิ์การอนุญาตวารสาร

หากการเป็นสมาชิกกลุ่มไม่สามารถแก้ไขปัญหาได้ อาจมีปัญหากับสิทธิ์ของไฟล์หรือไดเรกทอรี 1917 ไดเร็กทอรีควรเป็นของ 1926 และจัดกลุ่มภายใต้ 1939 . ต้องตั้งค่าสิทธิ์การอ่านกลุ่มอย่างถูกต้อง ไม่เช่นนั้นการเข้าถึงจะยังคงถูกปฏิเสธแม้ว่าคุณจะอยู่ในกลุ่มที่ถูกต้องก็ตาม คุณสามารถแก้ไขได้ด้วย:

sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal

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

3. บันทึกไม่คงอยู่หลังจากรีบูต

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

การเปิดใช้งานการบันทึกแบบถาวร

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

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

หลังจากเสร็จสิ้น บันทึกในอนาคตทั้งหมดจะถูกเขียนลงดิสก์และรอดจากการรีบูตระบบ

การตรวจสอบการกำหนดค่าเจอร์นัล

หากมีไดเร็กทอรีอยู่แต่บันทึกยังคงไม่คงอยู่ ก็ควรตรวจสอบ 1953 ไฟล์การกำหนดค่า:

sudo nano /etc/systemd/journald.conf

ในไฟล์นี้ ให้มองหา 1967 คำสั่งภายใต้ 1972 ส่วน หากตั้งค่าเป็น 1983 ให้เปลี่ยนเป็น 1992 :

[Journal]
Storage=persistent

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

4. การดีบักบริการ systemd ที่ล้มเหลว

When a systemd-managed service fails to start or crashes unexpectedly, 2004 becomes an essential tool for identifying the root cause. Instead of searching through multiple log files, the journal collects all messages related to a service in one place, complete with metadata, timestamps, and priority levels.

Reviewing the Service Status

The first step when troubleshooting is to examine the service status. The 2015 command provides a snapshot of the service’s current state, including the most recent log entries. For example:

systemctl status nginx.service

This output often reveals immediate issues such as misconfigured paths, permission problems, or exit codes. The exit code and signal information, if present, can be especially helpful for determining whether the service failed on its own or was killed by the system.

Viewing the Full Log History

To see all logs related to the failed service, use 2028 with the 2032 flag:

journalctl -u nginx.service

This provides a chronological view of messages generated by the service. If you’re trying to diagnose a failure that happened during the last system boot, it’s helpful to limit the output to just that session:

journalctl -u nginx.service -b

Investigating Failure Context

You can often get to the heart of the issue by reading the log entries from a few minutes before and after the failure. Use time-based filters to narrow your focus:

journalctl -u nginx.service --since "10 minutes ago"

This can help identify whether the problem was isolated or part of a larger system issue.

For deeper analysis, you can enable verbose output or view extended error messages using:

journalctl -xe

This command highlights priority messages and recent failures, which can be useful when a service doesn’t leave obvious clues in the standard output.

5. Monitoring SSH Login Attempts

SSH is a primary access method for most Linux servers, which also makes it a common vector for brute-force attacks, unauthorized access attempts, or general auditing. Fortunately, 2042 allows you to monitor all SSH-related activity with ease.

Viewing SSH Logs

Systemd tracks SSH activity under the 2054 or 2066 unit, depending on your distribution. To see all entries related to SSH:

journalctl -u ssh.service

or, on some systems:

journalctl -u sshd.service

These logs include login attempts, authentication failures, session closures, and key negotiation messages. It’s an excellent first step when verifying who accessed the server and when.

Following SSH Activity in Real Time

For real-time monitoring, you can use 2075 in follow mode. This is especially useful if you suspect an intrusion or want to keep an eye on active login attempts:

journalctl -f -u ssh.service

Each new login event will be printed live as it happens, making it easier to spot failed logins or rapid connection attempts that may indicate malicious behavior.

Filtering by Login Events

If you’re looking for specific login messages, such as failed passwords or accepted connections, you can filter the journal output using keyword matches:

journalctl -u ssh.service | grep "Failed password"
journalctl -u ssh.service | grep "Accepted password"

These messages indicate whether a login was successful and which user attempted it. You can combine these with time filters to narrow the search to a specific window:

journalctl -u ssh.service --since "1 hour ago"

This can be extremely helpful during security audits or forensic investigations.

Frequently Asked Questions (FAQs)

1. Why does 2081 require root access?

By default, 2094 requires root access because it can expose sensitive information collected from system services, kernel messages, user sessions, and background daemons. These logs may include usernames, environment variables, error traces, authentication attempts, and other details that could pose a security risk if accessed by unauthorized users.

To safeguard this data, systemd restricts access to the system journal. However, you don’t always need to use 2107 . Non-root users can read logs if they are part of the 2111 กลุ่ม You can add your user to this group with:

sudo usermod -aG systemd-journal yourusername

After logging out and back in, you should be able to access logs without elevated privileges, as long as file permissions on the journal directories are properly configured.

2. How do I make logs persistent across reboots?

To preserve logs after a reboot, you need to configure 2125 to use persistent storage rather than volatile memory. By default, some distributions store logs in 2134 , a temporary directory cleared at shutdown. To enable persistent logging:

  1. Create the persistent journal directory:

    sudo mkdir -p /var/log/journal
    
  2. Set permissions if needed:

    sudo systemd-tmpfiles --create --prefix /var/log/journal
    
  3. Restart the journal daemon:

    sudo systemctl restart systemd-journald
    
  4. Optional:Verify or edit configuration:

    Open 2142 and ensure the following line is set:

    Storage=persistent
    

This configuration ensures your system retains log data across reboots, making it easier to audit and debug historical issues.

3. Can I clear 2158 logs?

Yes, 2160 allows you to clear logs using the 2170 options provided by 2189 . These commands help reduce disk usage by deleting old or excess log data.

Here are common methods to clear or shrink journal logs:

  • Remove logs older than a specific time:

    sudo journalctl --vacuum-time=2weeks
    
  • Limit total disk usage for all logs:

    sudo journalctl --vacuum-size=500M
    
  • Restrict the number of journal files kept:

    sudo journalctl --vacuum-files=10
    

These commands do not erase current or recent logs unless they exceed the defined threshold. To fully remove all logs, you can manually delete the journal files from 2190 , but this is rarely necessary and not generally recommended for production systems.

4. How do I access systemd logs?

You can access systemd logs using the 2207 command, which interfaces directly with the systemd journal. All logs related to services managed by systemd, such as boot messages, unit failures, and runtime errors, are stored in the journal.

For general access:

journalctl

To see logs for a specific systemd service, such as 2216 , use:

journalctl -u nginx.service

You can also filter by boot session, priority level, time range, or combine multiple services to gain deeper insight. Unlike traditional log files, 2227 provides a unified, indexed view of log messages from multiple sources.

5. Which command is used to view systemd logs?

The primary command used to view systemd logs is:

journalctl

This tool is included with 2233 and provides access to all logs collected by the 2246 service, including kernel messages, early boot logs, system services, and user sessions.

You can tailor the command with various options:

  • View logs for a specific service:

    journalctl -u ssh.service
    
  • Filter logs by priority:

    journalctl -p err
    
  • Display logs in real time:

    journalctl -f
    

This makes 2256 the most versatile and comprehensive utility for viewing systemd-related logs.

6. How to see kernel logs through 2269 ?

Kernel messages, such as those traditionally viewed using 2279 , are also available through the systemd journal. To display only kernel messages using 2280 , use the 2298 flag:

journalctl -k

This command filters the output to include only messages originating from the kernel. It is especially useful for diagnosing hardware issues, kernel module problems, or boot-time errors. You can also use the 2303 option to show messages from the current or previous boot:

journalctl -k -b -1

This gives you consistent access to kernel logs, integrated with logs from other services for better contextual understanding.

7. What is the difference between 2316 and 2325 ?

While both 2332 and 2348 can show kernel logs, they serve different purposes and operate under different mechanisms.

Feature 2359 2363 ScopeKernel ring buffer onlyKernel + system + userland logsPersistenceCleared on reboot or buffer fullPersistent (if enabled)MetadataNo structured metadataRich metadata (unit, PID, UID, etc.)FilteringLimitedExtensive filtering capabilitiesOutput formatsRaw, simpleJSON, export, short, verbose, etc.PermissionsRequires 2378 for full outputRequires root or group membership

In short, 2389 is limited to low-level kernel logs in real time, while 2392 offers a more complete, structured, and persistent logging interface that encompasses the entire system.

บทสรุป

As you can see, the 2404 journal is incredibly useful for collecting and managing your system and application data. Most of the flexibility comes from the extensive metadata automatically recorded and the centralized nature of the log.

In this guide, we covered basic log viewing, time-based and field-based filtering, monitoring kernel and service logs, output formatting, and real-time log tracking. We also discussed journal maintenance, storage limits, and troubleshooting common issues like missing logs or permission errors.

The 2418 command makes it easy to take advantage of the advanced features of the journal and to do extensive analysis and relational debugging of different application components. By mastering journalctl, you gain a versatile, unified logging interface for debugging, monitoring, and auditing across your entire system.

For more detailed insight into logging and troubleshooting on Linux systems, explore the following related tutorials:

  • How To Troubleshoot Common Apache Errors
  • How To Centralize Logs With Journald on Debian 10
  • How To Centralize Logs With Journald on Ubuntu 20.04

การเรียนรู้บันทึก systemd:คำแนะนำฉบับสมบูรณ์เกี่ยวกับการใช้ Journalctl บน Linux This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 4.0 International License.