Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Ubuntu Lamborghini Simples
Por Asterion
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Integrando Nagios e Google Maps
Linux user
djcelsodub
24/08/2011
O que passo á relatar é um case real que surgiu de uma necessidade real. Na empresa em que trabalho temos centenas de pontos conectados via VPN site-to-site interligados por roteadores CISCO e que são monitorados pelo Nagios.
Seria ótimo se pudesse visualizar toda a rede VPN e seus status em um mapa, então vamos fazê-lo.
Por: Celso S. Faria
[ Hits: 7340 ]
Conceito: 9.9   6 voto(s)6 voto(s)6 voto(s)6 voto(s)6 voto(s) + quero dar nota ao artigo

Introdução e Instalação

Introdução

O que passo á relatar é um case real que surgiu de uma necessidade real. Procurei ser o mais claro e detalhar ao máximo as informações, justificando a implantação desta integração.

Não vou me ater á descrição, apresentação e instalação do Nagios (http://www.nagios.org) e do Google Maps (http://maps.google.com) pois são aplicações consagradas pela comunidade e dispensam apresentações, além de não ser o foco principal do artigo.

Apenas descreverei o case que agregou agilidade e pró-atividade no monitoramento de uma rede VPN espalhada por 3 cidades.

Na empresa em que trabalho temos centenas de pontos conectados via VPN site-to-site interligados por roteadores CISCO e que são monitorados pelo Nagios.

Porém, quando se tem muitos hosts sendo monitorados, fica difícil visualizar todos os hosts sem ser obrigado á correr a tela manualmente.

Sendo assim pensei: "Seria ótimo se pudesse visualizar toda a rede VPN e seus status em um mapa". Teria visão completa e saberia quais VPN's estão desconectadas, teria como agir pro-ativamente e com agilidade, e que, em caso de queda generalizada em uma determinada área, daria condições de acionar a operadora de internet (que nos atende de forma diferenciada, pela quantidade de links que temos contratados) e passar informações precisas sobre a área atingida de forma muito mais rápida. Antes fazia esse trabalho manualmente e, quer queira, quer não, precisava dedicar vários minutos para levantar todas as informações necessárias para só então repassá-las á operadora.

Uma unidade parada significa transtorno, prejuízo e clientes insatisfeitos e cada minuto é muito significativo nestas situações.

Então fui á luta e descobri que é possível criar um arquivo kml que pode ser importado para o Google Maps e Google Earth, e os pontos são visíveis no mapa terrestre.

Ótimo. Mas não supria nossa necessidade. Teria apenas uma visão simples com a localização geográfica dos pontos sobre o mapa.

Fui novamente a luta, e depois de muito, muito, muito navegar por dezenas (e por quê não dizer centenas) de páginas internacionais (não encontrei nenhum material em páginas nacionais), encontrei uma forma interessante de fazer essa integração e que nos dava a visão dos pontos exatamente como precisávamos, apresentando os hosts como pontos geográficos no mapa em seus estados UP e DOWN em verde e vermelho, respectivamente.

Sem mais delongas, mãos á obra.

Requisitos

  • Nagios 3.2.3 instalado e funcional (não testei em outras versões), com seu código fonte descompactado em um diretório de sua preferência (criei o /downloads para este fim). O código fonte pode ser baixado em http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz;
  • Localização geográfica de cada ponto a ser monitorado, utilizando para conseguir essas informações o site www.mygeoposition.com;
  • Chave da API gerada para o servidor a partir do site http://code.google.com/intl/pt-BR/apis/maps/signup.html (atenção ao gerar a chave da API, a chave deve ser gerada para o nome do servidor e este deve ter resolução de nomes por DNS ou inserido no arquivo hosts, não funcionará se o servidor Nagios for acessado via IP, aconselho utilizar DNS). Neste artigo utilizei o nome fictício "http://nagiosserver" para o servidor Nagios;
  • Acesso á internet para o servidor Nagios (para apresentação do mapa).

Instalação

Acesse a URL do Google Maps citada acima para gerar a chave da API:
Linux: Integrando Nagios e 
Google Maps
Concorde com os termos, informe o nome do servidor como na imagem e clique em "Gerar chave da API".
Linux: Integrando Nagios e 
Google Maps
Esta chave informada será utilizada mais adiante.

Baixe o arquivo statusmap.c.gz a partir do link https://www.monitoringexchange.org/attachment/download/Utilities/AddOn- Projects/Frontends/Google-Map-statusmap-for-Nagios-III/statusmap.c.gz.

Descompacte-o em qualquer diretório de sua preferência (também utilizei o /downloads para este fim).

O mapa, por padrão, está configurado para utilizar 800x500 pixels. Altere como desejar e melhor lhe convir.

Particularmente, preferi utilizar toda a extensão da tela, apenas adequando a área vertical para se encaixar na resolução do meu monitor, a área horizontal ocupará sempre toda extensão do monitor.

Esta alteração é opcional, ignore se quiser manter o padrão citado acima.

Abra o arquivo statusmap.c e edite a linha 1582 para que fique como abaixo:

printf("<div id='map' style='width: 100%; xunits: fraction; height: 500px'></div>");

Correção de bug:

Edite as linhas 2353 e 2355 para fiquem da seguinte forma:

Linha 2353:

rc = sscanf(buf, "%*[ \t]%[^ \t]%*[ \t]%[^\r\n]", key, value);

Linha 2355:

rc = sscanf(buf, "%[^ \t]%*[ \t]%[^\r\n]", key, value);

Salve e saia.

Copie o arquivo editado para o diretório /downloads/nagios-3.2.3/cgi/ e em seguida execute como root:

# make statusmap.cgi

Copie o arquivo statusmap.cgi que foi gerado para o diretório da instalação do Nagios com o comando:

# cp statusmap.cgi /usr/local/nagios/sbin/

Obs.: Se ainda não estiver com o Nagios instalado, apenas copie o arquivo statusmap.c para o local indicado acima e siga com a instalação padrão do Nagios, não sendo necessário executar estes 2 passos acima, pois o arquivo compilado já será instalado por padrão.

Baixe as imagens dos links abaixo dentro do diretório /usr/local/nagios/share/images:

# wget http://www.masterservers.com.br/extras/shadow.png
# wget http://www.masterservers.com.br/extras/green.png

A integração com o Google Maps está pronta, resta indicar os pontos no mapa.
Próxima página >>




Páginas do artigo
   1. Introdução e Instalação
   2. Indicando no Mapa e Concluindo

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por hellnux em 24/08/2011 - 09:48h:

Ótimo artigo! Embora nunca tenha utilizado o Nagios, é interessante a forma que teha conseguido encontrar a solução e compartilhar. Parabéns!

A imagem do maps com os status é verdadeira? É do seu trabalho? Se sim, é muita coisa para gerenciar '.'

[2] Comentário enviado por imasters em 24/08/2011 - 11:35h:

Olá! Gostaria de republicar esse artigo no iMasters. Você pode entrar em contato comigo por email? rina.noronha@imasters.com.br ou redacao@imasters.com.br

Obrigada!

[3] Comentário enviado por djcelsodub em 24/08/2011 - 12:56h:

hellnux:

Primeiramente obrigado!
Sim, a imagem é verdadeira, mantive o mapa sem indicações de cidade e ruas para manter a segurança da minha rede fisicamente mas na forma real aparecem todas as indicações.

imasters:

estou enviando email pra você.

Obrigado.

[4] Comentário enviado por silent-man em 24/08/2011 - 13:36h:

@djcelsodub

ótimo artigo.

Só não entendi o seguinte:

# make statusmap.cgi

Poderia explicar a linha acima?

[5] Comentário enviado por Thalysson S em 24/08/2011 - 14:53h:

Ótimo artigo !



[6] Comentário enviado por djcelsodub em 24/08/2011 - 15:16h:

silent-man:

o arquivo baixado no link é um código em linguagem C.
o make statusmap.cgi vai transformar o código em C em um arquivo CGI que o Nagios executará.

Abs e obrigado.

Thalysson S:

obrigado.

[7] Comentário enviado por silent-man em 24/08/2011 - 15:48h:

@djcelsodub

make statusmap.cgi irá transformá-lo em cgi? hehe sinistro.

# make statusmap.cgi
make: *** No rule to make target `statusmap.cgi'. Stop.

Acredito que antes disso, tem algo. Ou o comando está incompleto.

[8] Comentário enviado por djcelsodub em 24/08/2011 - 16:13h:

silent-man:

O make não está encontrado o target criado pelo ./configure da instalação do nagios.
Entre no diretório principal do código do Nagios e digite ./configure e assim que o processo finalizar acesse novamente o diretório cgi e execute o make novamente. Isto deve resolver.

[9] Comentário enviado por silent-man em 24/08/2011 - 16:14h:

@djcelsodub

Consegui entender o que está acontecendo.

Utilizo CentOS e o nagios foi instalado do repositório rpm deste.

Assim, quando executo o comando em questão dá o erro. Irei compilar o nagios src e executar, depois copio o arquivo statusmap.cgi para o meu servidor de produção, vamos ver no que vai dar.

[]s

[10] Comentário enviado por djcelsodub em 24/08/2011 - 16:16h:

O "transformá-lo em cgi" significa o mesmo que se dizer "transformá-lo em exe", ou seja, em um tipo de executável.

[11] Comentário enviado por djcelsodub em 24/08/2011 - 16:19h:

Exato silent-man.
Com a instalação via rpm também não consegui, por isso indiquei o download do código fonte.
Minha instalação foi em CentOS 5.6 também.

Abs.

[12] Comentário enviado por rfranzen em 24/08/2011 - 16:21h:

@silent-man será que nessa caso (instalações via repositório) não rola pegar um statusmap.cgi já compilado por alguém e só jogar junto com os demais?

[13] Comentário enviado por silent-man em 24/08/2011 - 16:38h:

@rfranzen

É justamente o que estou fazendo!

[14] Comentário enviado por djcelsodub em 24/08/2011 - 16:39h:

rfranzen:

Isso não é possível pois este arquivo statusmap.c que deve ser baixado possui as modificações para a integração com o Google Maps e que o original não possui.

[15] Comentário enviado por silent-man em 24/08/2011 - 16:48h:

@djcelsodub

/usr/lib64/nagios/cgi/statusmap.cgi: /lib/libc.so.6: version `GLIBC_2.7' not found (required by /usr/lib64/nagios/cgi/statusmap.cgi), referer: http://nagios.dominio.br:8080/nagios/menu.html
[Wed Aug 24 16:43:35 2011] [error] [client 10.3.0.68] Premature end of script headers: statusmap.cgi, referer: http://nagios.dominio.br:8080/nagios/menu.html

Ocorreu isto com você?


[16] Comentário enviado por rfranzen em 24/08/2011 - 16:49h:

@silent-man compartilha ele depois ^^

[17] Comentário enviado por djcelsodub em 24/08/2011 - 16:54h:

@silent-man:

Creio estar faltando uma biblioteca.
Está testando em x64?

[18] Comentário enviado por kamushadenes em 24/08/2011 - 20:47h:

Curiosamente, meu Nagios não mostrou mudança alguma :| O que pode ser?

[19] Comentário enviado por kamushadenes em 24/08/2011 - 20:53h:

Ah, descobri. Era só mudar o tipo para Googlemap ;)

