Sidebar

Become a monitoring expert!
Sign up for Zabbix training

9. Monitoramento web

Visão geral

Com o Zabbix você pode verificar vários aspectos de disponibilidade de sites web.

Para executar o monitoramento web o Zabbix Server deve ser inicialmente configurado com suporte a cURL (libcurl).

Para ativar o monitoramento web você precisa definir cenários web. Um cenário web consiste de uma ou várias requisições HTTP ou "etapas". As etapas são executadas periodicamente pelo Zabbix Server em uma ordem pré-definida. Se um host é monitorado pelo Proxy, as etapas são executadas pelo Proxy.

Os cenários web são anexados aos hosts/templates da mesma forma que os itens, gatilhos, etc. Isto significa que os cenários web podem também ser criados no nível de modelo e então aplicados a múltiplos hosts em um movimento.

As seguintes informações são coletadas em qualquer cenário web:

  • média de velocidade de download por segundo para todas as etapas para o cenário completo
  • número da etapa que falhou
  • última mensagem de erro

As seguintes informações são coletadas em qualquer etapa cenário web:

  • velocidade de download por segundo
  • tempo de resposta
  • código de resposta

Para mais detalhes, veja itens de monitoramento web.

Os dados coletados pela execução dos cenários web são armazenados no banco de dados. Os dados são automaticamente usados para gráficos, gatilhos e notificações.

O Zabbix pode também verificar se uma página HTML recuperada contém uma string pré-definida. Ele pode executar uma autenticação simulada e seguir um caminho simulado de clicks de mouse na página.

O monitoramento web do Zabbix suporta ambos HTTP e HTTPS. Quando executando um cenário web, o Zabbix opcionalmente seguirá redirecionamentos (veja a opção Seguir redirecionamentos abaixo). O número máximo de redirecionamentos é gravado em código como 10 (usando a opção cURL CURLOPT_MAXREDIRS). Todos os cookies são preservados durante a execução de um cenário único.

Veja também problemas conhecidos para monitoramento web usando protocolo HTTPS.

Configurando um cenário web

Para configurar um cenário web:

  • Vá para: Configuração → Hosts (ou Modelos)
  • Clique em Web na linha do host/modelo
  • Clique em Criar cenário à direita (ou no nome do cenário para editar um cenário existente)
  • Informe os parâmetros do cenário no formulário

A aba Cenário permite que você configure os parâmetros gerais de um cenário web.

Todos os campos de entrada obrigatórios estão marcados com um asterisco vermelho.

Parâmetros de cenário:

