Monitore vários servidores ao mesmo tempo com Apache + shellscript
Publicado por Roberto Fettuccia (última atualização em 22/03/2012)
[ Hits: 4.571 ]
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---------
Manipulação de contas de email com o postfix
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Quebra de linha na data e hora no Linux Mint
Organizando seus PDF com o Zotero
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (9)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)