Capturar arquivos com rotação de log em alterações

0

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

Estou trabalhando em um ambiente em que muitos arquivos de log são gerados e rotacionados, principalmente a partir de serviços em java. Como estamos realizando testes de L&P nesse ambiente, geralmente o sistema gera mais arquivos do que os mantidos pela rotação de log. Agora, preciso de uma maneira de arquivar os logs girados antes de serem excluídos, para poder ter todos os logs gerados durante o teste.

Mas não tenho permissões para alterar a rotação de log de nenhuma maneira, portanto, tenho que fazê-lo com as ferramentas básicas e UNIX básicas. Além disso, como é o teste de carga e desempenho, a solução precisa de uma área absolutamente pequena em relação ao uso da CPU e da memória.

Primeiro, considerei usar um hash como sha1sum para mantê-lo e salvar todos os arquivos que foram alterados, mas gerar e verificar o hash parece um pouco demorado e consome CPU.

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

Oliver Friedrich
fonte

Respostas:

1

Você deve usar inoticoming . Está nos repositórios de distribuição da família Debian. Se você estiver em outra distribuição, provavelmente poderá compilar a partir da fonte.

SINOPSE

ações do diretório inoticoming [opções globais] *

DESCRIÇÃO

Inoticoming é um daemon para assistir a um diretório com a estrutura inotify do Linux e acionar ações quando arquivos com nomes específicos forem colocados lá.

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 encerrada por \;;

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

o --regexp precede uma expressão regular para ser atendida pelo nome do arquivo que você deseja armazenar em outro local; aqui 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ê deseja mover o arquivo para um novo diretório, com um nome refletindo o horário da operação. Você pode ajustar isso à vontade.

MariusMatutiae
fonte
Obrigado por esse. Mas não é exatamente uma solução para mim, porque sou apenas convidado no sistema (estranho, mas é assim). Portanto, não é possível compilar e instalar. Enfim, vou pedir para que esta ferramenta seja instalada.
Oliver Friedrich
@BeowulfOF Você é muito pessimista. Você pode compilá-lo e instalá-lo por conta própria / em casa / executá-lo a partir daí. Eu não acho que haja necessidade de uma instalação em todo o sistema.
MariusMatutiae
Bem, só porque eu poderia, não significa que eu deveria. Nem que eu possa.
Oliver Friedrich