Quản trị viên Linux - Quản lý nhật ký
systemd đã thay đổi cách quản lý ghi nhật ký hệ thống cho CentOS Linux. Thay vì mọi daemon trên hệ thống đặt nhật ký vào các vị trí riêng lẻ hơn là sử dụng các công cụ như tail hoặc grep làm cách chính để phân loại và lọc các mục nhật ký,journald đã mang lại một điểm quản trị duy nhất để phân tích nhật ký hệ thống.
Các thành phần chính đằng sau ghi nhật ký systemd là: tạp chí, jounralctl, và journald.conf
journald là daemon ghi nhật ký chính và được định cấu hình bằng cách chỉnh sửa journald.conf trong khi journalctl được sử dụng để phân tích các sự kiện được ghi lại bởi journald .
Các sự kiện được ghi lại bởi journald bao gồm: sự kiện hạt nhân, quy trình người dùng và dịch vụ daemon.
Đặt múi giờ hệ thống chính xác
Trước khi sử dụng journalctl , chúng tôi cần đảm bảo thời gian hệ thống của chúng tôi được đặt thành thời gian chính xác. Để làm điều này, chúng tôi muốn sử dụng timedatectl .
Hãy kiểm tra thời gian hệ thống hiện tại.
[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]#
Hiện tại, hệ thống chính xác với múi giờ địa phương. Nếu hệ thống của bạn không, hãy đặt múi giờ chính xác. Sau khi thay đổi cài đặt, CentOS sẽ tự động tính toán độ lệch múi giờ so với múi giờ hiện tại, điều chỉnh đồng hồ hệ thống ngay lập tức.
Hãy liệt kê tất cả các múi giờ với 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
Đó là đầu ra cạnh tranh từ múi giờ danh sách định thời gian . Để tìm múi giờ địa phương cụ thể, lệnh grep có thể được sử dụng:
[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York"
America/New_York
[root@centos rdc]#
Nhãn được CentOS sử dụng thường là Quốc gia / Vùng với dấu gạch dưới thay vì dấu cách (New_York so với "New York").
Bây giờ hãy đặt múi giờ của chúng ta -
[root@centos rdc]# timedatectl set-timezone "America/New_York"
[root@centos rdc]# date
Mon Mar 20 02:28:44 EDT 2017
[root@centos rdc]#
Đồng hồ hệ thống của bạn sẽ tự động điều chỉnh thời gian.
Sử dụng journalctl để phân tích nhật ký
Chuyển đổi dòng lệnh phổ biến khi sử dụng journalctl -
Công tắc điện | Hoạt động |
---|---|
-k | Chỉ liệt kê các thông báo hạt nhân |
-u | Danh sách theo đơn vị cụ thể (httpd, sshd, v.v.) |
-b | Khởi động phần bù nhãn |
-o | Ghi lại định dạng đầu ra |
-p | Bộ lọc theo loại nhật ký (tên hoặc số) |
-F | Tên trường hoặc giá trị tên trường |
--utc | Thời gian tính theo UTC bù đắp |
--từ | Lọc theo khung thời gian |
Kiểm tra nhật ký khởi động
Đầu tiên, chúng ta sẽ kiểm tra và cấu hình nhật ký khởi động trong CentOS Linux. Điều đầu tiên bạn sẽ nhận thấy là CentOS, theo mặc định, không lưu trữ nhật ký khởi động liên tục qua các lần khởi động lại.
Để kiểm tra nhật ký khởi động mỗi phiên bản khởi động lại, chúng ta có thể sử dụng lệnh sau:
[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]#
Sau khi khởi động lại hệ thống, chúng ta có thể thấy một mục nhập khác.
[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]#
Bây giờ, hãy kiểm tra trường hợp ghi nhật ký khởi động cuối cùng -
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:
Trên đây là kết quả cô đọng từ lần khởi động cuối cùng của chúng tôi. Chúng tôi cũng có thể tham khảo lại nhật ký khởi động từ giờ, ngày, tuần, tháng và thậm chí cả năm. Tuy nhiên, theo mặc định, CentOS không lưu trữ nhật ký khởi động liên tục. Để cho phép liên tục lưu trữ nhật ký khởi động, chúng tôi cần thực hiện một số thay đổi cấu hình -
- Tạo điểm lưu trữ trung tâm cho nhật ký khởi động
- Cấp quyền thích hợp cho một thư mục nhật ký mới
- Định cấu hình trang journald.conf để ghi nhật ký liên tục
Định cấu hình vị trí khởi động cho nhật ký khởi động liên tục
Nơi ban đầu mà newsnald muốn lưu trữ nhật ký khởi động liên tục là / var / log / journal . Vì điều này không tồn tại theo mặc định, hãy tạo nó -
[root@centos rdc]# mkdir /var/log/journal
Bây giờ, hãy cung cấp cho thư mục quyền truy cập thích hợp cho android daemon -
systemd-tmpfiles --create --prefix /var/log/journal
Cuối cùng, hãy nói với sunnynald rằng nó nên lưu trữ nhật ký khởi động liên tục. Trong vim hoặc trình soạn thảo văn bản yêu thích của bạn, hãy mở /etc/systemd/jounrald.conf " .
# See journald.conf(5) for details.
[Journal]=Storage=peristent
Dòng chúng tôi quan tâm là, Storage = . Trước tiên, hãy xóa nhận xét # , sau đó thay đổi thànhStorage = persistentnhư mô tả ở trên. Lưu và khởi động lại hệ thống CentOS của bạn và lưu ý rằng phải có nhiều mục nhập khi chạy khởi động danh sách journalctl .
Note- Id máy thay đổi liên tục như vậy từ một nhà cung cấp VPS có thể khiến cho journald không thể lưu trữ nhật ký khởi động liên tục. Có nhiều cách giải quyết cho một kịch bản như vậy. Tốt nhất là đọc kỹ các bản sửa lỗi hiện tại được đăng trên diễn đàn Quản trị viên CentOS, thay vì làm theo lời khuyên đáng tin cậy từ những người đã tìm thấy các giải pháp thay thế VPS hợp lý.
Để kiểm tra một nhật ký khởi động cụ thể, chúng tôi chỉ cần lấy từng phần bù bằng cách sử dụng journald --list-khởi động phần bù bằng công tắc -b . Vì vậy, để kiểm tra nhật ký khởi động thứ hai, chúng tôi sẽ sử dụng -
journalctl -b -2
Mặc định cho -b không có bù đắp nhật ký khởi động được chỉ định sẽ luôn là nhật ký khởi động hiện tại sau lần khởi động lại cuối cùng.
Phân tích nhật ký theo loại nhật ký
Các sự kiện từ journald được đánh số và phân loại thành 7 loại riêng biệt -
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
Do đó, nếu chúng ta muốn xem tất cả các cảnh báo, lệnh sau có thể được đưa ra thông qua 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'
Bên trên hiển thị tất cả các cảnh báo trong 4 ngày qua trên hệ thống.
Cách mới để xem và duyệt nhật ký với systemd không cần thực hành và nghiên cứu để trở nên quen thuộc. Tuy nhiên, với các định dạng đầu ra khác nhau và đặc biệt lưu ý về việc làm cho tất cả các bản ghi daemon đóng gói trở nên phổ biến, điều đó đáng được chấp nhận. journald cung cấp tính linh hoạt và hiệu quả cao hơn các phương pháp phân tích nhật ký truyền thống.