我有一个基于 systemd 的系统,对于某些服务,我必须设置远程日志记录。设置它的最简单方法是在单元文件中使用rsyslog
和设置 。StandardOutput=syslog
现在我还需要远程记录的启动消息和内核日志,但无法找到代表我要放置的内核的单元文件StandardOutput=syslog
。
关于如何解决这个问题有什么想法吗?
答案1
Systemd 使用日志进行日志记录。它配置在/etc/systemd/journald.conf
.看man journald.conf
。特别是,您可以创建/etc/systemd/journald.conf.d/my.conf
包含以下内容的文件
ForwardToSyslog=on
将所有日志记录发送到套接字/run/systemd/journal/syslog
。通常,syslog
配置为/etc/rsyslog.conf
通过在其起始行读取此套接字
$ModLoad imjournal # provides access to the systemd journal
您可以对此数据流使用常用的系统日志过滤。
答案2
从内核获取日志需要采用与从服务获取日志不同的方法。
内核将其日志存储在内存中一个称为内核环形缓冲区。这是通过一个特殊文件暴露给用户空间的/dev/kmsg
。默认情况下 journald
将读取该文件。因此,如果 Journald 将所有内容转发到 rsyslog,它也会转发内核消息。