Làm cách nào để định cấu hình chính sách lưu trữ nhật ký trên mỗi đơn vị với journald?


14

Tôi có một dịch vụ cụ thể, đó là thông tin hiếm, nhưng thông tin quan trọng. Tôi đã thiết lập nó vài tháng trước và hôm nay tôi journalctl -n 50 --unit=my-servicechỉ chạy để thấy không có mục nào.

Tôi hoàn toàn hài lòng với hành vi này đối với hầu hết các đơn vị - Tôi cần một cái gì đó đã xảy ra ngay lập tức (hoặc nhiều nhất là vài ngày trước) và tôi không quan tâm đến các hồ sơ cũ.

Tuy nhiên, có cách nào để nói journaldcó chính sách lưu trữ và lưu giữ độc lập cho hồ sơ của một đơn vị cụ thể không? Tôi muốn duy trì những bản ghi cụ thể đó trong 5 năm - bất kể kích thước nó sẽ là bao nhiêu. Nhật ký của các đơn vị khác sẽ không bị ảnh hưởng bởi điều này và duy trì hành vi hiện có của họ.

Tôi hơi mất hiểu biết journald.conf(5)và không thể tìm ra bất cứ khi nào có thể cấu hình cho mỗi đơn vị. Nếu có - sẽ đánh giá cao một ví dụ cụ thể ngắn gọn - tôi nên chỉnh sửa / tạo tập tin nào và tôi nên viết gì. Hoặc, nếu bạn biết chắc chắn điều đó chắc chắn không thể thực hiện được - đó cũng là một câu trả lời tốt.

LƯU Ý: Trường hợp cụ thể của tôi liên quan đến máy chủ Arch Linux, nhưng tôi đoán điều này không quan trọng lắm.


Tôi không thể nhận xét về câu trả lời ở trên để thêm liên kết này vào một vấn đề về việc thêm tính năng này vào journald, vì vậy đây là câu trả lời khác: github.com/systemd/systemd/issues/4751
swoop81

Câu trả lời:


7

Có vẻ như tôi rất có thể đã hết may mắn với journald. Trừ khi tôi tìm ra cách để tạo ra một tạp chí "lưu trữ dài hạn" độc lập (như hiện tại có các tạp chí cho mỗi người dùng khác nhau), nhưng tôi không chắc đó là một cách tiếp cận khả thi và lành mạnh. Tôi đoán, thiết lập một syslogd (và logrotate) sẽ dễ dàng hơn.

Tính năng này không có mặt vào cuối năm 2014 , như được xác nhận bởi chính Lennart.

Và dường như nó chưa ở đây. Ít nhất, dòng "journald: cho phép thời gian duy trì ưu tiên và mỗi dịch vụ khi quay / hút bụi" vẫn nằm trong tệp TODO (liên kết đến sửa đổi từ 2016-07-11).


3
Đây dường như là một lỗ hổng thiết kế rất lớn, gần như tê liệt. Đặc biệt là nếu một người muốn giảm mức độ lưu giữ hoặc ít nhất là mức độ nhật ký của các đơn vị rất trò chuyện, làm tắc nghẽn các bản ghi.
orion

1
Đối với bất kỳ ai vấp phải câu hỏi này, dòng được tham chiếu trong TODO vẫn có mặt trong nhận xét này (26.03,18): github.com/systemd/systemd/blob/iêu
timss 26/03/18

1
Trong một nỗ lực để có được một lực kéo về nó, tôi đã nêu ra nó như là một vấn đề với dự án - github.com/systemd/systemd/issues/9519 .
slm

1

Nó rất đơn giản để tạo ra tệp nhật ký. Theo mặc định, tất cả việc đăng nhập vào journald cũng được chuyển sang syslog và mặc định này cần phải được đặt đúng chỗ. Rsyslog.conf kiểm soát cách xử lý các mục nhập vào syslog. Ngoài ra, SyslogFacilitymặc định để daemoncác mục nhật ký cho bất kỳ dịch vụ nào thường kết thúc trong daemon.logtệp trong /var/log.

Trong tệp dịch vụ của bạn, thêm vào phần [dịch vụ]

SyslogFacility=local2

(số có thể nằm trong khoảng từ 0 đến 7) https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Sửa đổi /etc/rsyslog.conf (tìm các dòng hiện có để sửa đổi) để local2 được ghi vào một tệp cụ thể (dòng đầu tiên) và lý tưởng không được ghi vào syslog bằng cách thêm local2.nonenhư hiển thị (nó đã có trong tạp chí).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[sửa] bạn cũng cần sửa đổi tất cả

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

Tất nhiên việc lưu giữ thực tế sau đó cần phải được thực hiện bằng logrotate.

HTH

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.