PROCESS STATE CODES - different values that the s, stat and state output specifiers(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since kernel 2.6.xx)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
Blog com conteúdo sobre os projetos que tenho trabalhado: SEGURANÇA DA INFORMAÇÃO, VOIP COM ASTERISK, VIRTUALIZAÇÃO DE SERVIDORES VMWARE SERVER, ESX, EMAIL, FIREWALL, WEB-PROXIES, VPN, MIGRAÇÕES, LDAP, SAMBA, AD, ORACLE, MySQL, RADIUS, DHCP, DNS, PHP, C++, AUTENTICAÇÃO WIFI, CAPTIVEPORTAL, SATELITE, NETWORK...
Pesquisar neste blog
Mostrando postagens com marcador NAGIOS. Mostrar todas as postagens
Mostrando postagens com marcador NAGIOS. Mostrar todas as postagens
segunda-feira, 12 de março de 2012
sexta-feira, 6 de janeiro de 2012
Como instalar o mk_livestatus (Nagios)
Bom, antes de começar os passos de instalação, vou explicar qual o objetivo e características a qual se propõem essa ferramenta.
Objetivo:
Utilizar as informações de monitoração do Nagios para a criação de serviços estruturados.
Através do Nagios Event Broker:
- Permite acesso as estruturas internas do Nagios;
- Desenvolvido por Mathias Kettner;
- Sua versão atual é 1.1.6p1
- Website do projeto.
O mk_livestatus é uma ferramenta de acesso as informações sob demanda, acessa direto as estruturas do Nagios e obtém as informações necessárias.
Mas Por que não utilizar o NDO(Nagios Data Out) ?
- Setup mais complexo;
- Necessidade de manutenção de uma base de dados(crescimento);
- Consumo de CPU.
Algumas vantagens do MK Livestatus:
- Usa Nagios Event Broker API;
- Sem Base de Dados;
- Dados podem ser obtidos sob demanda;
- Oferece uma gama enorme de informações;
- As informações são lidas, das estruturas internas do Nagios;
- Baixo Consumo de CPU;
- Fácil Configuração;
- Produz ZERO IO;
- Linguagem de fácil aprendizado(LQL);
- Intervalo para atualizações configurável.
Instalação do pacote mk_livestatus:
tar -xvzf mk-livestatus-1.1.6p1.tar.gz
cd mk-livestatus-1.1.6p1
./configure
make
cp -Rfp src/livestatus.o /usr/local/nagios/bin/
Criar o arquivo de log do mk_livestatus 1.1.6p1
touch /var/log/livestatus.log
Definir o parametro event_broker_options para -1 dentro do arquivo de configuração do Nagios:
# vim /usr/local/nagios/etc/nagios.cfg
event_broker_options=-1
Adicionar a linha abaixo no arquivo de configuração do Nagios
broker_module=/usr/local/nagios/bin/livestatus.o /usr/local/nagios/var/rw/live debug=0 max_cached_messages=500000 max_response_size=104857600 num_client_threads=10 thread_stack_size=65536 query_timeout=10000 idle_timeout=300000 log_file=/var/log/livestatus.log
Salve as alterações e reinicialize o Nagios.
Testando a instalação:
Para testarmos a instalação do mk_livestatus, estando dentro do diretório de onde foi feita a complicação da ferramenta, execute o seguinte comando:
echo 'GET hosts' | ./src/unixcat/usr/local/nagios/var/rw/live
Como instalar o Nagvis 1.6.2
Este Howto funciona para Debian / Ubuntu / CentOS / RedHat / SuSE!
Website: http://www.nagvis.org/
wget http://sourceforge.net/projects/nagvis/files/NagVis%201.6/nagvis-1.6.2.tar.gz/download
No meu caso como será mostrado no processo de instalação do Nagvis, eu usei MK_Livestatus, ferramenta usada para acesso as estruturas internas do Nagios desenvolvida por Mathias Kettner, sua versão atual é a 1.1.6p1.
Porque usei o mk_livestatus?
A resposta é simples:
Em outro artigo mostrarei como efetuar a sua instalação com mais detalhes.
Instalar as dependências e começar a instalar o script
O mk_livestatus caso alguém opte por usá-lo.
yum install rsync graphviz
ou
apt-get install graphviz
tar -zxf nagvis-1.6.2.tar.gz
cd nagvis-1.6.2
./install.sh
+------------------------------------------------------------------------------+
| Welcome to NagVis Installer 1.6.2 |
+------------------------------------------------------------------------------+
Website: http://www.nagvis.org/
wget http://sourceforge.net/projects/nagvis/files/NagVis%201.6/nagvis-1.6.2.tar.gz/download
No meu caso como será mostrado no processo de instalação do Nagvis, eu usei MK_Livestatus, ferramenta usada para acesso as estruturas internas do Nagios desenvolvida por Mathias Kettner, sua versão atual é a 1.1.6p1.
Porque usei o mk_livestatus?
A resposta é simples:
- essa ferramenta usa o Nagios Event Broker API;
- Não precisa de base de dados;
- Os dados podem ser obtidos sob demanda;
- Trabalha com uma gama muito alta de informações.
Em outro artigo mostrarei como efetuar a sua instalação com mais detalhes.
Instalar as dependências e começar a instalar o script
O mk_livestatus caso alguém opte por usá-lo.
yum install rsync graphviz
ou
apt-get install graphviz
tar -zxf nagvis-1.6.2.tar.gz
cd nagvis-1.6.2
./install.sh
+------------------------------------------------------------------------------+
| Welcome to NagVis Installer 1.6.2 |
+------------------------------------------------------------------------------+
| This script is built to facilitate the NagVis installation and update |
| procedure for you. The installer has been tested on the following systems: |
| - Debian Etch, Hardy (4.0, 5.0) |
| - Ubuntu Hardy, Intrepid, Jaunty, Karmic, Lucid (8.04 to 10.04) |
| - SuSE Linux Enterprise Server 10 and 11 |
| |
| Similar distributions to the ones mentioned above should work as well. |
| That (hopefully) includes RedHat, Fedora, CentOS, OpenSuSE |
| |
| If you experience any problems using these or other distributions, please |
| report that to the NagVis team. |
+------------------------------------------------------------------------------+
| Do you want to proceed? [y]:
+------------------------------------------------------------------------------+
| Starting installation of NagVis 1.6.2 |
+------------------------------------------------------------------------------+
| OS : Debian GNU/Linux 6.0 |
| |
+--- Checking for tools -------------------------------------------------------+
| Using packet manager /usr/bin/dpkg found |
| |
+--- Checking paths -----------------------------------------------------------+
| Please enter the path to the nagios base directory [/usr/local/nagios]:
| nagios path /usr/local/nagios found |
| Please enter the path to NagVis base [/usr/local/nagvis]: /usr/local/nagios/nagvis
| |
+--- Checking prerequisites ---------------------------------------------------+
| PHP 5.3 found |
| PHP Module: gd 5.3 found |
| PHP Module: mbstring compiled_in found |
| PHP Module: gettext compiled_in found |
| PHP Module: session compiled_in found |
| PHP Module: xml compiled_in found |
| PHP Module: pdo compiled_in found |
| Apache mod_php found |
| Checking Backends. (Available: mklivestatus,ndo2db,ido2db,merlinmy) |
| Do you want to use backend mklivestatus? [y]:
| Do you want to use backend ndo2db? [n]:
| Do you want to use backend ido2db? [n]:
| Do you want to use backend merlinmy? [n]:
| Livestatus Socket (/usr/local/nagios/var/rw/live) found |
| PHP Module: sockets compiled_in found |
| Graphviz 2.26 found |
| Graphviz Module dot 2.26.3 found |
| Graphviz Module neato 2.26.3 found |
| Graphviz Module twopi 2.26.3 found |
| Graphviz Module circo 2.26.3 found |
| Graphviz Module fdp 2.26.3 found |
No packages found matching sqlite.
| WARNING: The SQLite package was not found. |
| This may not be a problem if you installed it from source |
| |
+--- Trying to detect Apache settings -----------------------------------------+
| Please enter the web path to NagVis [/nagvis]:
| Please enter the name of the web-server user [www-data]:
| Please enter the name of the web-server group [www-data]:
| create Apache config file [y]:
| |
+------------------------------------------------------------------------------+
| Summary |
+------------------------------------------------------------------------------+
| NagVis home will be: /usr/local/nagios/nagvis |
| Owner of NagVis files will be: www-data |
| Group of NagVis files will be: www-data |
| Path to Apache config dir is: /etc/apache2/conf.d |
| Apache config will be created: yes |
| |
| Installation mode: new |
| New version: 1.6.2 |
| |
| |
| Do you really want to continue? [y]:
+------------------------------------------------------------------------------+
| Starting installation |
+------------------------------------------------------------------------------+
| Creating directory /usr/local/nagios/nagvis... done |
| Creating directory /usr/local/nagios/nagvis/var... done |
| Creating directory /usr/local/nagios/nagvis/var/tmpl/cache... done |
| Creating directory /usr/local/nagios/nagvis/var/tmpl/compile... done |
| Creating directory /usr/local/nagios/nagvis/share/var... done |
| Copying files to /usr/local/nagios/nagvis... done |
| Creating directory /usr/local/nagios/nagvis/etc/profiles... done |
| Creating main configuration file... done |
| adding base="/usr/local/nagios/nagvis" done |
| Adding webserver group to file_group... done |
| Creating web configuration file... done |
| Setting permissions for web configuration file... done |
| |
| |
| |
+--- Setting permissions... ---------------------------------------------------+
| /usr/local/nagios/nagvis/etc/nagvis.ini.php-sample done |
| /usr/local/nagios/nagvis/etc done |
| /usr/local/nagios/nagvis/etc/maps done |
| /usr/local/nagios/nagvis/etc/maps/* done |
| /usr/local/nagios/nagvis/etc/automaps done |
| /usr/local/nagios/nagvis/etc/automaps/* done |
| /usr/local/nagios/nagvis/etc/profiles done |
| /usr/local/nagios/nagvis/share/userfiles/images/maps done |
| /usr/local/nagios/nagvis/share/userfiles/images/maps/* done |
| /usr/local/nagios/nagvis/share/userfiles/images/shapes done |
| /usr/local/nagios/nagvis/share/userfiles/images/shapes/* done |
| /usr/local/nagios/nagvis/var done |
| /usr/local/nagios/nagvis/var/* done |
| /usr/local/nagios/nagvis/var/tmpl done |
| /usr/local/nagios/nagvis/var/tmpl/cache done |
| /usr/local/nagios/nagvis/var/tmpl/compile done |
| /usr/local/nagios/nagvis/share/var done |
| |
| Removing backup directory done |
+------------------------------------------------------------------------------+
| Installation complete |
| |
| You can safely remove this source directory. |
| |
| For later update/upgrade you may use this command to have a faster update: |
| ./install.sh -n /usr/local/nagios -p /usr/local/nagios/nagvis -u www-data -g www-data -w /etc/apache2/conf.d -a y
| |
| 1.4 to 1.6x upgrade: The map permissions have ben reset. Old permissions |
| have been backed up in nagvis/etc/auth-backup file. You need to migrate |
| these permissions manually using using the new user/role management GUI. |
| |
| What to do next? |
| - Read the documentation |
| - Maybe you want to edit the main configuration file? |
| Its location is: /usr/local/nagios/nagvis/etc/nagvis.ini.php |
| - Configure NagVis via browser |
| <http://localhost/nagvis/config.php> |
| - Initial admin credentials: |
| Username: admin |
| Password: admin |
+------------------------------------------------------------------------------+
quarta-feira, 7 de dezembro de 2011
Teste http webinject sobre Nagios
Nagios é para mim a melhor ferramenta de monitoramento opensource e pode configurar um monitor para sua plataforma. Enquanto Nagios já tem um plugin chamado "check_http" vem com os plugins oficiais, pode-se perguntar "Por outro plugin de http para Nagios?" O plugin oficial pode realizar os testes com uma variedade de opções para garantir que o serviço de http executando. No entanto Webinject pode realizar este teste em um teste de autenticação mais inteligente, de um usuário, o acesso ao banco de dados ...
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.
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".
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.
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.xmladicionar 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.
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"><caseid="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"/><caseid="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 webinjectcommand_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-servicehost_name Application-serverservice_description WebInject test of MyApplicationis_volatile 0check_period 24x7max_check_attempts 3normal_check_interval 1retry_check_interval 1contact_groups adminsnotification_interval 120notification_period 24x7notification_options w,u,c,rcheck_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.
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
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
Verificar ip blacklist com Nagios
Devido a problemas de spam no trabalho, decidi criar uma verificação para ver se o nosso IP foi lista negra. Depois de uma rápida pesquisa me deparei com este site nagioswiki.
Aqui está apenas um procedimento simples de implementar este plugin.
1 - Baixe o plugin
cd /tmpEste plugin neste site http://freshmeat.net/projects/nagioscheckbl/
tar zxfv nagios-check_bl-1.0.tar.gzcd nagios-check_bl-1.0cp check_bl /usr/local/nagios/libexec/(Coloque este é o diretório onde o nagios plugins)
2 - Instale o módulo perl
# cpan install Net::DNS Devemos também mudar o diretório no plugin e colocar no caminho certo.
3 - Testando o plugin
cd /usr/local/nagios/libexec/./check_bl -H 1.2.3.4 -B zen.spamhaus.orge você tem:
Not black-listed 4 - Adicione o commands.cfg
# vi /etc/nagios/commands.cfg define command {command_name check_blcommand_line $USER1$/check_bl -H $HOSTADDRESS$ -B zen.spamhaus.org bl.spamcop.net dnsbl.ahbl.org dnsbl.njabl.org dnsbl.sorbs.net virbl.dnsbl.bit.nl rbl.efnet.org phishing.rbl.msrbl.net 0spam.fusionzero.com list.dsbl.org multihop.dsbl.org unconfirmed.dsbl.org will-spam-for-food.eu.org blacklist.spambag.org blackholes.brainerd.net blackholes.uceb.org spamsources.dnsbl.info map.spam-rbl.com ns1.unsubscore.com psbl.surriel.com l2.spews.dnsbl.sorbs.net bl.csma.biz sbl.csma.biz dynablock.njabl.org no-more-funn.moensted.dk ubl.unsubscore.com dnsbl-1.uceprotect.net dnsbl-2.uceprotect.net dnsbl-3.uceprotect.net spamguard.leadmon.net opm.blitzed.org bl.spamcannibal.org rbl.schulte.org dnsbl.ahbl.org virbl.dnsbl.bit.nl combined.rbl.msrbl.net} No caso da distro Centos e Debian, você pode separar as blacklists por espaços que não é o caso do openSUSE ou soivent lists separadas por vírgulas.
Monitoramento de aplicações Web com Webinject
WebInject é uma ferramenta gratuita para testes automatizados de aplicações web e serviços web. Ele pode ser usado para testar componentes individuais do sistema que possuem interfaces HTTP (JSP, ASP, CGI, PHP, Servlets, Formulários HTML, XML / Web Services SOAP, etc), e pode ser usado como um equipamento de teste para criar um conjunto de [HTTP nível] funcional automatizado, aceitação e testes de regressão. Um equipamento de teste, também conhecido como piloto de testes ou um framework de teste, permite que você execute muitos casos de teste e coletar / relatório de seus resultados. WebInject oferece visualização em tempo real os resultados e pode também ser usado para monitorar o tempo de resposta do sistema.
WebInject usa uma API XML (interface) para a definição e carregamento de casos de teste. Você pode usar WebInject sem nunca ver a sua implementação interna.
Também pode ser implementado como um plugin do nagios.
~# cpan -i LWP HTTP::Cookies HTTP::Request::Common Time::HiRes Getopt::Long Error XML::Parser XML::Simple Crypt::SSLeay
Em seguida, vamos baixar o script webinject:
2 - Configurar o arquivo config.xml
O arquivo "config.xml" é usado para a configuração de seu projeto.
Neste arquivo nós especificamos o caso de teste arquivo. Todos os parâmetros devem estar em suas próprias marcas.
<httpauth>www.fakedomain.com:80:my_realm:foo:welcome</httpauth>
baseurl
Criar a constante {} BaseURL que podem ser usados no arquivo cenário.
<baseurl>http://myserver</baseurl>
baseurl1
Criar a constante {} BASEURL1 como "baseurl".
baseurl2
Criar contanste BASEURL2 {} como "baseurl".
globalhttplog
Ativa logs pedidos HTTP / respostas para todos os testes. Eles serão gravados no arquivo http.log
<globalhttplog>yes</globalhttplog>
Ou apenas em caso de erro
<globalhttplog>onfail</globalhttplog>
Esta opção é desabilitada quando rodando em modo de webinjecct plugin.
how
Permite-lhe colocar comentários no arquivo de configuração
<comment>Comentário</comment>
tempo limite
Especifica o tempo de resposta em segundos para cada teste. Se a resposta for maior do que o teste parâmetro será considerado fracassado.
A configuração padrão é 180 segundos.
<timeout>10</timeout>
Essa configuração não funciona em SSL / HTTPS
ReportType
Este parâmetro é usado para ativar a produção e torná-lo compatível com um programa.
nagios - Compatível como um plugin nagios.
<reporttype>nagios</reporttype>
mrtg - Compatível com MRTG Plugin
<reporttype>mrtg</reporttype>
externo - Chamar um módulo perl externo. Você pode escrever um programa que vai ser chamado depois de ter terminado webinject tiro.
Este programa terá acesso a webinject variável global.
<reporttype>standard:Plugin.pm</reporttype>
Plugin.pm exemplo - Enviar resultados por e-mail.
$message = "Passed: $casepassedcount, Failed: $casefailedcount";
exec(qq );
Standard - Padrão de saída é o modo padrão.
<reporttype>standard</reporttype>
globaltimeout
Este parâmetro é usado quando o modo é habilitado nagios. O valor será comparado com o tempo total que levou para realizar o teste.
<globaltimeout>10</globaltimeout>
gnuplot
Define onde executável gnuplot está localizado em seu sistema. Isso só é necessário se você quiser webinject usa gnuplot para criar gráficos de tempo de resposta.
<gnuplot>/usr/bin/gnuplot</gnuplot>
standaloneplot
Vamos dizer que webinject para criar gráficos de tempo de resposta quando rodando em modo console (webinject.pl), caso contrário, é o modo apenas possível no modo GUI. Um PNG é gerado na pasta atual.
<standaloneplot>on</standaloneplot>
webinject.pl [-c --config config_file] [-o| --output output_location] [-n| --no-output] [testcase_file [XPath]]
~#perl webinject.pl mytests.xml testcases/case 2
4 - Configurando o Cenário
Os cenários são escritos em XML, existem muitos parâmetros que serão úteis em casos diferentes. Os dois únicos parâmetros essenciais são 'id' e 'url' e apenas o código de retorno http será estudado.
<case
id="1"
url="http://myserver/test/test.html"
/>
Os vários parâmetros possíveis
id
O identificador do teste e para especificar a ordem.
description1
Descrição, úteis para relatórios
description2
Descrição, úteis para relatórios.
method
HTTP método de solicitação, pegue post. O padrão é obter.
url
URL completa para o teste. É possível utilizar um endereço IP ou nome de domínio.
posttype
Este parâmetro especifica a codificação usada para enviar um formulário para o servidor. Ele é usado apenas durante um POST.
Os diferentes valores são:
"application/x-www-form-urlencoded"
"multipart/form-data"
"text/xml"
"application/soap+xml"
Padrão "application / x-www-form-urlencoded".
postbody
Estes são dados que serão enviados no pedido para o servidor. Ele é usado em um post HTTP.
Se você enviar dados "application / x-www-form-urlencoded", este parâmetro irá conter a seqüência que você deseja enviar.
Se você enviar dados "multipart / form-data", este parâmetro contém uma string que representa o código Perl utilizado para definir o "Conteúdo" âramètre do "POST". A string será avaliada por 'eval' o intérprete perl.
Mais informações na documentação do Perl HTTP:: Request:: Common.
Se você enviar "text / xml" ou "application / soap + xml", este parâmetro contém o arquivo que contém o xml que será enviado o pedido.
exemple: postbody="file=>soap_payload.xml"
verifyresponsecode
Verificação de código de resposta http. 2chec se o código é diferente.
verifypositive
Verificar uma string na resposta. Ele pode trabalhar com expressões regulares.
verifypositive1
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive2
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive3
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifynegative
Verificação reverter uma string na resposta. Também trabalha com expressões regulares.
verifynegative1
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative2
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative3
Oposto verificação adicional. Funciona como "verifynegative '.
__verifynextpositive -
Verificando a seqüência na seguinte teste.
verifynextnegative
Verificação reverter uma string no seguinte teste.
logrequest
Registros escritos http.log no pedido http para o teste atual. Os logs são desativadas se o parâmetro não é sim.
logresponse
Registros escritos http.log na resposta HTTP para o teste atual. Os logs são desativadas se o parâmetro não é sim.
parseresponse
Analisar uma seqüência na resposta HTTP para uso posterior. O mais comum é o ID da sessão.
parseresponse1
Parâmetro adicional para analisar a resposta.
parseresponse2
Parâmetro adicional para analisar a resposta.
parseresponse3
Parâmetro adicional para analisar a resposta.
parseresponse4
Parâmetro adicional para analisar a resposta.
parseresponse5
Parâmetro adicional para analisar a resposta.
sleep
Número de segundos para fazer uma pausa após o teste. Isto é útil para adicionar espaços entre as diferentes consultas.
errormessage
Se o teste falhar, você pode especificar uma mensagem de erro personalizada. Isto pode ser útil para entender por que o teste falhou.
AddHeader
Usado para adicionar um cabeçalho adicional na solicitação HTTP.
exemple: addheader="SOAPAction: urn:example-org:demos#Method"
Você pode adicionar vários cabeçalhos separados por um tubo.
<case
id="1"
description1="short description"
description2="long description"
method="post"
url="http://myserver/test/login.jsp"
postbody="username=corey&password=welcome"
verifypositive="verify this string exists"
verifynegative="verify this string does not exist"
logrequest="yes"
logresponse="yes"
sleep="3"
/>
<case
id="2"
description1="short description"
description2="long description"
method="get"
url="http://myserver/test/send.jsp?value={TIMESTAMP}"
verifypositive="verify this string exists"
verifynextpositive="{TIMESTAMP}"
/>
<case
id="1"
description1="sample test case - POST"
description2="verify file upload"
method="post"
url="http://cgi-lib.berkeley.edu/ex/fup.cgi"
postbody="( upfile => ['config.xml'], note => 'MYCOMMENT' )"
posttype="multipart/form-data"
logrequest="yes"
logresponse="yes"
verifypositive="MYCOMMENT"
/>
6 - Variáveis e Constantes
7 - Link
WebInject usa uma API XML (interface) para a definição e carregamento de casos de teste. Você pode usar WebInject sem nunca ver a sua implementação interna.
Também pode ser implementado como um plugin do nagios.
1 - Pré-requisitos de instalação
Webinject é escrito em Perl, que tem, no entanto necessitam de módulos adicionais perl que não são instalados por padrão.
Em seguida, vamos baixar 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
Obs:
Para rodarmos o script ./webinject.pl, precisaremos criar dois arquivos adicionais:
- Um com os parametros de configuração e;
- Outro com os cases de teste.
Os scripts em xml, podem ter qualquer nome, após criá-los, deverão ser chamados como parâmetros do arquivo ./webinject.pl para podermos rodar os testes nas aplicações web.
2 - Configurar o arquivo config.xml
O arquivo "config.xml" é usado para a configuração de seu projeto.
Neste arquivo nós especificamos o caso de teste arquivo. Todos os parâmetros devem estar em suas próprias marcas.
As seguintes opções de configuração:
proxy
Se você precisa especificar um endereço de proxy http
<proxy>http://127.0.0.1:8080</proxy>
Você pode adicionar as configurações de autenticação
<proxy>http://username:password@127.0.0.1:8080</proxy>
useragent
Esta opção permite que você especifique o User-agent. Por padrão, esse parâmetro é "Webinject". Isso ajuda a identificar as consultas no servidor web.
<useragent>Minitux User Agent</useragent>
httpauth
Isso permite que as configurações de autenticação como especificação em uma autenticação http básica. Esta configuração leva cinco parâmetros: servername: port: nomréel: usuário: senha.
useragent
Esta opção permite que você especifique o User-agent. Por padrão, esse parâmetro é "Webinject". Isso ajuda a identificar as consultas no servidor web.
<useragent>Minitux User Agent</useragent>
httpauth
Isso permite que as configurações de autenticação como especificação em uma autenticação http básica. Esta configuração leva cinco parâmetros: servername: port: nomréel: usuário: senha.
<httpauth>www.fakedomain.com:80:my_realm:foo:welcome</httpauth>
baseurl
Criar a constante {} BaseURL que podem ser usados no arquivo cenário.
<baseurl>http://myserver</baseurl>
baseurl1
Criar a constante {} BASEURL1 como "baseurl".
baseurl2
Criar contanste BASEURL2 {} como "baseurl".
globalhttplog
Ativa logs pedidos HTTP / respostas para todos os testes. Eles serão gravados no arquivo http.log
<globalhttplog>yes</globalhttplog>
Ou apenas em caso de erro
<globalhttplog>onfail</globalhttplog>
Esta opção é desabilitada quando rodando em modo de webinjecct plugin.
how
Permite-lhe colocar comentários no arquivo de configuração
<comment>Comentário</comment>
tempo limite
Especifica o tempo de resposta em segundos para cada teste. Se a resposta for maior do que o teste parâmetro será considerado fracassado.
A configuração padrão é 180 segundos.
<timeout>10</timeout>
Essa configuração não funciona em SSL / HTTPS
ReportType
Este parâmetro é usado para ativar a produção e torná-lo compatível com um programa.
nagios - Compatível como um plugin nagios.
<reporttype>nagios</reporttype>
mrtg - Compatível com MRTG Plugin
<reporttype>mrtg</reporttype>
externo - Chamar um módulo perl externo. Você pode escrever um programa que vai ser chamado depois de ter terminado webinject tiro.
Este programa terá acesso a webinject variável global.
<reporttype>standard:Plugin.pm</reporttype>
Plugin.pm exemplo - Enviar resultados por e-mail.
$message = "Passed: $casepassedcount, Failed: $casefailedcount";
exec(qq );
Standard - Padrão de saída é o modo padrão.
<reporttype>standard</reporttype>
globaltimeout
Este parâmetro é usado quando o modo é habilitado nagios. O valor será comparado com o tempo total que levou para realizar o teste.
<globaltimeout>10</globaltimeout>
gnuplot
Define onde executável gnuplot está localizado em seu sistema. Isso só é necessário se você quiser webinject usa gnuplot para criar gráficos de tempo de resposta.
<gnuplot>/usr/bin/gnuplot</gnuplot>
standaloneplot
Vamos dizer que webinject para criar gráficos de tempo de resposta quando rodando em modo console (webinject.pl), caso contrário, é o modo apenas possível no modo GUI. Um PNG é gerado na pasta atual.
<standaloneplot>on</standaloneplot>
3 - Webinject no modo console
Webinject é destinado ao uso no console e pode receber parâmetros:
As opções:
-C ou - config: Especifique um arquivo de configuração alternativo. Padrão é webinject config.xml.
Para especificar um arquivo de configuração em um diretório diferente você deve usar um caminho relativo para o arquivo executável webinject.
-O ou - saída: Especifica o local para gravar a saída.
-N ou - sem-saída: Apaga todo o caminho.
-V ou - version Mostra a versão.
Você também pode especificar o arquivo de cenário:
~#perl webinject.pl mytests.xml
Se não houver um arquivo especificado na linha de comando, webinject olhar no config.xml para encontrar a frase "testcasefile". Se não for especificado ele irá procurar o arquivo chamado "testcase.xml" diretório DNAS webinject.
XPath / XNode
Quando você coloca um cenário de arquivo webinject linha de comando, você pode adicionar o número do teste.
Por exemplo, para executar apenas o número do teste 2:
4 - Configurando o Cenário
Os cenários são escritos em XML, existem muitos parâmetros que serão úteis em casos diferentes. Os dois únicos parâmetros essenciais são 'id' e 'url' e apenas o código de retorno http será estudado.
<case
id="1"
url="http://myserver/test/test.html"
/>
Os vários parâmetros possíveis
id
O identificador do teste e para especificar a ordem.
description1
Descrição, úteis para relatórios
description2
Descrição, úteis para relatórios.
method
HTTP método de solicitação, pegue post. O padrão é obter.
url
URL completa para o teste. É possível utilizar um endereço IP ou nome de domínio.
posttype
Este parâmetro especifica a codificação usada para enviar um formulário para o servidor. Ele é usado apenas durante um POST.
Os diferentes valores são:
"application/x-www-form-urlencoded"
"multipart/form-data"
"text/xml"
"application/soap+xml"
Padrão "application / x-www-form-urlencoded".
postbody
Estes são dados que serão enviados no pedido para o servidor. Ele é usado em um post HTTP.
Se você enviar dados "application / x-www-form-urlencoded", este parâmetro irá conter a seqüência que você deseja enviar.
Se você enviar dados "multipart / form-data", este parâmetro contém uma string que representa o código Perl utilizado para definir o "Conteúdo" âramètre do "POST". A string será avaliada por 'eval' o intérprete perl.
Mais informações na documentação do Perl HTTP:: Request:: Common.
Se você enviar "text / xml" ou "application / soap + xml", este parâmetro contém o arquivo que contém o xml que será enviado o pedido.
exemple: postbody="file=>soap_payload.xml"
verifyresponsecode
Verificação de código de resposta http. 2chec se o código é diferente.
verifypositive
Verificar uma string na resposta. Ele pode trabalhar com expressões regulares.
verifypositive1
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive2
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive3
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifynegative
Verificação reverter uma string na resposta. Também trabalha com expressões regulares.
verifynegative1
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative2
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative3
Oposto verificação adicional. Funciona como "verifynegative '.
__verifynextpositive -
Verificando a seqüência na seguinte teste.
verifynextnegative
Verificação reverter uma string no seguinte teste.
logrequest
Registros escritos http.log no pedido http para o teste atual. Os logs são desativadas se o parâmetro não é sim.
logresponse
Registros escritos http.log na resposta HTTP para o teste atual. Os logs são desativadas se o parâmetro não é sim.
parseresponse
Analisar uma seqüência na resposta HTTP para uso posterior. O mais comum é o ID da sessão.
parseresponse1
Parâmetro adicional para analisar a resposta.
parseresponse2
Parâmetro adicional para analisar a resposta.
parseresponse3
Parâmetro adicional para analisar a resposta.
parseresponse4
Parâmetro adicional para analisar a resposta.
parseresponse5
Parâmetro adicional para analisar a resposta.
sleep
Número de segundos para fazer uma pausa após o teste. Isto é útil para adicionar espaços entre as diferentes consultas.
errormessage
Se o teste falhar, você pode especificar uma mensagem de erro personalizada. Isto pode ser útil para entender por que o teste falhou.
AddHeader
Usado para adicionar um cabeçalho adicional na solicitação HTTP.
exemple: addheader="SOAPAction: urn:example-org:demos#Method"
Você pode adicionar vários cabeçalhos separados por um tubo.
5 - Exemplos
id="1"
description1="short description"
description2="long description"
method="post"
url="http://myserver/test/login.jsp"
postbody="username=corey&password=welcome"
verifypositive="verify this string exists"
verifynegative="verify this string does not exist"
logrequest="yes"
logresponse="yes"
sleep="3"
/>
<case
id="2"
description1="short description"
description2="long description"
method="get"
url="http://myserver/test/send.jsp?value={TIMESTAMP}"
verifypositive="verify this string exists"
verifynextpositive="{TIMESTAMP}"
/>
Aqui está outro exemplo de arquivo codificado upload "multipart / form-data"
id="1"
description1="sample test case - POST"
description2="verify file upload"
method="post"
url="http://cgi-lib.berkeley.edu/ex/fup.cgi"
postbody="( upfile => ['config.xml'], note => 'MYCOMMENT' )"
posttype="multipart/form-data"
logrequest="yes"
logresponse="yes"
verifypositive="MYCOMMENT"
/>
O caso de teste várias são numerados com o "id" parâmetro. Eles serão executados na ordem de ID de um após o outro.
Por exemplo:
<testcases>
....
</testcases>
Você também pode adicionar o atributo "repeat" para repetir um determinado número de vezes que o teste.
<testcases repeat="5">
6 - Variáveis e Constantes
Algumas constantes e variáveis podem ser passadas para o seu teste webinject.
{TIMESTAMP}: O timestamp atual
{} PARSEDRESULT: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT1: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT2: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT3: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
BaseURL {}: Valor do "baseurl" especificado no arquivo de configuração
BASEURL1 {}: Valor do 'baseurl1' especificado no arquivo de configuração
BASEURL2 {}: Valor do 'baseurl2' especificado no arquivo de configuração
exemplo:
Se você tem um teste que usa o parâmetro:
url="http://myserver/test/login.jsp"
Você pode criar uma linha no arquivo config.xml:
<baseurl>http://myserver</baseurl>
Podemos então reescrever o parâmetro do teste:
url="{BASEURL}/test/login.jsp"
Aqui está outro exemplo:
<testcases repeat="1">
<testvar varname="LOGIN_URL">http://myserver/login.php</testvar>
<testvar varname="LOGIN1">bob</testvar>
<testvar varname="PASSWD1">sponge</testvar>
<testvar varname="SUCCESSFULL_TEST_TEXT">Welcome Bob</testvar>
<case
id="1"
description1="login test case"
description2="verify string login"
method="post"
url="${LOGIN_URL}"
postbody="login=${LOGIN1}&passwd=${PASSWD1}"
verifypositive="${SUCCESSFULL_TEST_TEXT}"
/>
</testcases>
7 - Link
O documento original Webinject
Assinar:
Postagens (Atom)
