Monitore vários servidores ao mesmo tempo com Apache + shellscript
Publicado por Roberto Fettuccia (última atualização em 22/03/2012)
[ Hits: 4.687 ]
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
------------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---------
Script para rodar software Mr Bayes em paralelo
Zentheme-Install - Instala e desinstala temas usando interface gráfica
Alta disponibilidade de Links com CentOS 6
Rotina para backup diário, semanal e mensal (exemplo para Firebird)
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Secure boot, artigo interessante, nada técnico. (1)
Preciso recuperar videos *.mp4 corrompidos (1)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (6)









