É possível programar um script python para rodar no final do logrotate?

1

Estou usando o Piwik Analytics em um site que não executa nenhum javascript e prefiro que os dados sejam criados a partir dos registros de acesso e não do rastreador de imagens. Os resultados dos registros são realmente melhores porque podem incluir arquivos estáticos downloads.

Este é um servidor LEMP com o Ubuntu 12.04 e o nginx 1.4.5.

O script python está localizado em /var/www/example1.com/public/piwik/misc/log-analytics/import-logs.py e precisaria ser executado com várias opções. O log de acesso está localizado em /var/www/example2.com/logs/access.log.1 .

A parte relevante de /etc/logrotate.d/nginx contém:

/var/www/*/logs/*.log {
   daily
   missingok
   rotate 36500
   compress
   delaycompress
   notifempty
   create 0640 www-data adm
   sharedscripts
   prerotate
       if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
           run-parts /etc/logrotate.d/httpd-prerotate; \
       fi; \
   endscript
   postrotate
                [ -s /run/nginx.pid ] && kill -USR1 'cat /run/nginx.pid'
        endscript
}

Eu não sei como integrar um script python de forma que ele seja executado no final (depois que as rotações forem concluídas).

Editar:

Um problema adicional que não considerei inicialmente é que esse script só precisa ser executado em um domínio - o restante dos domínios no servidor não exige o script. O arquivo acima eu criei para que ele rodasse automaticamente os logs de todos os domínios adicionados ao servidor sem precisar editar /etc/logrotate.d/nginx .

    
por Paul 01.03.2014 / 23:43

1 resposta

3

Você pode colocar o comando que deseja executar entre as linhas postrotate e endscript (lembre-se de manter a linha lá):

   postrotate
      [ -s /run/nginx.pid ] && kill -USR1 'cat /run/nginx.pid'
      /usr/bin/python /var/www/example1.com/public/piwik/misc/log-analytics/import-logs.py somearguments
   endscript
    
por 02.03.2014 / 00:02