Làm cách nào để hiển thị thông báo nhật ký từ các lần khởi động trước trong CentOS 7?


78

Thực thi journalctltrong hệ thống CentOS 7 chỉ in các tin nhắn được tạo sau lần khởi động cuối cùng.

Lệnh

# journalctl --boot=-1

in

Failed to look up boot -1: Cannot assign requested address

và thoát với trạng thái 1.

So sánh nó với một hệ thống Fedora hiện tại tôi nhận thấy rằng CentOS 7 không có /var/log/journal(và journalctlkhông cung cấp --list-boots).

Vì vậy, câu hỏi của tôi làm thế nào để hiển thị các thông điệp tường trình được viết trước ngày khởi động cuối cùng.

Hoặc, có lẽ chức năng này phải được kích hoạt trên CentOS 7?

( journalctlTrang người đàn ông liệt kê 'systemd 208' dưới dạng số phiên bản.)

Câu trả lời:


99

tl; dr

Trên CentOS 7, bạn phải kích hoạt lưu trữ thông điệp nhật ký liên tục:

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

Mặt khác, các thông điệp nhật ký không được giữ lại giữa các lần khởi động.

Chi tiết

Cho dù journaldgiữ lại thông điệp tường trình từ các lần khởi động trước được cấu hình thông qua /etc/systemd/journald.conf. Cài đặt mặc định trong CentOS 7 là:

[Journal]
Storage=auto

Trường hợp trang người đàn ông journald.conf giải thích autolà:

Một trong những "dễ bay hơi", "dai dẳng", "tự động" và "không". Nếu "không ổn định", dữ liệu nhật ký nhật ký sẽ chỉ được lưu trữ trong bộ nhớ, tức là bên dưới hệ thống phân cấp / run / log / tạp chí (được tạo nếu cần). Nếu "liên tục", dữ liệu sẽ được lưu trữ tốt nhất trên đĩa, tức là bên dưới phân cấp / var / log / tạp chí (được tạo nếu cần), với dự phòng / run / log / tạp chí (được tạo nếu cần), trong khi khởi động sớm và nếu đĩa không thể ghi. "Tự động " tương tự như "liên tục" nhưng thư mục / var / log / tạp chí không được tạo nếu cần, để sự tồn tại của nó kiểm soát nơi dữ liệu nhật ký đi .

(nhấn mạnh của tôi)

Các trang người đàn ông systemd-journald.service do đó khẳng định rằng:

Theo mặc định, tạp chí lưu trữ dữ liệu nhật ký trong / run / log / tạp chí /. Vì / run / không ổn định, dữ liệu nhật ký sẽ bị mất khi khởi động lại. Để làm cho dữ liệu liên tục, việc tạo / var / log / tạp chí / nơi systemd-journald sẽ lưu trữ dữ liệu là đủ.

Rõ ràng, mặc định đã được thay đổi trong Fedora 19 (để lưu trữ liên tục) và vì CentOS 7 có nguồn gốc từ Fedora 18 - theo mặc định, nó vẫn không tồn tại ở đó. Tính bền bỉ được triển khai theo mặc định bên ngoài journald thông qua /var/log/messagesvà các phiên bản xoay /var/log/messages-YYYYMMDDđược viết bởi rsyslogd (chạy theo mặc định và nhận đầu vào từ journald).

Do đó, để cho phép ghi nhật ký liên tục với journald trong RHEL / CentOS 7, người ta phải

# mkdir /var/log/journal

và sau đó sửa quyền và khởi động lại tạp chí, ví dụ thông qua

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

6
A systemctl restart systemd-journaldnên làm điều đó. Vì vậy, không cần khởi động lại.
xx4h

@ xx4h, cập nhật câu trả lời
maxschlepzig

9
Trong debian, điều này được ghi nhận tại /usr/share/doc/systemd/README.Debian: install -d -g systemd-journal /var/log/journal.
pevik

@pevik, tôi đã xem xét một hệ thống CentOS 7 (nơi tôi mới sử dụng mkdir) và các quyền hiện tại là drwxr-sr-x. 3 root systemd-journal- có lẽ journald sửa các quyền / quyền sở hữu trong quá trình khởi tạo.
maxschlepzig

8
Đã học được một mẹo nhỏ: nếu bạn gửi USR1tín hiệu thay vì khởi động lại, bạn sẽ không mất nội dung tạp chí hiện tại. killall -USR1 systemd-journald
James B

1
systemctl restart systemd-journald

Bạn có thể mất nhật ký của mình: xem https://github.com/systemd/systemd/issues/2236

mkdir /var/log/journal

Có một sự thay đổi trong v208:

systemd-journald sẽ không còn điều chỉnh nhóm các tệp nhật ký mà nó tạo thành nhóm "systemd-tạp chí". Thay vào đó, chúng tôi dựa vào thư mục nhật ký được sở hữu bởi nhóm "systemd-Tạp chí" và tập bit setgid của nó, để lớp hệ thống tệp kernel sẽ tự động thực thi các tệp nhật ký đó kế thừa việc gán nhóm này.

Một đoạn mã tmpfiles.d (5) có trong systemd sẽ đảm bảo bit setgid và nhóm được đặt đúng trên thư mục nhật ký nếu nó tồn tại trên mỗi lần khởi động.

Vì vậy, bạn nên chạy một cái gì đó như systemd-tmpfiles --create --prefix /var/log/journalsaumkdir /var/log/journal

Xem thêm :


Hừm, hoặc làm một `chmod 4755 / var / log / tạp chí; chown root: systemd-Tạp chí !: 2 '- hoặc chỉ cần thực hiện khởi động lại. Tôi sẽ cập nhật câu trả lời của tôi.
maxschlepzig

@maxschlepzig, chỉ cần khởi động lại không hoạt động: github.com/systemd/systemd/pull/1398#issuecomment-144247498
Evgeny Vereshchagin

chmod 4755 /var/log/journal; chown root:systemd-journal !:2hoạt động tốt nhưng tmpfiles: sử dụng phép thuật ACL trên các thư mục tạp chí
Evgeny Vereshchagin

ok, một lỗi khác :) - Tôi đã cập nhật câu trả lời của mình.
maxschlepzig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.