Bagi saya ini akhirnya menjadi masalah dengan bagaimana modul imuxsock yang digunakan dalam rsyslog bekerja dengan systemd.
Dalam dokumentasi imuxsock mereka mempelajari bagaimana modul seharusnya bekerja untuk systemd. Langkah 1 adalah tempat saya melihat masalah:
Langkah 1: Pilih nama soket sistem
Jika pengguna belum secara eksplisit memilih untuk menetapkan SysSock.Use = "off" maka soket pendengar default (alias, "soket log sistem" atau hanya "soket sistem") nama diatur ke / dev / log. Jika tidak, jika pengguna telah secara eksplisit mengatur SysSock.Use = "off", maka rsyslog tidak akan mendengarkan / dev / log ATAU soket apa pun yang ditentukan oleh parameter SysSock.Name dan sisa bagian ini tidak berlaku.
Jika pengguna telah menetapkan sysSock.Name = "/ path / ke / custom / socket" (dan tidak secara eksplisit mengatur SysSock.Use = "off"), maka nama soket pendengar default ditimpa dengan / path / ke / custom / socket .
Kalau tidak, jika rsyslog berjalan di bawah systemd AND / run / systemd / journal / syslog ada, (DAN pengguna belum secara eksplisit mengatur SysSock.Use = "off") maka nama soket pendengar default ditimpa dengan / run / systemd / journal / syslog.
Sistem seharusnya jatuh ke Langkah 3 dan mengubah jalur default menjadi "/ run / systemd / journal / syslog" tetapi sebaliknya itu tetap "/ var / log". Ini berarti bahwa modul imuxsock akan mencoba (dan kadang-kadang berhasil) untuk membuat socket di / dev / log di mana seharusnya ada tautan simbolik yang dibuat oleh systemd-journald-dev-log.socket. Dalam hal gagal membuat soket asli, tautan simbolik masih akan dihapus.
Dokumentasi itu adalah hasil dari masalah ini yang dilaporkan pada rsyslog github. Jika Anda ingin melewatkan diskusi dan langsung beralih ke perubahan, lihat PR # 1 dan PR # 2 masing-masing.
Solusi saya adalah mengkonfigurasi modul imuxsock untuk menggunakan jalur systemd di /etc/rsyslog.conf saya:
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
Ini tampaknya telah memperbaiki masalah saya dan terdengar seperti solusi yang baik di sini karena ini akan menjelaskan mengapa tautan simbolis mungkin hilang lagi setelah Anda membuatnya secara manual.
Jika Anda melihat sistem Anda dan "/ run / systemd / journal / syslog" tidak ada lihat "syslog.socket" untuk melihat apakah itu mulai berhasil karena itulah yang bertanggung jawab untuk membuat soket.
systemctl status syslog.socket
Bisa jadi versi rsyslog.service Anda tidak mendefinisikan syslog.service sebagai alias yang diperlukan ketika syslog.socket mencoba mengaktifkan layanan itu. Ada kemungkinan juga bahwa beberapa layanan logging mencoba alias syslog.service yang dalam kasus terakhir diaktifkan akan menang.