Estranho, agora os hosts não aparecem marcados =/

[20] Comentário enviado por afs_andre em 25/08/2011 - 08:15h:

Fiz aqui e funcionou 90%. O único problema é que no mapa, não aparecem os hosts no mapa. Já conferi o hostname com a configuração do nagios, aparentemente está td certinho. Alguém aí tem alguma idéia do que possa estar faltando?

[21] Comentário enviado por v5 em 26/08/2011 - 11:28h:

Bom dia.

Alguém passo por esse problema.

The file: location.cfg does not exist or could not be read

Configurei conforme descrito no artigo e nao aparece o mapa e só aparece esse erro.

Esse arquivo location.cfg nao tem que seta ele no nagios.cfg ? Fazer algum include para o arquivo.

Obrigado.

At.

[22] Comentário enviado por djcelsodub em 26/08/2011 - 12:24h:

v5:

O arquivo location.cfg deve estar em /usr/local/nagios/etc.
Não é necessário indicá-lo no nagios.cfg pois ele é lido pelo statusmap.cgi apenas.
Verifique se o arquivo location.cfg está no local indicado e se as permissões estão para o usuário nagios.

Isso também aconteceu no início da minha implementação e era porque ainda nao havia criado o location.cfg.

Abs.

[23] Comentário enviado por djcelsodub em 27/08/2011 - 10:53h:

