Monitore vários servidores ao mesmo tempo com Apache + shellscript

Publicado por Roberto Fettuccia (última atualização em 22/03/2012)

[ Hits: 4.751 ]

Download monitor-web.tar




Pessoal estou aqui para compartilhar uma solução desenvolvida por mim mesmo, após inúmeros problemas com alguns servidores acabei por desenvolver um "sisteminha" em shell script.

Objetivo :
O sistema tem por objetivo de realizar determinado teste e retornar o erro, publicando em uma página web que fica atualizando de segundo em segundo, ficando assim um monitoramento em tempo real.

- Instale o apache
- Crie uma pasta dentro de /var/www/monitor
- Verifique as permissões da pasta criada, certifique-se que está com permissão de escrita..
- Instale no diretório /var/www/ os arquivos "html" fornecidos no artigo..

Copie os scripts para /bin

Certifique as permissões 555 para os scripts..

Observe se a página no apache apareceu no navegador  http://192.168.0.1/monitor/index.html

Modo de uso:

Chame o script tester no terminal da mesma máquina com  o script, com a seguinte sintaxe..
$ tester [nome do servidor] [ip] [service] [status] [tabela1.html]

Obs: vc criará para cada teste a saída com nome diferente, está configurado no arquivo index.html o link da tabela1.html até tabela20.html,

EX:
teste monitoramento 1 :  $tester "proxy server" 10.12.0.1 Proxy tabela1.html  
teste monitoramento 2 :  $tester "apache server" 10.12.0.2 Apache tabela2.html
teste monitoramento 3 :  $tester "SQLserver" 10.12.0.3 Sql tabela3.html    

Nesta primeira versão o tester somente está realizando um teste de ping com 3 saltos, o tester repassa o resultado do teste para o monitor que desenha a tabela X linkada a página index.html

Estarei analisando outras metodologias para conseguir monitorar determinados serviços, assim podendo ficar mais completo e usual, este sistema pode ser muito útil a provedores.

Façam bom proveito!!!

By Roberto Fettuccia

  



Esconder código-fonte

------------Script monitor--------------

#!/bin/bash
clear
semntr="$1"
ipmntr="$2"
stmntr="$4"
scmntr="$3"
Xouthtm="$5"
wwwroot="/var/www/monitor"
varmktemp="$(echo $$)"
main(){

if [ "$1" == "--help" ]; then
fun.help
fi

if [ -z "$semntr" ] || [ -z "$ipmntr" ] || [ -z "$scmntr" ] || [ -z "$stmntr" ] || [ -z "$Xouthtm" ]; then
   if [ -z "$semntr" ] ; then
   echo "Error change NAME string valid!...."
   fi   
      
   if [ -z "$ipmntr" ]; then
   echo "Error change IP string valid!...."
   fi

   if [ -z "$scmntr" ]; then
   echo "Error change SERVICE string valid!...."
   fi
      
   if [ -z "$stmntr" ] || [ "0" =! "$stmntr" ] || [ "1" =! "$stmntr" ] ; then
   echo "Error change STATUS vallue valid!....
   0 = service error or offline
   1 = service ok, online"   
   fi
      
   if [ -z "$Xouthtm" ]; then
   echo "Error change OUTFILE string valid!...."
   fi
fun.help
else
fun.publica
fi
}


fun.publica(){
unset vxhtm
unset updownservice

#verify return status for fized color string to $stmntr
if [ $stmntr == "0" ]; then
   updownservice="#FFFF00" # Yellow Vallue
   varSTATUS="ERROR"       # message error
   strBEG="<b>"         # Apply Bold "negrito"
   strEOF="</b>"           # 
   Xcontrast="#000000"
   else
   updownservice="#0000FF" # blue Vallue
   varSTATUS="OK"
   strBEG=""
   strEOF=""
   Xcontrast="#FFFFFF"
fi

export vxhtm='<META HTTP-EQUIV="REFRESH" CONTENT="5">
<body>
<!--tabela dados inicio-->
<TABLE WIDTH=100% CELLPADDING=4 CELLSPACING=0 #0000ff>
   <COL WIDTH=85*>
   <COL WIDTH=85*>
   <COL WIDTH=85*>
   <TR VALIGN=TOP>
      <TD WIDTH=25% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
<!--Servidor--><P STYLE="background: '$Xcontrast'"><FONT COLOR="'$updownservice'">'$strBEG''$semntr''$strEOF'</P>
      </TD>
      <TD WIDTH=25% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
<!--IP--><P STYLE="background: '$Xcontrast'"><FONT COLOR="'$updownservice'">'$strBEG''$ipmntr''$strEOF'</P>
      </TD>
      <TD WIDTH=25% STYLE="border: 1px solid #000000; padding: 0.1cm">
<!--Serviço--><P STYLE="background: '$Xcontrast'"><FONT COLOR="'$updownservice'">'$strBEG''$scmntr''$strEOF'</P>      
      </TD>       
      <TD WIDTH=25% STYLE="border: 1px solid #000000; padding: 0.1cm">
<!--Status--><P STYLE="background: '$Xcontrast'"><FONT COLOR="'$updownservice'">'$strBEG''$varSTATUS''$strEOF'</FONT></P> 
      </TD>
   </TR>
</TABLE>
<!--tabela dados fim-->
</body>'


echo "$vxhtm" > $wwwroot/tmp/$varmktemp.tmp

mv $wwwroot/tmp/$varmktemp.tmp $wwwroot/"$Xouthtm"
}

