Đối với tôi điều này cuối cùng là một vấn đề với cách mô-đun imuxsock được sử dụng trong rsyslog hoạt động với systemd.
Trong tài liệu imuxsock, họ sẽ tìm hiểu cách mô-đun được cho là hoạt động cho systemd. Bước 1 là nơi tôi đã thấy vấn đề:
Bước 1: Chọn tên của ổ cắm hệ thống
Nếu người dùng chưa chọn rõ ràng để đặt SysSock.Use = "tắt" thì ổ cắm trình nghe mặc định (hay còn gọi là ổ cắm nhật ký hệ thống, hay tên đơn giản là ổ cắm hệ thống) được đặt thành / dev / log. Mặt khác, nếu người dùng đã đặt rõ ràng SysSock.Use = "tắt", thì rsyslog sẽ không nghe trên / dev / log HOẶC bất kỳ ổ cắm nào được xác định bởi tham số SysSock.Name và phần còn lại của phần này không áp dụng.
Nếu người dùng đã chỉ định sysSock.Name = "/ path / to / custom / socket" (và không đặt rõ ràng SysSock.Use = "off"), thì tên ổ cắm trình nghe mặc định được ghi đè bằng / path / to / custom / socket .
Mặt khác, nếu rsyslog đang chạy trong systemd AND / run / systemd / Tạp chí / syslog tồn tại, (VÀ người dùng chưa đặt rõ ràng SysSock.Use = "tắt") thì tên ổ cắm trình nghe mặc định được ghi đè bằng / run / systemd / tạp chí / syslog.
Hệ thống nên rơi vào Bước 3 và thay đổi đường dẫn mặc định thành "/ run / systemd / tạp chí / syslog" nhưng thay vào đó, nó vẫn còn "/ var / log". Điều này có nghĩa là mô-đun imuxsock sẽ cố gắng (và đôi khi thành công) để tạo ra một ổ cắm tại / dev / log trong đó thay vào đó là liên kết tượng trưng được tạo bởi systemd-journald-dev-log.socket. Trong trường hợp không thể tạo được ổ cắm thực, liên kết tượng trưng vẫn sẽ bị xóa.
Tài liệu đó là kết quả của vấn đề này được báo cáo trên github rsyslog. Nếu bạn muốn bỏ qua cuộc thảo luận và chuyển thẳng đến các thay đổi, hãy xem PR # 1 và PR # 2 tương ứng.
Giải pháp của tôi là chỉ cần cấu hình mô-đun imuxsock để sử dụng đường dẫn systemd trong /etc/rsyslog.conf:
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
Điều này dường như đã khắc phục vấn đề của tôi và nghe có vẻ là một giải pháp tốt ở đây vì nó sẽ giải thích tại sao liên kết tượng trưng có thể biến mất một lần nữa sau khi bạn tự tạo nó.
Nếu bạn nhìn vào hệ thống của mình và "/ run / systemd / tạp chí / syslog" không có mặt, hãy nhìn vào "syslog.socket" để xem nó có bắt đầu thành công không vì đó là nguyên nhân tạo ra ổ cắm.
systemctl status syslog.socket
Có thể là phiên bản rsyslog.service của bạn không định nghĩa syslog.service là bí danh cần thiết khi syslog.socket cố gắng kích hoạt dịch vụ đó. Cũng có thể nhiều dịch vụ ghi nhật ký cố gắng bí danh syslog.service trong trường hợp cuối cùng được kích hoạt sẽ thắng.