A maneira apropriada de fazer isso é NÃO fazer isso.
A Utilização da CPU (% usada ou% ociosa) é um valor falso para monitorar - pode (e DEVE) ser 100% em vários momentos durante a operação normal. Você realmente quer um monte de alertas porque você recebeu 5-10 solicitações da Web ao mesmo tempo em que seu sistema de monitoramento verificou a utilização da CPU? Eu estou apostando que a resposta é não.
Em vez disso, você deve monitorar Load Average (relatado por uptime
entre outras ferramentas), que é uma medida do número de processos que deseja executar agora (o comprimento de RunQ
em Termos de agendamento do SO).
O valor geralmente é relatado como três valores, média de carga de 1 minuto ("agora"), média de carga de 5 minutos e média de carga de 15 minutos.
As médias de carga abaixo de 1 indicam um sistema "descarregado" (muito tempo de CPU livre, nenhum programa aguardando para ser executado).
Altas médias de carga (sendo "alto" relativo ao número de CPUs que você possui e ao desempenho interativo do seu sistema sob carga) são motivo de preocupação e devem ser investigadas.
Eu normalmente uso 10 como meu limite para alarmes médios de carga - um valor alto o suficiente para que você não o veja normalmente na produção, mas baixo o suficiente para que você tenha tempo de responder à situação quando o alarme disparar. / p>
O script a ser monitorado nos dois casos é trivial:
# [get your value and stuff it into $value
# Pick an appropriate threshold and stuff it into $threshold
if [ $value -gt $threshold ]; then # (-gt or -lt as appropriate)
echo "'hostname' needs attention!" | \
mail -s "'hostname' monitoring alert" user@host
fi
A parte de obtê-e-recheio é deixada como um exercício para o leitor.
Se você realmente quer fazer direito, você deve investigar alguns sistemas de monitoramento e SNMP ...