Capture arquivos com logrot na mudança

0

Isso é algo muito especial, mas aposto que você pode me ajudar.

Estou trabalhando em um ambiente onde muitos arquivos de log são gerados e girados, principalmente a partir do Java-services runnning. Como estamos realizando testes de L & P nesse ambiente, muitas vezes o sistema gera mais arquivos do que os mantidos pelo logrotation. Agora preciso de uma maneira de arquivar os logs rotacionados antes que eles sejam excluídos, para poder ter todos os logs gerados durante o teste.

Mas eu não tenho as permissões para alterar o logrotation de qualquer forma, então eu tenho que fazê-lo com bash e ferramentas básicas do UNIX. Além disso, como os testes de desempenho e de carga, a solução precisa de um espaço absolutamente pequeno em relação ao uso da CPU e da memória.

Primeiro eu considerei usar um hash como sha1sum para manter o hash e salvar todos os arquivos que foram alterados, mas gerar e verificar o hash parece consumir um pouco de tempo e CPU.

Esta questão não é necessariamente sobre código real, mas sobre um conceito - embora um exemplo de código seja muito bem-vindo.

    
por Oliver Friedrich 10.01.2014 / 11:11

1 resposta

1

Você deve usar informações recentes . Está nos repositórios das distribuições da família Debian. Se você estiver em outra distro, provavelmente poderá compilar a partir da fonte.

SYNOPSIS

inoticoming [ global-options ] directory actions*

DESCRIPTION

Inoticoming is a daemon to watch a directory with Linux's inotify framework and trigger actions once files with specific names are placed in there.

Você pode usá-lo da seguinte maneira:

   inotcoming --initialsearch /directory/with/log/files --regexp \
   last_log_rotate_file10.txt mv {} /directory/to/store/log_rotate_files/'date +"%T"' \;

A ação deve ser terminada por \; ;

a opção - initialsearch executa a seguinte ação assim que o daemon iniciar;

o - regexp precede uma expressão regular a ser satisfeita pelo nome do arquivo que você deseja armazenar em outro lugar; aqui eu assumi que você sabe que o 10º log_rotate_file é o último que será mantido pelo seu sistema;

então o comando segue, com {} identificando o nome do arquivo que foi correspondido pela opção - regexp , e eu assumi que você vai querer mover o arquivo para um novo diretório, com um nome que reflete o tempo da operação. Você pode ajustar isso à vontade.

    
por 10.01.2014 / 12:44