Para mí, esto terminó siendo un problema con la forma en que el módulo imuxsock utilizado en rsyslog funcionaba con systemd.
En la documentación de imuxsock, explican cómo se supone que el módulo debe funcionar para systemd. El paso 1 era donde estaba viendo problemas:
Paso 1: seleccione el nombre del zócalo del sistema
Si el usuario no ha elegido explícitamente establecer SysSock.Use = "off", el nombre del socket de escucha predeterminado (también conocido como "socket de registro del sistema" o simplemente "socket del sistema") se establece en / dev / log. De lo contrario, si el usuario ha establecido explícitamente SysSock.Use = "off", entonces rsyslog no escuchará en / dev / log O cualquier socket definido por el parámetro SysSock.Name y el resto de esta sección no se aplica.
Si el usuario ha especificado sysSock.Name = "/ path / to / custom / socket" (y no ha establecido SysSock.Use = "off" explícitamente), el nombre del socket de escucha predeterminado se sobrescribe con / path / to / custom / socket .
De lo contrario, si rsyslog se ejecuta en systemd AND / run / systemd / journal / syslog existe (Y el usuario no ha establecido explícitamente SysSock.Use = "off"), el nombre del socket de escucha predeterminado se sobrescribe con / run / systemd / journal / syslog.
El sistema debería haber caído en el Paso 3 y cambiar la ruta predeterminada para que sea "/ run / systemd / journal / syslog", pero en su lugar permanecía "/ var / log". Esto significaba que el módulo imuxsock intentaría (y tendría éxito a veces) crear un socket en / dev / log donde debería haber un enlace simbólico creado por systemd-journald-dev-log.socket. En el caso de que no pudiera crear el socket real, el enlace simbólico aún se eliminaría.
Esa documentación fue el resultado de este problema informado en el rsyslog github. Si desea omitir la discusión y saltar directamente a los cambios, vea PR # 1 y PR # 2 respectivamente.
Mi solución fue simplemente configurar el módulo imuxsock para usar la ruta systemd en mi /etc/rsyslog.conf:
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
Esto parece haber solucionado mi problema y parece una buena solución aquí, ya que explicaría por qué el enlace simbólico podría desaparecer nuevamente después de crearlo manualmente.
Si observa su sistema y "/ run / systemd / journal / syslog" no está presente, mire el "syslog.socket" para ver si se está iniciando correctamente, ya que eso es lo que es responsable de crear el socket.
systemctl status syslog.socket
Puede ser que su versión de rsyslog.service no defina syslog.service como un alias que se necesita cuando syslog.socket intenta activar ese servicio. También es posible que múltiples servicios de registro intenten alias syslog.service, en cuyo caso el último en habilitarse gana.