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.

Eu 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, uso da CPU, memória alocada (virtual) e memória residente (ram).

Se esses relatórios periódicos fossem examinados, 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, e será manipulado por um script de qualquer maneira e pode ser modificado em qualquer coisa que eu precise.

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

Deve ser um problema simples, eu já posso ver todas essas informações simplesmente olhando para o meu htop, mas eu preciso apenas de uma ferramenta que irá reunir os campos desejados para cada processo a cada 10 minutos, e então também me deixe extrair fatias desse dados baseados em escopos de data / hora (intervalos).

Nota: Eu tenho pouca experiência com o Linux, por isso, forneça informações detalhadas.

nota 2: 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.

Inbar Rose
fonte
Eu acredito que o collectd pode fazer o que você quiser. collectd.org Produzirá arquivos rrdtool, que você pode fazer no gráfico.
Derobert

Respostas:

8

Tente 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 visualizar o conteúdo do arquivo de log padrão atual interativamente. É como htopcom algumas informações extras de I / O que permitem que você volte no tempo e veja o que aconteceu nesses momentos. Pressione tpara avançar e Shift+ tpara 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 sobre o que escrever nos arquivos brutos.

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

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

sobre tela

gertvdijk
fonte
Parece um bom começo - mas isso pode suportar o tipo de acesso que eu preciso? via - data / hora escopo (intervalo) de acesso? se não, terá a data / hora da entrada específica para que eu possa fazer minha própria análise? Por quanto tempo mantém informações antigas? Posso decidir quais informações são coletadas?
Inbar Rose
2
@InbarRose Isso é apenas RTFM imo como já indiquei na minha resposta. Eu sugiro fazer uma pergunta mais específica se você não conseguir fazer o que você quer.
gertvdijk