Pour moi, cela a fini par être un problème avec la façon dont le module imuxsock utilisé dans rsyslog fonctionnait avec systemd.
Dans la documentation imuxsock, ils expliquent comment le module est censé fonctionner pour systemd. L'étape 1 était l'endroit où je voyais des problèmes:
Étape 1: Sélectionnez le nom du socket système
Si l'utilisateur n'a pas explicitement choisi de définir SysSock.Use = "off", le nom du socket d'écoute par défaut (aka, "socket du journal système" ou simplement "socket du système") est défini sur / dev / log. Sinon, si l'utilisateur a explicitement défini SysSock.Use = "off", rsyslog n'écoutera pas sur / dev / log OU aucun socket défini par le paramètre SysSock.Name et le reste de cette section ne s'applique pas.
Si l'utilisateur a spécifié sysSock.Name = "/ path / to / custom / socket" (et qu'il n'a pas explicitement défini SysSock.Use = "off"), le nom de socket d'écoute par défaut est remplacé par / path / to / custom / socket .
Sinon, si rsyslog s'exécute sous systemd ET / run / systemd / journal / syslog existe, (ET l'utilisateur n'a pas explicitement défini SysSock.Use = "off"), le nom de socket d'écoute par défaut est remplacé par / run / systemd / journal / syslog.
Le système aurait dû passer à l'étape 3 et changer le chemin par défaut en "/ run / systemd / journal / syslog" mais à la place il restait "/ var / log". Cela signifiait que le module imuxsock essaierait (et réussirait parfois) de créer un socket dans / dev / log où il devrait plutôt y avoir un lien symbolique créé par le systemd-journald-dev-log.socket. Dans le cas où il ne parviendrait pas à créer la vraie socket, le lien symbolique serait toujours supprimé.
Cette documentation était le résultat de ce problème signalé sur le github rsyslog. Si vous voulez sauter la discussion et passer directement aux changements, voir PR # 1 et PR # 2 respectivement.
Ma solution était de simplement configurer le module imuxsock pour utiliser le chemin systemd dans mon /etc/rsyslog.conf:
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
Cela semble avoir résolu mon problème et semble être une bonne solution ici car cela expliquerait pourquoi le lien symbolique pourrait à nouveau disparaître après l'avoir créé manuellement.
Si vous regardez sur votre système et que "/ run / systemd / journal / syslog" n'est pas présent, regardez le "syslog.socket" pour voir s'il démarre correctement car c'est ce qui est responsable de la création du socket.
systemctl status syslog.socket
Il se peut que votre version de rsyslog.service ne définisse pas syslog.service comme un alias qui est nécessaire car syslog.socket essaie d'activer ce service. Il est également possible que plusieurs services de journalisation tentent d'alias syslog.service, auquel cas le dernier à être activé l'emporte.