Monitore vários servidores ao mesmo tempo com Apache + shellscript
Publicado por Roberto Fettuccia (última atualização em 22/03/2012)
[ Hits: 4.786 ]
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---------
Usando netstat para verificar conexões e portas
ipshow - exibir informações de sua rede
Script para modificar Encoding de UTF-8 para ISO-8859-1
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Não consigo instalar distro antiga no virtualbox nem direto no hd (25)
queria saber como posso alterar a frequencia do meu ryzen 2300u pro (3)









