要約:OpenVPNクライアントのデフォルトログがファイルシステムを埋めるのを防ぎたいのですが(少なくとも今では)、デバッグレベルをかなり高く保つ必要があります。私の試みはlogrotate
現在期待どおりに機能しません。 (指示どおりに機能することもできますが:-(
詳細:
私はLinux管理者として実力が間違いなく不足しているので、以下に含まれるエラーや誤解を自由に修正してください。私はラップトップを持っています
$ cat /etc/debian_version
jessie/sid
$ uname -rv
3.11-2-amd64 #1 SMP Debian 3.11.8-1 (2013-11-13)
$ sudo openvpn --version | head -1
OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Nov 28 2013
$ sudo logrotate --version | head -1
logrotate 3.8.6
OpenVPNクライアントを設定するのは今回が初めてです。クライアントはまだ機能していないため、ISTM OpenVPNログを@かなり便利な情報に保つ必要があります/var/log/openvpn.log
。残念ながら、Low Disk Space on "Filesystem root"
LVM2/var
ルートボリュームから通知を受け取り始めました。何度も手動で削除した後、/var/log/openvpn.log
「もう使い方を学ぶべき時だったlogrotate
」と決めました。少し読んだ後/etc/cron.hourly/logrotate
作成しました。
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
そして、次のセクションを/var/log/openvpn.log
私のセクションに追加しました/etc/logrotate.conf
(つまり、以前のすべてはDebianのインストール# for OpenVPN client
にありました):/etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
# for OpenVPN client
/var/log/openvpn.log {
missingok
copytruncate
size 100M
rotate 5
dateformat -%Y%m%d_%H%M
dateext
compress
delaycompress
nomail
}
つまり、私の意図は、
cron
毎時間実行されますlogrotate
。/var/log/openvpn.log
100 MBを超えると(プロセスを許可=元のログファイルに記録し続けることlogrotate
ができます)。copytruncate
openvpn
- 各dログセクションには、format =(コマンドラインで使用されている)
copytruncate
としてタイムスタンプが割り当てられます。%Y%m%d_%H%M
date +%Y%m%d_%H%M
- 各d-logセクションは圧縮されています。使用しないよりも安全に見えるので
copytruncate
使用しています。 :-)delaycompress
- 最大5つのログセクションを保持するため、OpenVPNログは500 MBを超えません。 (圧縮中ですので減らしてください。)
残念ながら、まだ次のルートがいっぱいの通知を受け取ります。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/LVM2_crypt-root 20G 20G 0 100% /
udev 10M 0 10M 0% /dev
tmpfs 390M 1.1M 389M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.6G 876K 1.6G 1% /run/shm
/dev/sda3 485M 33M 423M 8% /boot
/dev/mapper/LVM2_crypt-home 322G 228G 95G 71% /home
none 4.0K 0 4.0K 0% /sys/fs/cgroup
$ sudo rm /var/log/openvpn.log
rm: cannot remove ‘/var/log/openvpn.log’: No such file or directory
$ ls -alS /var/log/ | head
total 5521688
-rw------- 1 root root 5636743168 Mar 6 14:21 openvpn.log-20150306_%H%M
...
$ sudo rm /var/log/openvpn.log*
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/LVM2_crypt-root 20G 15G 4.3G 78% /
...
したがって、重要度の高い順に3つの質問があります。
logrotate
タイムスタンプが間違っているのはなぜですか?つまり、なぜ代わりopenvpn.log-20150306_%H%M
に生成されますかopenvpn.log-20150306_1421
?logrotate
指示に従って@ 100MBを回転させるのではなく、5 GBのログファイルセグメントを生成するのはなぜですか?- この問題を解決するための最良の方法は何ですか?
答え1
これは非常に広範な質問です。私はこれらの問題のいくつかを解決しようとします。
インストール後、cron形式の状況で毎日logrotateが呼び出されます。 Centos 7では、/etc/cron.dファイルのdailyエントリ(0daily)を介して呼び出される/etc/cron.dailyでlogrotate呼び出しを見つけることができます。もちろん、毎時間実行するように変更することも、ルートcrontabの特別なエントリからlogrotateを追加で呼び出すこともできます。
マニュアルページを見ると、日付形式に「%Y%m%dと%s指定子のみが許可されています」という制限があることがわかります。したがって、あなたの仕様の質問です。
作成したローテーションファイルは非常に大きく、一日中分量のログのように見えます。これはデータが同じファイルにコピーされるため、仕様エラーが原因である可能性が高くなります。圧縮は現在のサイクルサイクル以降のサイクルでのみ発生するため、デフォルトでは2つの大きなファイルがある可能性があります。 24時間にわたって新しいlogrotateファイルが生成されないため、圧縮は期待どおりに機能しません。
最後に注意すべき点は、いくつかの経験的パッケージには、基本的にこれを実行するlogrotateスクリプトが含まれていることです。これらのエントリは通常、単一のlogrotate.confファイルを使用するのではなく、/etc/logrotate.dの下のファイルに配置されます。 logrotateがデフォルトで実行されると、これらのファイルは/etc/logrotate.confの "include"ディレクティブに含まれます。このインクルードディレクティブは、私が今まで知っているほとんどすべてのlogrotateインストールに存在します。