Minha primeira inclinação aqui seria algo embutido no SAR, ou no pacote sysstat em geral. Se esse for realmente o caso, não consigo encontrar essa solução.
O que eu gostaria de ver, e de preferência através do sysstat, se possível, é um log histórico de uso do processo (memória, CPU, etc.) no mesmo formato dos logs SAR (se ainda não estiver disponível diretamente através de arquivos SAR de alguma forma). Eu sei que o software de monitoramento está disponível, mas estou procurando um pacote principalmente não intrusivo e, na verdade, algo que possa ser analisado de forma relativamente intuitiva via statsd/collectd.
Responder1
Execute o comando sar como um processo em segundo plano. A sintaxe para isso é:
sar -o datafile interval count >/dev/null 2>&1 &
Todos os dados são capturados em formato binário e salvos em um arquivo (datafile). Os dados podem então ser exibidos seletivamente com o comando sar usando a opção -f. Defina os parâmetros de intervalo e contagem para selecionar registros de contagem em intervalos de segundos. Se o parâmetro de contagem não estiver definido, todos os registros salvos no arquivo serão selecionados. A coleta de dados dessa maneira é útil para caracterizar o uso do sistema durante um período de tempo e determinar horários de pico de uso.
Responder2
Você pode usar um loop while burro que imprime o uso de recursos dos principais processos a cada 5 minutos.
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pcpu | head;
echo;
sleep 300;
done
O texto acima exibirá os 9 principais processos que estão usando mais CPU. Para obter os 9 principais processos que usam mais memória, use:
while true; do
date;
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-pmem | head;
echo;
sleep 300;
done
Exemplo
O exemplo de saída a seguir mostra que o Apache é claramente nosso processo que mais consome CPU.
Sun Jan 28 23:46:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.7
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.5
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Sun Jan 28 23:51:28 UTC 2024
PID PPID CMD %MEM %CPU
25130 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.6
12878 11432 /usr/sbin/httpd -DFOREGROUN 0.2 2.4
23903 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.4
898 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
902 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
910 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
8397 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
9263 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
23911 11432 /usr/sbin/httpd -DFOREGROUN 0.1 2.2
Limitações
Obviamente, isso é uma droga porque só lhe dirá oinstantâneouso de recursos no momento exato em que o comando é executado (a cada 5 minutos).
Idealmente, ele informaria o uso médio de recursos ao longo dointervalode tempo entre as saídas. Mas, visto que esta resposta está aberta há 7 anos e não há uma boa resposta - é melhor do que nada.
Deixe-o funcionando durante a noite em uma screen
sessão e pela manhã você terá uma visão melhor (com o mínimo de esforço).