Estou tentando alternar os arquivos de log do OpenVPNs todos os meses. O problema parece ser que simplesmente renomear os arquivos não resolve. Os dados ainda são gravados no arquivo antigo (o que indica que o arquivo de log é mantido aberto e o log ainda grava no objeto de arquivo antigo).
Então agora eu escrevi um script que reinicia o openvpn no início de cada mês depois de atualizar um link simbólico para o local do novo arquivo de log.
Mas esse script parece ter bugs e às vezes falha ao iniciar o servidor corretamente (às vezes o tun0 fica inativo).
Então, gostaria de perguntar se algum de vocês conhece uma maneira melhor de conseguir a rotação de logs no OpenVPN?
Editar: Estou usando o Debian Squeeze e meu script de reinicialização já dorme 5 segundos entre parar e iniciar o ovpn
servidor
Responder1
Existem dois métodos para lidar com esta situação. A forma ideal é fazer com que o logrotate notifique o processo, seja via sinal ou reiniciando o processo via postrotate
diretiva. A outra maneira é usar o copytruncate
. O copytruncate
método deve funcionar na sua situação. Aqui está a descrição da documentação:
copytruncate
Truncate the original log file in place after creating a copy,
instead of moving the old log file and optionally creating a new
one, It can be used when some program can not be told to close
its logfile and thus might continue writing (appending) to the
previous log file forever. Note that there is a very small time
slice between copying the file and truncating it, so some log-
ging data might be lost. When this option is used, the create
option will have no effect, as the old log file stays in place.
Responder2
Que tal uma solução alternativa para fazer login no syslog?
Veja o uso --daemon [progname]
(ou --syslog [progname]
) em man openvpn
(http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html)