Monitoramento de uso de CPU em servidores AIX

Monitoramento de uso de CPU em servidores AIX

Para monitorar o uso da CPU em um servidor AIX estou usando o seguinte script que é executado a cada 10 minutos.

lparstat 2 10 > cpu
usage=$(tail -10 cpu | awk 'BEGIN {sum=0;} {sum+=$4} END{print int(100-sum/10)}')


if [[ $usage -ge 90 ]]; then
# mail the error and cpu file to admin
# displaying this for testing purposes
echo "CPU usage off the charts!!!"
cat cpu
fi

Porém, caso o uso da CPU esteja acima de 90%, preciso listar os 5 principais processos que estão usando a CPU.

Como faço para conseguir isso?

Responder1

Você pode listar os 5 primeiros de uma forma bastante legível, limitando as colunas, classificando-as primeiro com o maior uso de CPU e depois truncando para os 5 primeiros (usando head -6, já que também queremos incluir os cabeçalhos):

ps -eo pcpu,pid,args | sort -k 1 -r | head -6

A saída é mais ou menos assim:

%CPU   PID COMMAND
 2.0 30531 -bash
 0.0 30673 head -6
 0.0 30672 sort -k 1 -r
 0.0 30671 ps -eo pcpu,pid,args
 0.0 30670 [flush-253:0]

Você também pode querer dar uma olhada no topmodo batch do GNU ( -b).

Responder2

Para um mergulho profundo, o melhor curso de ação aqui é correr

tprof -skex sleep 10

que fornecerá um relatório detalhando os processos que usam alta CPU e, em seguida, detalhará o uso por função e bibliotecas compartilhadas.

Responder3

você pode usar o comando abaixo, ele corresponderá à saída do topas

ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15

informação relacionada