Openvpnログをローテーションしたいです。どうすればこれを達成できますか?
次の内容を新しいファイル/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
このコマンドが行を出力する場合は、構成に移動して、ログまたはログ追加行をコメントアウトする必要があります。これにより、syslogに送信するデフォルトのロギングがトリガーされます。
最後に、新しいファイル/etc/logrotate.d/ovpnを作成し、そのファイルに以下の内容を追加します。これは、毎週のローテーションを行うか、ログファイルのサイズが100Mになったらローテーションします。 4週間保持し、最後の2つを除くすべてを圧縮します。
/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がすぐに作成されるのが見えるはずです。
上記の例ではレガシーrsyslog構文を使用しているようです。ドキュメントには、これが現在の構文になると書かれています:
if $programname startswith 'ovpn-' then /var/log/openvpn/ovpn.log
& ~
私はそれをテストしましたが、私のために動作します(TM)。