Em máquinas com plataforma
Linux, existe a possibilidade de criarmos um script e executarmos a qualquer momento, ou agendarmos o mesmo no crontab do servidor.
Vamos criar um exemplo onde precisaremos ver o resultado no mesmo momento, ou seja, depois falamos sobre "Agendamento de Jobs no Crontab".
Ao ponto:
Conecte-se via SSH à máquina Linux em questão. Caso ainda não tenha feito, logue-se na área de hospedagem de um site instalado nessa máquina.
Acesse o diretório onde você deseja armazenar o script que criaremos e o arquivo com o resultado.
Por exemplo: /home/cristianomiran/public_html/scripts
Crie com o "vi" um arquivo nomeando somente de "monitoracao", por exemplo, e coloque o conteúdo abaixo:
#!/bin/bash
mfree=0
mswal=0
mtotal=0
stotal=0
contador=0
tempototal=0
Hora() {
echo -n "Hora: "
date +"%H:%M:%S"
echo -e " \n "
}
CPU() {
top -b -n1 | grep total | awk '{print "CPU Livre: "$8}'
echo -e " \n "
}
Load() {
cat /proc/loadavg | awk '{print "Load Average: " $1 " " $2 " " $3}';
echo -e " \n "
}
Cabecalho() {
echo -e "Informações do Servidor .:"
echo -e " \n "
echo -n "PHP:"
php -version | cut -d'(' -f1 | awk 'NR==1' | sed "s/[A-Z]//g"
echo -n "MySQL: "
mysql -version | cut -d',' -f1 | sed "s/ /\n/g" | tail -n 1
mtotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
stotal=$(grep SwapTotal /proc/meminfo | awk '{print $2}')
mtotal=$((mtotal / 1024))
stotal=$((stotal / 1024))
echo -e "Swap Total: $stotal MB"
echo -e "Memória Total: $mtotal MB"
uptime | awk '{print "Uptime: "$3 " dias, " $6 " usuário(s) logado(s) "}'
cat /proc/cpuinfo | awk 'NR == 5 {print "Info Processador: "$4 " "$5 " " $6 " " $7 " " $8 " " $9}'
echo -e " \n "
}
Memoria() {
mfree=$(grep MemFree /proc/meminfo | awk '{print $2}')
sfree=$(grep SwapFree: /proc/meminfo | awk '{print $2}')
mfree=$((mfree / 1024))
sfree=$((sfree / 1024))
echo -e "Swap Livre: $sfree MB"
echo -e "Memória Livre: $mfree MB"
echo -e " \n "
}
Linha() {
echo "=============================================="
echo -e " \n "
}
clear
echo -n "Informe o intervalo em segundos da monitoração: "
read intervalo
echo -n "Informe a duração em minutos da monitoração: "
read duracao
echo -e " \n "
Cabecalho
Linha
tempototal=$((60 / intervalo * duracao))
while [ "$contador" -lt $tempototal ];
do
Hora
CPU
Memoria
Load
Linha
contador=$((contador + 1))
if [ $contador != $tempototal ] ; then
sleep $intervalo
fi
done
Após a criação do arquivo acima, vamos executar o mesmo da seguinte forma (digite no prompt/shell):
$ ./monitoria | tee monitoria_teste.txt
Obs: Mesmo sem termos criado previamente o arquivo que receberá o resultado que solicitamos, o qual no exemplo acima está nomeado como "monitoria_teste.txt", este será gerado automaticamente.
A partir do momento que setarmos o comando acima, será nos perguntado:
- Informe o intervalo em segundos da monitoração (poderá responder 60, o que valerá em 60 segundos, por exemplo);
- Informe a duração em minutos da monitoração (poderá responder 60, o que valerá em 01 hora, por exemplo).
O script será executado e nessa condição, o prompt/shell usado não poderá ser fechado até o fim do processo.
Caso precise continuar usando o prompt/shell, abra uma nova instância do software em questão.
Caso queira interromper o processo, basta usar o famoso CTRL + C.
O arquivo será gerado como precisamos, com o conteúdo solicitado e estará no diretório onde foi criado o arquivo principal, o qual nomeamos aqui como "monitoria".
Exemplo do conteúdo inserido no arquivo criado para armazenar as informações solicitadas:
===========================================
Informações do Servidor .:
PHP:Out of memory
MySQL: 5.0.22
Swap Total: 7640 MB
Memória Total: 4054 MB
Uptime: 30 dias, 2 usuário(s) logado(s)
Info Processador: Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
===========================================
Hora: 16:47:25
CPU Livre: 0
CPU Livre: 250292k
CPU Livre: 3180620k
Swap Livre: 7636 MB
Memória Livre: 224 MB
Load Average: 0.28 0.31 0.36
===========================================