Parâmetro Descrição
Host Nome do host/modelo ao qual o cenário pertence.
Name Nome único de cenário.
Intervalo de atualização Com que frequência o cenário será executado.
Sufixos de tempo são suportados, p.e. 30s, 1m, 2h, 1d.
Macros de usuário são suportadas. Note que se uma macro de usuário é usada e seu valor é alterado (p.e. 5m → 30s), a próxima verificação será executada de acordo com o valor anterior (distante no futuro com os valores de exemplo).
Tentativas O número de tentativas para execução das etapas do cenário web. No caso de problemas de rede (tempo esgotado, sem conectividade, etc.) o Zabbix pode repetir a execução de uma etapa por várias vezes. O conjunto de figuras afetará igualmente cada etapa do cenário. Até 10 tentativas podem ser especificadas, o valor padrão é 1.
Nota: o Zabbix não repetirá uma etapa por causa de um código de resposta errado ou incompatibilidade de uma string requerida.
Agente Selecione um agente cliente.
O Zabbix simulará ser o navegador selecionado. Isto é útil quando um site web retorna conteúdo diferente para diferentes navegadores.
Macros de usuário podem ser usadas neste campo.
Proxy HTTP Você pode especificar um proxy HTTP para usar, utilizando o formato [protocolo://][usuario[:senha]@]proxy.exemplo.com[:porta].
Isto define a opção cURL CURLOPT_PROXY.
O prefixo opcional protocolo:// pode ser usado para especificar protocolos de proxy alternativos (o suporte a prefixo de protocolo foi adicionado no cURL 7.21.7). Sem protocolo especificado, o proxy será tratado como um proxy HTTP.
Por padrão, a porta 1080 será usada.
Se especificado, o proxy irá sobrescrever as variáveis de ambiente relacionadas como http_proxy, HTTPS_PROXY. Se não especificado, o proxy não irá sobrescrever variáveis de ambiente relacionadas ao proxy. O valor informado é passado assim "como é", sem verificação de coerência sendo executada.
Você pode também informar uma endereço de proxy SOCKS. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado.
Note que apenas autenticação simples é suportada com proxy HTTP.
Macros de usuário podem ser usadas neste campo.
Variáveis Variáveis que podem ser usadas em etapas de cenário (URL, variáveis de post).
Elas têm o seguinte formato:
{macro1}=valor1
{macro2}=valor2
{macro3}=regex:<expressão regular>
Por exemplo:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid é ([0-9]+)
As macros podem então ser referenciadas nas etapas como {username}, {password} e {hostid}. O Zabbix automaticamente as substituirá com os valores atuais. Note que as variáveis com regex: precisam de uma etapa para obter o valor da expressão regular então o valor extraído só podem ser aplicados à etapa posterior.
Se a parte do valor iniciar com regex: então a parte após ela é tratada como uma expressão regular que faz uma busca na página web e, se encontrada, armazena a correspondência na variável. Ao menos um subgrupo deve estar presente de modo que o valor correspondido possa ser extraído.
Macros de usuário e macros {HOST.*} são suportadas.
As variáveis são automaticamente codificadas para URL quando usadas nos campos de consulta ou dados de formulário para variáveis post, mas devem ser codificadas para URL manualmente quando usadas em postagem bruta ou diretamente na URL.
Cabeçalhos Cabeçalhos HTTP customizados que serão enviados quando executando uma requisição.
Cabeçalhos devem ser listados usando a mesma sintaxe em que eles apareceriam no protocolo HTTP, opcionalmente usando alguns atributos adicionais suportados pela opção cURL CURLOPT_HTTPHEADER.
Por exemplo:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Macros de usuário e macros {HOST.*} são suportadas.
Habilitado O cenário está ativo se esta caixa estiver selecionada, caso contrário - desabilitado.

Note que quando editando um cenário existente, dois botões extras estão disponíveis no formulário:

Cria outro cenário baseado nas propriedades do existente.
Elimina histórico e dados de tendência para o cenário. Isto fará com que o Server execute o cenário imediatamente após eliminar os dados.

Se o campo HTTP proxy for deixado vazio, outra forma para usar um proxy HTTP é definir variáveis de ambiente relacionadas ao proxy.

Para verificações HTTP - defina a variável de ambiente http_proxy para o usuário Zabbix Server. Por exemplo, http_proxy=http://proxy_ip:proxy_port.

Para verificações HTTPS - defina a variável de ambiente HTTPS_PROXY. Por exemplo, HTTPS_PROXY=http://proxy_ip:proxy_port. Mais detalhes estão disponíveis executando um comando shell: # man curl.

A aba Etapas permite que você configure as etapas do cenário web. Para adicionar uma etapa de cenário web, clique em Adicionar no bloco Etapas.

Macros de usuário secretas não devem ser usadas nas URLs pois elas serão resolvidas para "******".

Configurando etapas

Parâmetros da etapa:

Parâmetro Descrição
Nome Nome de etapa único.
URL URL à qual conectar e recuperar dados. Por exemplo:
https://www.example.com
http://www.example.com/download
Nomes de domínio podem ser especificados em caracteres Unicode. Eles são automaticamente convertidos com punycode para ASCII quando executando a etapa do cenário web.
O botão Analisar pode ser usado para separar campos de consulta opcionais (como ?name=Admin&password=mypassword) da URL, movendo os atributos e valores para dentro dos Campos de consulta para codificação para URL automática.
Variáveis podem ser usadas na URL, usando a sintaxe de {macro}. Variáveis podem ser codificadas para URL manualmente usando a sintaxe {{macro}.urlencode()}.
Macros de usuário e macros {HOST.*} são suportadas.
Limitado a 2048 caracteres.
Campos de consulta Variáveis HTTP GET para a URL.
Especificado como pares de atributo e valor.
Valores são automaticamente codificados para URL. Valores das variáveis do cenário, macros de usuário ou macros {HOST.*} são resolvidas e então codificadas para URL automaticamente. O uso de uma sintaxe {{macro}.urlencode()} fará uma dupla codificação.
Macros de usuário e macros {HOST.*} são suportadas.
Post Variáveis HTTP POST.
No modo Form data, especificado como pares de atributo e valor.
Os valores são codificados para URL automaticamente. Os valores das variáveis de cenário, macros de usuário ou macros {HOST.*} são resolvidas e então codificadas para URL automaticamente.
No modo Raw data, atributos/valores são exibidos em uma linha única e concatenado com um símbolo &.
Valores brutos podem ser codificados/decodificados para URL manualmente usando uma sintaxe {{macro}.urlencode()} ou {{macro}.urldecode()}.
Por exemplo: id=2345&userid={user}
Se {user} é definido como uma variável do cenário web, ela será substituída pelo ser valor quando a etapa é executada. Se você desejar codificar a variável para URL, substitua {user} por {{user}.urlencode()}.
Macros de usuário e macros {HOST.*} são suportadas.
Variáveis Variáveis em nível de etapa que podem ser usadas para funções GET e POST.
Especificado como pares de atributo e valor.
Variáveis em nível de etapa sobrescrevem variáveis em nível de cenário ou variáveis de etapas anteriores. No entanto, o valor de uma variável em nível de etapa afeta apenas a etapa posterior (e não a etapa atual).
Elas tem o seguinte formato:
{macro}=value
{macro}=regex:<expressão regular>
Para mais informações veja a descrição da variável no nível do cenário.
Variáveis são automaticamente codificadas para URL quando usadas em campos de consulta ou formulários de dados para variáveis de postagem, mas devem ser codificadas para URL manualmente quando usadas em postagem bruta ou diretamente na URL.
Cabeçalhos Cabeçalhos HTTP customizados que serão enviados quando executando uma requisição.
Especificado como pares de atributo ou valor.
Cabeçalhos no nível da etapa irão sobrescrever os cabeçalhos especificados para o cenário.
Por exemplo, definindo um atributo 'User-Agent' com valor ausente removerá o valor User-Agent definido no nível do cenário.
Macros de usuário e macros {HOST.*} são suportados.
Isto define a opção cURL CURLOPT_HTTPHEADER.
Seguir redirecionamentos Marque a caixa de seleção para seguir redirecionamentos HTTP.
Isto define a opção cURL CURLOPT_FOLLOWLOCATION.
Modo de recuperação Selecione o modo de recuperação:
Body - recupera apenas o corpo da resposta HTTP
Headers - recupera apenas cabeçalhos da resposta HTTP
Body and headers - recupera corpo e cabeçalhos da resposta HTTP
Tempo limite O Zabbix não gastará mais do que a quantidade de tempo definida no processamento da URL (de um segundo ao máximo 1 hora). Atualmente este parâmetro define o tempo máximo para fazer a conexão à URL e o tempo máximo para executar uma requisição HTTP. Portanto, o Zabbix não gastará mais do que 2 x Tempo limite segundos na etapa.
Sufixos de tempo são suportados, p.e. 30s, 1m, 1h. Macros de usuário são suportadas.
String requerida Padrão de expressão regular requerida.
A menos que o conteúdo recuperado (HTML) corresponda ao padrão requerido a etapa falhará. Se vazio, nenhuma verificação na string requerida é executada.
Por exemplo:
Homepage of Zabbix
Welcome.*admin
Nota: Referência à expressões regulares criadas no Zabbix Frontend não é suportada neste campo.
Macros de usuário e macros {HOST.*} são suportadas.
Códigos de estado requeridos Lista de códigos de estado HTTP. Se o Zabbix obtém um código que não está na lista, a etapa falhará.
Se vazio, nenhuma verificação nos códigos de estado é executada.
Por exemplo: 200,201,210-299
Macros de usuário são suportadas.

Quaisquer mudanças nas etapas do cenário web só serão salvas quando o cenário por completo for salvo.

Veja também um exemplo da vida real de como as etapa de monitoramento web podem ser configuradas.

Configurando etiquetas

A aba de Etiquetas permite definir etiquetas no nível de cenário.

A etiquetagem permite filtrar cenários web e itens de monitoramento web.

Configurando autenticação

A aba de Autenticação permite que você configure as opções de autenticação de cenário. Um ponto verde próximo ao nome da aba indica que algum tipo de autenticação HTTP está habilitada.

Parâmetros de autenticação:

Parâmetro Descrição
Autenticação Opções de autenticação.
None - nenhuma autenticação é usada.
Basic - autenticação básica é usada.
NTLM - autenticação NTLM (Windows NT LAN Manager) é usada.
Kerberos - autenticação Kerberos é usada. Veja também: Configurando Kerberos com Zabbix.
Digest - autenticação Digest é usada.
Selecionar um método de autenticação proverá dois campos adicionais para informar nome de usuário e senha.
Macros de usuário podem ser usadas nos campos de usuário e senha.
Verificação de par SSL Marque a caixa de seleção para verificar o certificado do SSL do servidor web.
O certificado do servidor será automaticamente obtido da localização da autoridade de certificado do sistema (CA). Você pode sobrescrever a localização dos arquivos CA usando o parâmetro de configuração SSLCALocation do Zabbix Server ou Proxy.
Isto configura a opção cURL CURLOPT_SSL_VERIFYPEER.
Verificação de host SSL Marque a caixa de seleção para verificar se o campo Nome comum (Common Name) ou o Nome de Assunto Alternativo (Subject Alternate Name) do certificado do servidor web corresponde.
Isto define a opção cURL CURLOPT_SSL_VERIFYHOST.
Arquivo de certificado SSL Nome do arquivo de certificado SSL usado para autenticação do cliente. O arquivo de certificado deve estar no formato PEM1. Se o arquivo de certificado contém também a chave primária, deixe o campo Arquivo de chave SSL vazio. Se a chave está criptografada, especifique a senha no campo Senha da chave SSL. O diretório contendo este arquivo está especificado pelo parâmetro de configuração SSLCertLocation do Zabbix Server ou Proxy.
Macros HOST.* e macros de usuário podem ser usadas neste campo.
Isto define a opção cURL CURLOPT_SSLCERT.
Arquivo de chave SSL Nome do arquivo de chave privada SSL usado para autenticação de cliente. O arquivo de chave privada deve estar no formato PEM1. O diretório contendo este arquivo está especificado pelo parâmetro de configuração SSLKeyLocation do Zabbix Server ou Proxy.
Macros HOST.* e macros de usuário podem ser usadas neste campo.
Isto define a opção cURL CURLOPT_SSLKEY.
Senha da chave SSL Senha do arquivo de chave privada SSL.
Macros de usuário podem ser usadas neste campo.
Isto define a opção cURL CURLOPT_KEYPASSWD.

[1] O Zabbix suporta arquivos de certificado e chave privada apenas no formato PEM. No caso de você ter seu dados de certificado e chave privada em arquivo no formato PKCS #12 (usualmente com extensão *.p12 ou *.pfx) você pode gerar o arquivo PEM a partir deles usando os seguintes comandos:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

O Zabbix Server reconhece mudanças nos certificados sem uma reinicialização.

Se você possui o certificado do cliente e chave privada em um único arquivo, o especifique apenas em um campo "Arquivo de certificado SSL" e deixe o campo
"Arquivo de chave SSL" vazio. O certificado e chave ainda devem estar no formato PEM. Combinar certificado e chave é simples:

cat client.crt client.key > client.pem

Exibição

Para visualizar cenários web configurados para um host, vá até Monitoramento → Hosts, localize o host na lista e clique no hyperlink Web na última coluna. Clique no nome do cenário para obter informações detalhadas.

Uma visão geral dos cenários web também pode ser exibida em Monitoramento → Dashboard por meio de um widget de Monitoramento web.

Resultados recentes da execução do cenário web estão disponíveis na seção Monitoramento → Últimos dados.

Monitoramento estendido

Algumas vezes é necessário registrar em log o conteúdo recebido de uma página HTML. Isto é especialmente útil se algum cenário web falhar. O nível de depuração 5 (trace) server a esse propósito. Este nível pode ser definido nos arquivos de configuração do Server e Proxy ou usando uma opção de controle de tempo de execução (-R log_level_increase="http poller,N", onde N é o número do processo). Os seguintes exemplos demonstram como o monitoramento estendido pode ser iniciado considerando que o nível de depuração 4 já esteja definido:

Aumente o nível de log de todos o pollers http:
       shell> zabbix_server -R log_level_increase="http poller"
       
       Aumente o nível de log do segundo poller http:
       shell> zabbix_server -R log_level_increase="http poller,2"

Se o monitoramento web estendido não é necessário ele pode ser parado usando a opção -R log_level_decrease.