linux: monitor por processo, a cada 10 minutos, com acesso ao histórico

5

Eu realmente não sabia a melhor maneira de fazer a minha pergunta, daí você recebe uma pergunta horrivelmente nomeada.

Vou explicar o que eu quero fazer, talvez isso ajude você a me ajudar.

Eu gostaria que minha máquina Linux monitorasse continuamente (a cada 10 minutos) todos os processos da minha máquina. As informações de cada processo que eu preciso é o nome, o uso da CPU, memória alocada (virtual) e memória residente (ram).

Se esses relatórios periódicos fossem analisados, eles se pareceriam com algo assim:

PROCESS    CPU    RAM    VIRTUAL
name1    %    MB    MB
name2    %    MB    MB
...etc..etc

Esses relatórios devem ser armazenados de forma que eu possa acessá-los em uma data posterior, fornecendo um escopo de data / hora (intervalo). Por exemplo, se eu quiser ver o histórico dos meus processos a partir das 12:00:00 de 1.12.12 até às 12:00:00 2.12.12 eu posso - e deve dar-me a história dos processos para cada 10 minutos entre aqueles bordas de data / hora.

O formato do retorno não é importante, pois será manipulado por um script e pode ser modificado em qualquer coisa que eu precise.

Examinei algumas coisas até agora, mas não encontrei algo que atenda claramente às minhas necessidades. Entre as coisas que eu procurei: sar , grátis (1) , top (1) .. e algumas outras coisas.

Deve ser um problema simples, já posso ver todas essas informações simplesmente olhando meu htop , mas preciso apenas de uma ferramenta que reúna os campos desejados para cada processo a cada 10 minutos e, depois, também deixe-me extrair fatias desses dados com base em escopos de data / hora (intervalos).

nota: tenho experiência limitada com o linux, por isso, forneça informações detalhadas.

note2: A saída desejada será algo assim (depois de receber o intervalo desejado)

CPU USAGE BY PROCESS:
proc_nameA 1,2,2,2,2,2...... numbers represent % usage every 10 minutes...
proc_nameB 4,3,3,6,1,2......

A mesma ideia com as outras informações.

    
por Inbar Rose 04.12.2012 / 14:43

1 resposta

8

Experimente atop .

Ele registrará todas essas informações do sistema a cada 5 ou 10 minutos (dependendo do que sua distribuição escolheu para você) como um daemon e as colocará em arquivos binários. Então use

atop -r

Para exibir o conteúdo do arquivo de log padrão atual de forma interativa. É como htop com algumas informações extras de I / O que permitem que você volte no tempo e veja o que aconteceu nesses momentos. Pressione t para avançar e Shift + t para voltar.

Você também pode apontar para um intervalo de tempo específico. A partir do manpage:

With the flag -b (begin time) and/or -e (end time) followed by a time argument
of the form HH:MM, a certain time period within the raw file can be selected.

Não é apenas configurável no que escrever nos arquivos brutos.

Eu sugiro que você leia mais sobre o manpage do topo, para começar, por exemplo lendo o conteúdo do logfile de ontem.

Veja como minha máquina 'zarafa' estava tocando esta manhã entre 7:35:40 e 7:45:40:

    
por 04.12.2012 / 14:56