我想轮换我的 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)。