Log do cliente OpenVPN não 'logrotating'ing como esperado

1

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

  1. cron executaria logrotate de hora em hora.
  2. 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).
  3. 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 )
  4. Cada seção copytruncate d log seria compactada; Estou usando delaycompress , pois parece mais seguro do que não usá-lo: -)
  5. 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):

  1. Por que logrotate do carimbo de data é incorretamente? Por que está criando openvpn.log-20150306_%H%M em vez de openvpn.log-20150306_1421 ?
  2. Por que logrotate está criando um segmento de arquivo de log de 5 GB, em vez de rotacionar @ 100 MB conforme determinado?
  3. Qual a melhor forma de corrigir este problema?
por TomRoche 08.03.2015 / 03:11

1 resposta

1

Esta é uma questão muito ampla. Vou tentar abordar alguns deles.

Como instalado, o logrotate é chamado diariamente por meio de um tipo de situação cron. No Centos 7, você pode encontrar a invocação do logrotate em /etc/cron.daily que é invocado através da entrada diária (0daily) em um arquivo /etc/cron.d. É claro, você pode fazer alterações para rodar isso a cada hora ou fazer mais chamadas para logrotate a partir de entradas especiais no crontab raiz.

Se você olhar a man page, verá que o formato de data tem restrições "Somente os especificadores% Y% m% de% s são permitidos." Assim, o seu problema de especificação.

Parece que o arquivo rotacionado resultante é MUITO grande e parece ser um log de dia inteiro. Isso é mais provável devido ao erro de especificação, pois os dados estão sendo copiados no mesmo arquivo. E como a compactação só ocorrerá em ciclos posteriores àquele atualmente rotacionado, é provável que você tenha basicamente dois arquivos enormes. Como nenhum novo arquivo logrotate seria criado por um período de 24 horas, a compactação não aconteceu como você esperava.

A nota final é que alguns pacotes iluminados agora incluem o script para logrotate que fará isso por padrão. Essas entradas são geralmente colocadas em arquivos em /etc/logrotate.d em vez de usar o arquivo single logrotate.conf. Estes arquivos são então incluídos quando o logrotate é executado por padrão com uma diretiva "include" em /etc/logrotate.conf. Esta diretiva include está presente em quase todas as instalações de logrotate de estoque que eu conheço atualmente.

    
por 08.03.2015 / 04:23