summary: Eu quero evitar que o log principal de um cliente OpenVPN preencha seu sistema de arquivos, mas também preciso manter um nível de depuração razoavelmente alto (pelo menos por enquanto). Minha tentativa de logrotate
no momento não está se comportando como pretendido (embora esteja se comportando de acordo com as instruções: - (
detalhes:
Eu definitivamente não sou um administrador Linux, então sinta-se à vontade para corrigir qualquer erro ou erro de interpretação embaixo. Eu tenho um laptop com
$ 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
em que estou configurando um cliente OpenVPN pela primeira vez. O cliente ainda não está funcionando, então eu preciso manter meu log do OpenVPN @ /var/log/openvpn.log
bastante informativo. Infelizmente comecei a receber a notificação = Low Disk Space on "Filesystem root"
, já que tenho /var
no meu volume raiz do LVM2. Depois de excluir manualmente /var/log/openvpn.log
algumas vezes, decidi "tempo para aprender a usar logrotate
". Depois de ler um pouco, criei /etc/cron.hourly/logrotate
com
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
e anexou a sub-rotina de /var/log/openvpn.log
abaixo ao meu /etc/logrotate.conf
(ou seja, tudo antes de # for OpenVPN client
estar no /etc/logrotate.conf
instalado pelo debian):
# 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
}
Ou seja, minha intenção era que
-
cron
executaria logrotate
de hora em hora.
- Quando
/var/log/openvpn.log
for maior que 100 MB, logrotate
será copytruncate
it (para permitir que process = openvpn
continue a gravar o arquivo de log original).
- Cada seção
copytruncate
d log teria o registro de data e hora com o formato = %Y%m%d_%H%M
(que funciona na linha de comando com date +%Y%m%d_%H%M
)
- Cada seção
copytruncate
d log seria compactada; Estou usando delaycompress
, pois parece mais seguro do que não usá-lo: -)
- Eu manteria até 5 seções de log e, portanto, não mais do que 500 MB de log do OpenVPN. (E esperamos que menos, já que estou comprimindo).
Infelizmente, ainda estou recebendo as notificações completas, com situações como
$ 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% /
...
Então eu tenho 3 perguntas, em ordem crescente de importância (para mim):
- Por que
logrotate
do carimbo de data é incorretamente? Por que está criando openvpn.log-20150306_%H%M
em vez de openvpn.log-20150306_1421
?
- Por que
logrotate
está criando um segmento de arquivo de log de 5 GB, em vez de rotacionar @ 100 MB conforme determinado?
- Qual a melhor forma de corrigir este problema?