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

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

[ Hits: 4.435 ]

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

Cadastro SHELL SCRIPT/MySQL/PHP

Firewall Pessoal (iptables)

Agenda desenvolvida em Shell Script

Firewall avançado

Cronometro em shell


  

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