Como posso configurar o logrotate para copiar / arquivos de log do SSH apache

4

Estou trabalhando em um analisador de logs do apache, ele exige que os arquivos de log do apache sejam importados para um diretório para processamento. Não posso simplesmente apontá-lo para o diretório de logs do apache, pois ele importa cada arquivo antes de excluí-lo. Ele também não tem nenhum conceito de registros duplicados, portanto não posso configurar um cron para copiar /var/log/apache2/* na pasta.

Eu suponho que logrotate é o melhor lugar para fazer isso, mas eu não tenho a menor idéia de onde começar a configurá-lo. Então minha pergunta é:

Como posso configurar o logrotate para arquivos de log roteados do SSH para um host remoto automaticamente?

A alternativa é copiar localmente e executar scp & amp; rm via cron, mas um processo SSH de uma etapa seria bom.

    
por Stephen RC 15.08.2012 / 13:40

1 resposta

5

Veja as opções de configuração prerotate e postrotate (exemplos em man logrotate ). Por exemplo, você poderia ter um prerotado que scps o arquivo (certifique-se de configurar as chaves SSH corretamente; seu usuário root deve ser capaz de ssh para o sistema de destino sem precisar de uma senha). Isso iria copiar o arquivo access.log antes de rotacionar (renomear, compactar, etc) ele.

Note que, neste caso, você perderia todos os acessos que acontecessem entre a cópia do arquivo e a etapa de rotação, assim você também poderia colocar isso na seção postrotate, mas copiar access.log.1.

em / etc / logrotate / apache2 (isso pode ser diferente, eu só tenho acesso a um sistema Debian) você pode adicionar a seção de prerotação para que o conteúdo do arquivo seja assim:

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        /etc/init.d/apache2 reload > /dev/null
    endscript
    prerotate
        scp /var/log/apache2/access.log [email protected]
    endscript
}
    
por roadmr 15.08.2012 / 15:33

Tags