Monitorando servidores (Windows e Linux)
Antes do artigo em si, queria dizer que estou apresentando um texto onde trato não só de máquinas com plataforma Linux, mas de máquinas com plataforma Windows também, pois acredito que vivemos e dependemos do mundo corporativo de uma forma globalizada, se assim posso dizer, e não existe a necessidade de deixarmos de lado qualquer plataforma pensando que encontraremos pela frente um único cenário.
Parte 2: Monitorando máquinas com plataforma Linux
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:
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:
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:
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
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).
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
===========================================
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
===========================================
Ficou legalzinhu, mas poderia explorar ferramentas mais legais.
Um abraço.