Como registrar o uso de memória por minuto no Ubuntu Server?

2

Eu verifiquei alguns programas, como o comando htop ou top, mas não encontrei nenhum recurso para registro por minuto.

Existe uma maneira de fazer isso para rastrear problemas de memória?

edit: Eu estava usando o linode e decidi usar o Longview.

    
por motto 14.03.2013 / 12:13

5 respostas

7

Instale e configure o pacote sysstat , que faz exatamente o que você está pedindo.

sudo apt-get install sysstat
    
por Mike Scott 14.03.2013 / 12:22
3

Se eu estivesse fazendo isso, eu provavelmente criaria um script com o RRDtool .

RRDtool é algo que é construído para coleta de dados baseada em intervalo e, em seguida, a criação de gráficos na parte de trás dos dados. Se você já viu um netgraph em um painel de controle do ISP, provavelmente foi feito com o RRDtool.

Como você implementa isso é com você. Existem soluções bash "puras" com o cron, mas também há boas opções de Python e Perl por aí:

  • link

    Tanto quanto eu posso ver, isso atualiza uma imagem em um local definido. Isso pode estar no seu servidor ou ser descartado pelo NFS em seu homedir.

  • link

    Isso mantém seu próprio temporizador e faz praticamente o que você quiser. Eu prefiro isso para bater porque é mais fácil picar, mas o que flutua o seu barco. Provavelmente é mais difícil para um não-Pythoneer se preparar.

Se você quiser muito mais do que isso, confira Munin. Isso usa o RRDtool prolificamente para registrar uma carga inteira de dados do sistema e gera páginas HTML estáticas em um intervalo definido.

    
por Oli 14.03.2013 / 12:21
3

Existe mais uma maneira de fazer isso. Ao usar trabalhos cron, podemos obter isso.

* * * * * username /path/to/./script.sh

o script é simplesmente

#!/bin/bash
echo "$(date +%Y%m%d-%H%M%S) $(free -mt | awk 'END{print }')" >> ~/memlog.txt

antes de colocar o script

chmod +x script.sh

para criar um script acima e faça como eu disse, coloque o script na localização / usr / bin. em seguida, abra seu /etc/crontab com

sudo nano /etc/crontab

e coloque a primeira linha lá. Esse script é executado a cada minuto e fornece detalhes de memória para cada minuto.

Então, finalmente, esse arquivo log.txt conterá os detalhes do log da Memória para cada minuto.

e tenho mais uma informação útil para você que

watch cat log.txt mostrará o arquivo log.txt no terminal e ele atualizará o conteúdo ao vivo.assim, no próprio terminal atual, com uma única digitação, você pode ter uma exibição ao vivo do arquivo log.txt.

    
por rɑːdʒɑ 14.03.2013 / 14:55
3

vmstat -S M 60 faria (em megabytes).

Você só precisa lembrar que a RAM livre é "free + cache + buf".

Para fins de registro, pode ser útil imprimir o registro de data e hora, o que pode ser feito de várias maneiras, por exemplo. g .:

vmstat -nS M 60 | while read _vmstat; do echo $(date --rfc-3339=seconds) $_vmstat; done

    
por poige 14.03.2013 / 16:24
1

Aqui meu truque. Com este comando eu adiciono relatórios de free, vmstat e top em arquivos txt a cada 5s.

 watch -n 5 'free -mt  >> free-report.txt && vmstat -S M >> vm-report.txt && top -b -n1 >> top-report.txt'
    
por user1922625 06.02.2015 / 10:38