Jam*_*wey 12 logs rsyslog syslog systemd
过去,我使用 syslog-ng 或 rsyslog 将系统日志发送到网络上其他地方的专用日志服务器。然而,对于 systemd,诸如之前存储在 /var/log/secure 或 /var/log/auth.log (取决于您的发行版)中的 sudo 命令之类的东西。
我知道 /etc/systemd/journald.conf 有一个ForwardToSyslog=yes
选项可以让我回到我的旧方式,但这似乎是一种不雅的倒退。systemd 是否具有将日志发送到中央日志服务器(如 Logrhythm、ELK 或类似服务器)的内置方法,或设置ForwardToSyslog=yes
正确的方法来执行此操作?
systemd 似乎没有将消息转发到系统日志服务器的内置方法。Red Hat 的官方建议是使用该imjournal
模块允许 rsyslog 读取 journald 日志并将这些日志转发到中央日志服务器,方法是在 /etc/rsyslog.conf 中设置以下内容:
module(load="imjournal"
PersistStateInterval="number_of_messages"
StateFile="path"
ratelimit.interval="seconds"
ratelimit.burst="burst_number"
IgnorePreviousMessages="off/on")
Run Code Online (Sandbox Code Playgroud)
它们提供了这些选项的使用详细信息,并指出
使用number_of_messages,您可以指定必须保存日志数据的频率。每次达到指定数量的消息时都会发生这种情况。
用状态文件的路径替换路径。此文件跟踪最后一个处理的日记帐分录。
使用seconds,您可以设置速率限制间隔的长度。在此时间间隔内处理的消息数不能超过burst_number 中指定的值。默认设置为每 600 秒 20,000 条消息。Rsyslog 丢弃指定时间范围内最大突发之后的消息。
使用IgnorePreviousMessages,您可以忽略当前在日志中的消息并仅导入新消息,这在未指定状态文件时使用。默认设置为关闭。请注意,如果此设置关闭且没有状态文件,则日志中的所有消息都会被处理,即使它们已经在之前的 rsyslog 会话中处理过。