Monitore vários servidores ao mesmo tempo com Apache + shellscript
Publicado por Roberto Fettuccia (última atualização em 22/03/2012)
[ Hits: 4.435 ]
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---------
Cadastro SHELL SCRIPT/MySQL/PHP
Agenda desenvolvida em Shell Script
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Como baixar os drivers de áudio no linux mint? (3)
Adaptador USB WiFi5 DualBand 1300 WiFI AC1300 (Realtek Semiconductor C... (1)
Erro Problema com instalação de Endian Firewall em novo computador. pl... (2)