使用journald / rsyslogd导出日志

问题描述 投票:0回答:1

我正在尝试将内核日志(/var/log/messages)导出到远程系统日志服务器。到目前为止,大部分系统日志都存储在journald中,并且rsyslogd被禁用。

所以,我打算使用rsyslogd导出日志(通过配置rsyslog.conf文件)。首先,我会将这些内核日志从journald传递到rsyslogd,然后导出它们。

有人可以建议这是否是正确的路径,或者我可以直接使用日志来实现相同的目的吗?

logging systemd rsyslog systemd-journald
1个回答
2
投票

Systemd 可以收集和存储日志,但它没有记录到远程位置(例如日志管理系统)的内置方法。相反,它依赖设备的系统日志服务在日志和远程系统日志服务器之间中继消息。

但是,syslog 是基于文本的,journald 使用二进制格式, 因此您的日志需要在传输之前进行转换。你 可以通过使用 systemd 的 ForwardToSyslog 配置来做到这一点 设置,或者使用 rsyslog 的 imjournal 模块。

/etc/systemd/journald.conf 有一个

ForwardToSyslog=yes
选项,允许您将日志转发到 syslog,这对我来说似乎是一种相当不优雅的方式。


在 rsyslog 中,您可以添加模块

imjournal
,以获取 journal 日志。要使用它,请将以下内容添加到您的 /etc/rsyslog.conf 文件中。 mmjsonparse 模块让 ryslog 解析日志消息:

module(load="imjournal")
module(load="mmjsonparse")

可以使用标准

imklog
模块记录内核消息。只需添加:
module(load="imklog")
到配置文件 /etc/rsyslog.conf 即可。使用标准 rsyslog 配置,这应该将内核消息记录到 /var/log/messages/var/log/syslog

转发可以通过UDP或TCP完成。

转发:

*.* action(type="omfwd" target="10.0.2.1" port="514" protocol="udp")         # UDP
*.* action(type="omfwd" target="10.0.2.1" port="10514" protocol="tcp")       # TCP

过时的旧格式

*.* @10.0.1.1:514        # UDP -> one @
*.* @@10.0.1.1:514       # TCP -> two @s

添加此内容后,您的 rsyslog 客户端应该开始将消息转发到远程系统日志服务器。

© www.soinside.com 2019 - 2024. All rights reserved.