kamushadenes e afs_andre:

Estou comparando meu SO com uma nova implementação para descobrir o motivo de os hosts não serem apresentados, como vcs citaram.

[24] Comentário enviado por kamushadenes em 30/08/2011 - 18:13h:

Bem, ele já está nesse diretório e com permissão para o usuário do Nagios. De qualquer forma, apenas para testes, editei o fonte do statusmap.c e específiquei o caminho absoluto para o arquivo... mesma coisa, sem indicação no mapa =/

[25] Comentário enviado por djcelsodub em 18/09/2011 - 19:54h:

Galera,

Instalei novamente o nagios em uma maquina virtual zerada para tentar entender o que poderia estar ocasionando a não apresentação dos pontos no mapa.
Debugando o código fonte do statusmap encontrei a indicaçao de 2 arquivos de imagens que nao existem no diretório images do nagios. Como meu servidor já estava em produçao e realizei diversos testes de integraçao, em um destes as imagens devem ter sido copiadas para o diretório.

Para resolver o problema:

baixe as imagens dos links abaixo dentro do diretorio /usr/local/nagios/share/images:

wget http://www.masterservers.com.br/extras/shadow.png
wget http://www.masterservers.com.br/extras/green.png

e recarregue o nagios com:

service nagios reload

Isto resolverá o problema e apresentará os pontos no mapa.

