如何设置 OpenVPN 来轮换日志?

如何设置 OpenVPN 来轮换日志?

我想轮换我的 openvpn 日志。我该怎么做?

答案1

将以下内容添加到新文件 /etc/rsyslog.d/20-ovpn.conf。这确保发送到 rsyslog 的日志事件得到妥善处理。

# Create a template for the vpn log location
$template OpenVPN,"/var/log/openvpn/ovpn.log"

# Save log events where the programname starts with ovpn like ovpn-server to the 
# location mentioned in the template
:programname, startswith, "ovpn-" -?OpenVPN

# Stop processing ovpn-* log events 
:programname, startswith, "ovpn-" ~

运行此命令并确保没有输出。

grep ^log /etc/openvpn/server.conf

如果此命令输出任何行,则需要进入配置并注释掉 log 或 log-append 行。这将触发将其发送到 syslog 的默认日志记录。

最后,创建一个新文件 /etc/logrotate.d/ovpn,并将下面的内容添加到该文件中。这将进行每周轮换,或者一旦日志文件大小达到 100M,就会进行轮换。它将保留 4 周,并压缩除最后两周之外的所有内容。

/var/log/openvpn/*.log {
        weekly
        size 100M
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 640 syslog adm
}

重新启动 rsyslog 和 openvpn 服务,以确保这些新配置生效。openvpn 重新启动后,您应该会看到 rsyslog 立即创建了 /var/log/openvpn 和 /var/log/openvpn/ovpn.log。

答案2

上面的示例似乎使用了旧版 rsyslog 语法。文档称这是当前语法:

if $programname startswith 'ovpn-' then /var/log/openvpn/ovpn.log
& ~

我已经测试过了并且它对我有用(TM)。

相关内容