ผู้ดูแลระบบ Linux - การจัดการบันทึก
systemd ได้เปลี่ยนวิธีจัดการบันทึกระบบสำหรับ CentOS Linux แทนที่จะใช้ daemon ทุกตัวบนระบบที่วางบันทึกในแต่ละตำแหน่งแทนที่จะใช้เครื่องมือเช่นtailหรือgrepเป็นวิธีหลักในการเรียงลำดับและกรองรายการบันทึกjournald ได้นำจุดเดียวของการดูแลระบบมาวิเคราะห์บันทึกระบบ
ส่วนประกอบหลักที่อยู่เบื้องหลังการบันทึกsystemdได้แก่ journal, jounralctl และ journald.conf
journaldเป็นภูตเข้าสู่ระบบหลักและมีการกำหนดค่าโดยการแก้ไขjournald.confขณะjournalctlถูกนำมาใช้ในการวิเคราะห์เหตุการณ์ที่บันทึกไว้โดยjournald
เหตุการณ์ที่บันทึกโดยjournaldรวมถึงเหตุการณ์เคอร์เนลกระบวนการผู้ใช้และเซอร์วิส daemon
ตั้งค่าโซนเวลาของระบบที่ถูกต้อง
ก่อนที่จะใช้journalctlเราต้องตรวจสอบให้แน่ใจว่าเวลาระบบของเราถูกตั้งค่าเป็นเวลาที่ถูกต้อง การทำเช่นนี้เราต้องการที่จะใช้timedatectl
มาตรวจสอบเวลาของระบบปัจจุบันกัน
[root@centos rdc]# timedatectl status
Local time: Mon 2017-03-20 00:14:49 MDT
Universal time: Mon 2017-03-20 06:14:49 UTC
RTC time: Mon 2017-03-20 06:14:49
Time zone: America/Denver (MDT, -0600)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2017-03-12 01:59:59 MST
Sun 2017-03-12 03:00:00 MDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2017-11-05 01:59:59 MDT
Sun 2017-11-05 01:00:00 MST
[root@centos rdc]#
ขณะนี้ระบบถูกต้องตามเขตเวลาท้องถิ่น หากระบบของคุณไม่ใช่ให้ตั้งค่าเขตเวลาที่ถูกต้อง หลังจากเปลี่ยนการตั้งค่าแล้ว CentOS จะคำนวณเขตเวลาออฟเซ็ตจากเขตเวลาปัจจุบันโดยอัตโนมัติปรับนาฬิการะบบทันที
มาแสดงรายการโซนเวลาทั้งหมดด้วยtimedatectl -
[root@centos rdc]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
นั่นคือการส่งออกเกี่ยงจากtimedatectl รายการเขตเวลา หากต้องการค้นหาโซนเวลาเฉพาะที่คุณสามารถใช้คำสั่ง grep -
[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York"
America/New_York
[root@centos rdc]#
ป้ายกำกับที่ CentOS ใช้มักเป็น Country / Region โดยมีขีดล่างแทนการเว้นวรรค (New_York เทียบกับ "New York")
ตอนนี้มากำหนดเขตเวลาของเรา -
[root@centos rdc]# timedatectl set-timezone "America/New_York"
[root@centos rdc]# date
Mon Mar 20 02:28:44 EDT 2017
[root@centos rdc]#
นาฬิการะบบของคุณควรปรับเวลาโดยอัตโนมัติ
ใช้ journalctl เพื่อวิเคราะห์บันทึก
บรรทัดคำสั่งทั่วไปจะสลับเมื่อใช้journalctl -
สวิตซ์ | หนังบู๊ |
---|---|
-k | แสดงเฉพาะข้อความเคอร์เนล |
-ยู | แสดงรายการตามหน่วยเฉพาะ (httpd, sshd, ฯลฯ ... ) |
- ข | เริ่มต้นการชดเชยฉลาก |
-o | บันทึกรูปแบบผลลัพธ์ |
-p | กรองตามประเภทบันทึก (ชื่อหรือหมายเลข) |
-F | ชื่อฟิลด์หรือค่าฟิลด์ |
--utc | เวลาในการชดเชย UTC |
--ตั้งแต่ | กรองตามกรอบเวลา |
ตรวจสอบบันทึกการบูต
ขั้นแรกเราจะตรวจสอบและกำหนดค่าบันทึกการบูตใน CentOS Linux สิ่งแรกที่คุณจะสังเกตเห็นคือโดยค่าเริ่มต้น CentOS จะไม่เก็บบันทึกการบูตที่คงอยู่ตลอดเวลาในการรีบูต
ในการตรวจสอบบันทึกการบูตต่ออินสแตนซ์การรีบูตเราสามารถออกคำสั่งต่อไปนี้ -
[root@centos rdc]# journalctl --list-boots
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT
[root@centos rdc]#
หลังจากรีบูตระบบเราจะเห็นรายการอื่น
[root@centos rdc]# journalctl --list-boots
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
[root@centos rdc]#
ตอนนี้เรามาตรวจสอบอินสแตนซ์การบันทึกการบูตล่าสุด -
root@centos rdc]# journalctl -b -5
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line:
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
ด้านบนคือเอาต์พุตแบบย่อจากการบูตครั้งสุดท้ายของเรา นอกจากนี้เรายังสามารถอ้างอิงกลับไปที่บันทึกการบูตจากชั่วโมงวันสัปดาห์เดือนและปี อย่างไรก็ตามโดยค่าเริ่มต้น CentOS จะไม่เก็บบันทึกการบูตแบบต่อเนื่อง ในการเปิดใช้งานการจัดเก็บบันทึกการบูตอย่างต่อเนื่องเราจำเป็นต้องทำการเปลี่ยนแปลงการกำหนดค่าบางอย่าง -
- สร้างจุดจัดเก็บส่วนกลางสำหรับบันทึกการบูต
- ให้สิทธิ์ที่เหมาะสมกับโฟลเดอร์บันทึกใหม่
- กำหนดค่า journald.conf สำหรับการบันทึกแบบต่อเนื่อง
กำหนดค่า Boot Location สำหรับ Persistent Boot Logs
สถานที่เริ่มต้นjournaldจะต้องการที่จะเก็บบันทึกบูตถาวร/ var / log / วารสาร เนื่องจากสิ่งนี้ไม่มีอยู่ตามค่าเริ่มต้นมาสร้างมัน -
[root@centos rdc]# mkdir /var/log/journal
ตอนนี้ให้สิทธิ์เข้าถึงไดเร็กทอรีที่เหมาะสมjournald daemon -
systemd-tmpfiles --create --prefix /var/log/journal
สุดท้ายขอบอกว่าjournaldควรเก็บบันทึกการบูตแบบต่อเนื่อง ในกลุ่มหรือแก้ไขข้อความที่คุณชื่นชอบเปิด/etc/systemd/jounrald.conf"
# See journald.conf(5) for details.
[Journal]=Storage=peristent
บรรทัดที่เรามีความกังวลกับมีการจัดเก็บข้อมูล = ก่อนอื่นให้ลบความคิดเห็น#จากนั้นเปลี่ยนเป็นStorage = persistentดังภาพด้านบน บันทึกและรีบูตระบบ CentOS ของคุณและดูแลว่าควรจะมีรายการหลายรายการเมื่อทำงานjournalctl รายการรองเท้า
Note- รหัสเครื่องที่เปลี่ยนแปลงตลอดเวลาเช่นนี้จากผู้ให้บริการ VPS อาจทำให้journaldล้มเหลวในการจัดเก็บบันทึกการบูตแบบต่อเนื่อง มีวิธีแก้ปัญหามากมายสำหรับสถานการณ์ดังกล่าว วิธีที่ดีที่สุดคือการอ่านการแก้ไขปัจจุบันที่โพสต์ไปยังฟอรัม CentOS Admin แทนที่จะทำตามคำแนะนำที่เชื่อถือได้จากผู้ที่พบวิธีแก้ปัญหา VPS ที่เป็นไปได้
ในการตรวจสอบบันทึกการบูตเฉพาะเราจำเป็นต้องได้รับแต่ละออฟเซ็ตโดยใช้journald --list - บูทออฟเซ็ตด้วยสวิตช์-b เพื่อตรวจสอบบันทึกการบูตครั้งที่สองที่เราใช้ -
journalctl -b -2
ค่าดีฟอลต์สำหรับ-b ที่ไม่มีการระบุออฟเซ็ตบันทึกการบูตจะเป็นบันทึกการบูตปัจจุบันเสมอหลังจากการรีบูตครั้งล่าสุด
วิเคราะห์บันทึกตามประเภทบันทึก
เหตุการณ์จากjournaldมีหมายเลขและแบ่งออกเป็น 7 ประเภทแยกกัน -
0 - emerg :: System is unusable
1 - alert :: Action must be taken immediatly
2 - crit :: Action is advised to be taken immediatly
3 - err :: Error effecting functionality of application
4 - warning :: Usually means a common issue that can affect security or usilbity
5 - info :: logged informtation for common operations
6 - debug :: usually disabled by default to troubleshoot functionality
ดังนั้นหากเราต้องการดูคำเตือนทั้งหมดสามารถออกคำสั่งต่อไปนี้ผ่านjournalctl -
[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL 440BX 06040000 VMW 01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL 440BX 06040000 PTL 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD Custom 06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD $SBFTBL$ 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD ? APIC 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD $PCITBL$ 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges:
Mar 19 22:01:57 localhost.localdomain kernel: DMA [mem 0x000010000x00ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: DMA32 [mem 0x010000000xffffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Normal empty
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x000010000x0009dfff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x001000000x95edffff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x95f000000x95ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on. Total pages: 60
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'
ด้านบนแสดงคำเตือนทั้งหมดในช่วง 4 วันที่ผ่านมาในระบบ
วิธีใหม่ในการดูและอ่านบันทึกด้วย systemd นั้นใช้เวลาฝึกฝนและค้นคว้าเพียงเล็กน้อยเพื่อให้คุ้นเคย อย่างไรก็ตามด้วยรูปแบบเอาต์พุตที่แตกต่างกันและข้อสังเกตโดยเฉพาะอย่างยิ่งในการสร้างบันทึก daemon แบบแพ็กเกจทั้งหมดเป็นแบบสากลจึงควรค่าแก่การยอมรับ journaldมีความยืดหยุ่นและประสิทธิภาพสูงกว่าวิธีการวิเคราะห์บันทึกแบบเดิม