1 - Instalação de módulos perl e Webinject


Webinject é escrito em Perl, que tem, no entanto necessitam de módulos adicionais perl que não são instalados por padrão. 

~# cpan -i LWP HTTP::Cookies HTTP::Request::Common Time::HiRes Getopt::Long Error XML::Parser XML::Simple Crypt::SSLeay 
Em seguida, ele recupera o script webinject: 
~# cd /tmp
~# wget http://downloads.sourceforge.net/webinject/webinject-1.41.src.tar.gz
~# tar xzvf webinject-1.41.src.tar.gz
~# cd webinject
~# cp webinject.pl /usr/local/nagios/libexec/
~# cp config.xml testcases.xml /usr/local/nagios/etc/object/ 

2 - O código de retorno do plugin webinject


Após cada teste, Webinject pode retornar códigos para Nagios. 

OK
Todos os testes são passados ​​com sucesso, o código de retorno 0 é enviado para Nagios com o tempo necessário para realizar o teste. 

WARNING
Se você declarar um "globaltimeout" em seu arquivo de configuração, este valor será comparado ao tempo gasto testes.
Se o teste funcionou corretamente, mas com um tempo maior do que o "globaltimeout", considera-se ATENÇÃO.
Um código é enviado para Nagios com a mensagem de que o teste levou mais tempo do que o "globaltimeout". 

CRITICAL
Considera-se que o teste falhou se um conjunto de casos de falha. O código de retorno é enviado para Nagios 2, com um número de teste que falhou.
Esta mensagem pode ser facilmente personalizado adicionando uma seção "errormessage" nos casos de teste diferentes. 

3 - Ambiente Webinject


Webinject precisa de 2 arquivos xml, uma para a configuração e outra para o caso de teste. Vamos nos concentrar no primeiro arquivo que define a configuração global.
Vamos modificar o meu config.xml e adicione o modo de plugin nagios:

~# vi /usr/local/nagios/etc/object/config.xml
adicionar esta: <reporttype>nagios</reporttype>

Isso vai mudar a saída para ser compatível com Nagios webinject.pl com uma única linha e um código de retorno.
Você também pode adicionar "<globaltimeout>" na configuração de um aviso em caso de atrasos. 

Aqui está um arquivo de configuração de exemplo: 

<testcasefile>testcase.xml</testcasefile>
<useragent>NagiosWabinjectAgent</useragent>
<globaltimeout>20</globaltimeout>
<reporttype>nagios</reporttype> 

Para obter mais opções basta consultar a documentação para Webinject.

4 - Criação de um caso de teste


Agora precisamos configurar um caso de teste. Em cada caso, podemos especificar uma mensagem de erro descrevendo o problema que aparece na interface do Nagios.
Aqui está um simples arquivo testcase.xml exemplo: 

<testcases repeat="1">
<case
id="1"
description1="Test de login sur mon site"
method="post"
url="http://www.mydummyapplication.com/Authentication"
postbody="user=foo&password=bar"
verifynegative="User unknown"
errormessage="Impossible d'authentifier l'utilisateur"
/>

<case
id="2"
description1="Test d'acces à la base de données"
method="post"
url="http://www.mydummyapplication.com/DatabaseRequest.php"
postbody="object=fruits&color=red"
verifypositive="strawberry"
errormessage="Impossible d'effectuer une requete sur la base"
/>
</testcases> 

Uma vez que este está instalado, é fácil o suficiente para validar nossa configuração antes de colocá-lo em Nagios.

~# /usr/local/nagios/libexec/webinject.pl -c ../etc/object/config.xml ../etc/object/testcase.xml 

ou simplesmente: 

~# /usr/local/nagios/libexec/webinject.pl -c ../etc/object/config.xml 

porque temos especificado o arquivo de cenário na config.xml arquivo de configuração. 

4 - Configurando o Nagios


A primeira coisa a fazer é criar um novo comando no arquivo Nagios commands.cfg. 
define command {
command_name webinject
command_line /usr/local/nagios/libexec/webinject.pl -c $ARG1$ $ARG2$
} 

Em seguida, você deve declarar um novo serviço no arquivo Nagios services.cfg. 

define service {
use generic-service
host_name Application-server
service_description WebInject test of MyApplication
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 120
notification_period 24x7
notification_options w,u,c,r
check_commandwebinject!../etc/object/config.xml!../etc/object/testcase.xml
} 

Naturalmente, ajustar as configurações de vários ser correto com a sua plataforma.
Agora você só tem que recarregar a configuração do Nagios. 

5 - Resultados


Agora, se seu banco de dados é interrompido, mas não de sua aplicação, você receberá um alerta crítico. 
WebInject CRITICAL: Impossible d'effectuer une requete sur la base 
Ou se você não especificar uma mensagem de erro; 
WebInject CRITICAL - Test case number 2 failed 
Se tudo correr bem, você vai receber: 
WebInject OK - All tests passed successfully in 4.932 seconds 

6 - Problemas

Tenha cuidado, se você tiver ativado Webinject no Nagios com um outro usuário, pois alguns arquivos serão criados com este usuário.
Nagios receberá um erro porque ele não pode gravar esses arquivos. Devemos, portanto, alterar a propriedade desses arquivos com nagios usuário.
Se você encontrar esse problema, Nagios irá exibir um tipo de erro
"Return code of 13 for check of service ... on host ... was out of bounds". 
Também certifique-se que o nagios tem direitos suficientes para executar webinject.pl

7 - Links

O original em Inglês Webinject plugin do nagios
O site do Nagios site do Nagios