Monitorar várias webs dentro de um servidor em nagios

3

Eu gostaria de monitorar / testar vários hosts virtuais em um servidor Web Apache e, além disso, gostaria que essas verificações aparecem como um serviço no Nagios - > HTTP E se uma das web / URL falhar, o serviço aparece como falha / alarme. Eu não sei se é possível.

Eu instalei o Nagios em outro servidor e quero verificar se as webs estão respondendo o código de status 200.

Então, a questão é, nagios podem ser configurados para verificar vários sites no mesmo serviço? É possível definir vários check_command em um serviço?

check_command   check_httpv!google.com
check_command   check_httpv!gmail.com

Como você está monitorando hosts virtuais no nagios? você está criando um serviço por site?

Cumprimentos e obrigado antecipadamente!

    
por Adrian Perez 08.01.2012 / 02:46

4 respostas

5

check_http só pode verificar um site de cada vez. Se você precisar verificar vários sites em uma única verificação de serviço, precisará escrever sua própria verificação para implementar a lógica. Isso poderia ser feito facilmente em um script de shell simples que chama check_http para cada host virtual e retorna o código de falha apropriado para o Nagios se qualquer uma das execuções check_http não for bem-sucedida. Esse script pode se parecer com o seguinte.

#!/bin/sh

for HOST in $* ; do
   check_http -H $HOST [...other args...] >/dev/null 
   if [ $? -ne 0 ] ; then
      echo "$HOST not responding"
      exit 2
   fi
done
echo "All hosts ok"
exit 0

Como alternativa, você pode usar a Dependências de serviço do Nagios para alcançar seu objetivo. Suponha, no momento, que você deseja verificar todos os seus hosts virtuais Apache, mas não ser inundado com uma notificação para cada um, se o processo do Apache não estiver disponível. Isso permitiria ver os detalhes de status de cada host virtual, permitir relatórios mais detalhados e permitir que você tenha diferentes opções de notificação e período de tempo.

Para implementar isso, você criaria uma verificação de serviço para cada host virtual e, em seguida, criaria uma verificação para o Apache, presumivelmente usando check_http para verificar através do endereço IP e se certificar de que algo está escutando na porta 80.

Em seguida, você criaria dependências de serviço para a verificação de serviço de cada host virtual e as configuraria para depender da verificação do Apache. Se a verificação do Apache falhar, todas as verificações do host virtual (que dependem da verificação do Apache) irão parar de enviar notificações e / ou executar verificações até que a verificação do Apache seja recuperada.

    
por 08.01.2012 / 03:48
2

Escreva um script bash que chame check_http.pl várias vezes para cada argumento transmitido.

Configure-o como seu próprio tipo de serviço e você estará pronto para usar.

Eu não estou familiarizado o suficiente com o bash para fazer isso em cima da minha cabeça, mas alguns tutoriais bash bash irão ajudá-lo com tudo isso facilmente.

    
por 08.01.2012 / 03:59
2

A maneira "correta" de fazer isso é usar check_multi:

link

Configure um check_multi para chamar várias checagens check_http de uma só vez (veja check_http --help e veja os flags -H e -I). Você pode dar limiares para quantos precisam ser avisados / crit até que o multi-serviço seja warn / crit, etc. É muito poderoso e flexível.

Você também pode usar o check_cluster (essa é uma maneira antiga de fazer isso, e isso resulta em muitos serviços extras preenchendo a interface do usuário do nagios). Se você quiser seguir esse caminho, leia os documentos oficiais sobre o monitoramento de clusters:

link

    
por 11.01.2012 / 18:35
1

Sim, é possível, eu bloguei sobre isso. Duplicando coisas básicas aqui.

Você precisa (1) de um script que obtenha uma lista de URLs, verifique-os e retorne códigos de status conforme apropriado, (2) um comando Nagios que use o script, (3) uma definição de host que use o comando para verificação.

Coloque o script em /etc/nagios3/check_urls .

Defina o comando em /etc/nagios3/conf.d/commands.cfg :

define command {
    command_name check_urls
    command_line /etc/nagios3/check_urls $_HOSTURLS$
}

Defina o host em /etc/nagios3/conf.d/hosts.cfg :

define host {
    host_name     example-host
    alias         My Example
    address       123.123.123.123
    check_command check_urls
    _urls         my-blog.com,my-api.com/check
}
    
por 24.03.2013 / 10:11