Для мене це виявилося проблемою з тим, як модуль imuxsock, який використовується в rsyslog, працював з systemd.
У документації на imuxsock вони описують, як модуль повинен працювати для systemd. Крок 1: я бачив проблеми:
Крок 1: Виберіть назву системної розетки
Якщо користувач явно не вибрав налаштування SysSock.Use = "вимкнено", тоді для сокета прослуховувача за замовчуванням (він же "сокет системного журналу" або просто "системний сокет") встановлюється значення / dev / log. В іншому випадку, якщо користувач явно встановив SysSock.Use = "вимкнено", то rsyslog не буде слухати увімкнення / dev / log АБО жодного сокета, визначеного параметром SysSock.Name, і решта цього розділу не застосовується.
Якщо користувач вказав sysSock.Name = "/ шлях / до / custom / socket" (а не явно встановлено SysSock.Use = "вимкнено"), то назва сокету прослуховувача за замовчуванням перезаписується з / path / to / custom / socket .
В іншому випадку, якщо rsyslog працює під системою AND / run / systemd / journal / syslog, існує ((І користувач явно не встановив SysSock.Use = "вимкнено")), тоді назва сокету прослуховувача за замовчуванням буде замінено на / run / systemd / journal / syslog.
Система повинна потрапити на крок 3 і змінити шлях за замовчуванням на "/ run / systemd / journal / syslog", але замість цього він залишився "/ var / log". Це означало, що модуль imuxsock намагатиметься (і іноді досягає успіху) створити сокет у / dev / log, де замість цього має бути символічне посилання, створене systemd-journald-dev-log.socket. У випадку, якщо б не вдалося створити справжній сокет, символічне посилання все одно буде видалено.
Ця документація стала підсумком цього випуску, про який повідомлялося на rsyslog github. Якщо ви хочете пропустити дискусію та перейти безпосередньо до змін, див. PR # 1 та PR # 2 відповідно.
Моє рішення полягало в тому, щоб просто налаштувати модуль imuxsock для використання системного шляху в моєму /etc/rsyslog.conf:
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
Це, здається, вирішило мою проблему і звучить як хороше рішення, оскільки це пояснило б, чому символьне посилання може зникнути знову після того, як ви вручну створите його.
Якщо ви подивитеся на вашу систему, а "/ run / systemd / journal / syslog" немає, подивіться на "syslog.socket", щоб побачити, чи не запускається він успішно, оскільки саме це відповідає за створення сокета.
systemctl status syslog.socket
Можливо, ваша версія rsyslog.service не визначає syslog.service як псевдонім, який необхідний, оскільки syslog.socket намагається активувати цю послугу. Можливо також, що кілька служб реєстрації намагаються псевдоніми syslog.service, і в цьому випадку виграє остання можливість.