fun.help(){
echo "
Usage ..
monitor [name] [ip] [service] [status] [outfile HTML]

mail contact : rpaulafettuccia@yahoo.com.br
by Roberto Fettuccia"
exit
}

main

------------fim script monitor-------------------

----------script tester----------------
#!/bin/bash
ping -c 3 $2 && vtest="1"

if [ -z $vtest ] || [ $vtest =! "1" ]; then
vtest="0"
fi




./monitor "$1" "$2" "$3" "$vtest" "$4"
--------------fim script tester--------------


arquivo para colocar no apache /var/www/monitor

--------arquivo cabecalho.html--------
<BODY LANG="pt-BR" DIR="LTR">
<P ALIGN=CENTER><BR>
</P>
<P ALIGN=CENTER><B>MONITOR Web</B></P>
<P ALIGN=CENTER><B>Ver 1,0 By Roberto Fettuccia</B></P>
<P ALIGN=CENTER><BR><BR></P>
<!--tabela cabeçalho inicio-->
<TABLE WIDTH=100% CELLPADDING=4 CELLSPACING=0>
   <COL WIDTH=85*>
   <COL WIDTH=85*>
   <COL WIDTH=85*>
   <TR VALIGN=TOP>
      <TD WIDTH=25% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
         <P><B>SERVIDOR</B></P>
      </TD>
      <TD WIDTH=25% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
         <P><B>IP</B></P>
      </TD>
      <TD WIDTH=25% STYLE="border: 1px solid #000000; padding: 0.1cm">
         <P><B>SERVIÇO</B></P>
      </TD>
      <TD WIDTH=25% STYLE="border: 1px solid #000000; padding: 0.1cm">
         <P><B>STATUS</B></P>
      </TD>
   </TR>
</TABLE>

<!--tabela cabeçalho fim-->
</body>
--------fim arquivo cabecalho.html--------

--------inicio arquivo index.html---------
<HTML>
<HEAD>
   <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
   <META HTTP-EQUIV="REFRESH" CONTENT="3">   
   <TITLE>monitoramento de servicos</TITLE>
   
   <STYLE TYPE="text/css">
   </STYLE>
</HEAD>
<FRAMESET ROWS="45%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%,10%" FRAMEBORDER="0" FRAMESPACING="0">
<FRAME SRC="./cabecalho.html" NAME="superior" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela1.html" NAME="tb1" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela2.html" NAME="tb2" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela3.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela4.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela5.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela6.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela7.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela8.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela9.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela10.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela11.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela12.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela13.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela14.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela15.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela16.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela17.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela18.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela19.html" NAME="tb3" NORESIZE SCROLLING="NO">
<FRAME SRC="./tabela20.html" NAME="tb3" NORESIZE SCROLLING="NO">
</FRAMESET>
</BODY>
</HTML>
--------fim arquivo index.html---------

Scripts recomendados

Raízes da equação de segundo grau (Bhaskara) através do prompt em shell

Limpar arquivos temporários

DHCP Configurator

Ajuste Dinâmico do Governador de CPU no Linux

Gerenciador Simples de Empresa


  

Comentários
[1] Comentário enviado por Adonist em 22/03/2012 - 23:12h

Muito bom
vc poderia postar uma screen para vermos o resultado ?
Parabéns ai, ótima postagem.

[2] Comentário enviado por laerciomotta em 23/03/2012 - 10:29h

Já tinha pensado em fazer algo do genero mais nunca comecei...
Que tal tentar usar PHP?? Tem uma função "exec" que vc poderia executar esse script
Antes de abrir a página.. Se usar um BD ou arquivo texto poderia ser bem interessante..
Quem sabe se tiver um tempo aqui não faço algo e te envio =)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts