Для меня это привело к проблеме с тем, как модуль imuxsock, используемый в rsyslog, работал с systemd.
В документации imuxsock они рассказывают, как модуль должен работать для systemd. Шаг 1 был где я видел проблемы:
Шаг 1: Выберите имя системного сокета
Если пользователь явно не выбрал для установки SysSock.Use = «off», тогда имя сокета слушателя по умолчанию (иначе, «сокет системного журнала» или просто «системный сокет») устанавливается в / dev / log. В противном случае, если пользователь явно установил SysSock.Use = "off", тогда rsyslog не будет прослушивать / dev / log ИЛИ ни один сокет, определенный параметром SysSock.Name, а остальная часть этого раздела не применяется.
Если пользователь указал sysSock.Name = "/ path / to / custom / socket" (и не указал явным образом SysSock.Use = "off"), то имя сокета слушателя по умолчанию будет перезаписано с помощью / path / to / custom / socket ,
В противном случае, если rsyslog работает в systemd AND / run / systemd / journal / syslog, существует (И пользователь явно не установил SysSock.Use = "off"), тогда имя сокета слушателя по умолчанию перезаписывается с помощью / run / systemd / journal / системный журнал.
Система должна перейти к шагу 3 и изменить путь по умолчанию на «/ run / systemd / journal / syslog», но вместо этого она осталась «/ var / log». Это означало, что модуль imuxsock попытается (и иногда удастся) создать сокет в / dev / log, где вместо него должна быть символическая ссылка, созданная systemd-journald-dev-log.socket. В случае, если не удастся создать настоящий сокет, символическая ссылка все равно будет удалена.
Эта документация была результатом этой проблемы на rsyslog github. Если вы хотите пропустить обсуждение и сразу перейти к изменениям, см. PR # 1 и PR # 2 соответственно.
Моим решением было просто настроить модуль imuxsock для использования пути systemd в моем /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, и в этом случае выигрывает последний, который должен быть включен.