Abraços á todos.

[26] Comentário enviado por rootkit- em 28/09/2011 - 10:39h:

Olá,

Segui o tutorial e tinha o mapa a ser exibido, porém sem as marcações de local.

Notei que não havia carregado o arquivo location.cfg no nagios.cfg.

Após carregar o arquivo e tentar checar se as configurações estão OK, recebo o seguinte erro:

Error: Invalid object definition type 'default' in file '/usr/local/nagios/etc/location.cfg' on line 4.
Error processing object config files!


***> One or more problems was encountered while processing the config files...

Alguém pode dar uma luz de como contornar o problema ?

[27] Comentário enviado por djcelsodub em 28/09/2011 - 12:57h:

rootkit-

Não é necessário inserir o location.cfg no nagios.cfg.
O location.cfg não é utilizado pelo nagios e sim pelo Google Maps.

quanto aos pontos não serem apresentados, veja se seguiu o passo de baixar as 2 imagens, como informei no comentário 25.

Abs.


Celso Faria
Americana/SP

[28] Comentário enviado por rootkit em 29/09/2011 - 05:42h:

Tenho as imagens no diretório (como no tutorial), removi o location.cfg do nagios.cfg (imaginei que ele não estivesse a indicar os pontos por não ter este arquivo sendo "chamado" pelo nagios na inicialização), conferi novamente as permissões dos arquivos (quer do location.cfg, quer das duas imagens), chequei no error.log do apache (para ver se ele tentava abrir alguma imagem e não conseguia) e nada, nenhum erro (e isso é o mais frustrante, senão teria algo para tentar seguir) , ele exibe o mapa do google maps, mas as indicações de lat/long não :(

Alguma luz ?

[29] Comentário enviado por edirjr em 24/10/2011 - 09:01h:

Bom dia,

Estou com o mesmo problema. Não apresenta os pontos no mapa. Alguém já conseguiu resolver?

[30] Comentário enviado por djcelsodub em 24/10/2011 - 09:06h:

edirjr:

Veja se já realizou o procedimento descrito no comentário 25.
Este problema foi identificado e a correção foi inserida no artigo.

qualquer coisa "gritae" que tento te ajudar na medida do possível.


Celso Faria
Americana/SP

[31] Comentário enviado por edirjr em 24/10/2011 - 09:29h:

Oi Celso, consegui identificar o problema.
Por algum motivo, quando baixava as imagens elas ficavam com problema, dai, acessei diretamente a url das imagens e salvei na pasta.
Está funcionando.
Parabéns pelo artigo.

[32] Comentário enviado por jcvn em 06/02/2012 - 16:16h:

Tive que colocar outras imagens (png), pois o servidor onde encontra-se as imagens abaixo esta fora do ar

wget http://www.masterservers.com.br/extras/shadow.png
wget http://www.masterservers.com.br/extras/green.png

Alguem possui essas imagens, pois a minha ficou um pouco fora do padrão.

Há e não poderia esquecer, exelente artigo. Funcionou perfeito comigo usando Debian 6. PARABENS !!!!

[33] Comentário enviado por djcelsodub em 06/02/2012 - 17:14h:

jcvn,

O servidor voltou a responder. Teste novamente.

Obrigado pelo comentário.

[34] Comentário enviado por wiltongarcia em 15/02/2012 - 12:37h:

O servidor tá fora do ar denovo, alguem pode me enviar essas imagens?

[35] Comentário enviado por jcvn em 15/02/2012 - 21:03h:

wiltongarcia,

Posta o email ae que eu envio.

T+

JCVN

[36] Comentário enviado por wiltongarcia em 20/02/2012 - 05:44h:

JCVN,

meu email é wiltongarcia(at)hotmail(dot)com

Muito Obrigado!

=)

[37] Comentário enviado por jcvn em 28/02/2012 - 10:15h:

Enviado, OK
T+

[38] Comentário enviado por Josue A. Santos em 12/05/2012 - 20:34h:

Muito bom, mesmo! 10


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.