7 Monitoramento web

Visão geral

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

Para realizar 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 em uma ou várias requisições HTTP, ou "etapas". As etapas são executadas periodicamente pelo Zabbix server em uma ordem predefinida. Se um host for monitorado por proxy, as etapas serão executadas pelo proxy.

Os cenários web são vinculados a hosts/templates da mesma forma que items, triggers etc. Isso significa que os cenários web também podem ser criados no nível de template e depois aplicados a vários hosts de uma só vez.

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

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

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

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

Para mais detalhes, consulte itens de monitoramento web.

Os dados coletados da execução de cenários web são mantidos no banco de dados. Os dados são usados automaticamente para gráficos, triggers e notificações.

O Zabbix também pode verificar se uma página HTML recuperada contém uma string predefinida. Ele pode executar um login simulado e seguir um caminho de cliques de mouse simulados na página.

O monitoramento web do Zabbix oferece suporte a HTTP e HTTPS. Ao executar um cenário web, o Zabbix opcionalmente seguirá redirecionamentos (consulte a opção Follow redirects abaixo). O número máximo de redirecionamentos é fixo em 10 (usando a opção cURL CURLOPT_MAXREDIRS). Todos os cookies são preservados durante a execução de um único cenário.

Configurando um cenário web

Para configurar um cenário web:

  • Vá para: Coleta de dados → Hosts (ou Templates)
  • Clique em Web na linha do host/template
  • Clique em Criar cenário web à direita (ou no nome do cenário para editar um cenário existente)
  • Insira os parâmetros do cenário no formulário

A aba Cenário permite configurar os parâmetros gerais de um cenário web.

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

Parâmetros do cenário:

Parâmetro Descrição
Nome Nome único do cenário.
Macros de usuário são suportadas. Observação: se macros de usuário forem usadas, essas macros permanecerão não resolvidas nos nomes dos itens de monitoramento web.
Intervalo de atualização Com que frequência o cenário será executado.
Sufixos de tempo são suportados, por exemplo, 30s, 1m, 2h, 1d.
Macros de usuário são suportadas. Observação: se uma macro de usuário for usada e seu valor for alterado (por exemplo, 5m → 30s), a próxima verificação será executada de acordo com o valor anterior (mais distante no futuro com os valores de exemplo).
Novos cenários web serão verificados em até 60 segundos após sua criação.
Tentativas O número de tentativas para executar as etapas do cenário web. Em caso de problemas de rede (timeout, sem conectividade, etc) o Zabbix pode repetir a execução de uma etapa várias vezes. O valor definido afetará igualmente cada etapa do cenário. Podem ser especificadas até 10 tentativas, o valor padrão é 1.
Observação: o Zabbix não repetirá uma etapa devido a um código de resposta incorreto ou à incompatibilidade de uma string obrigatória.
Agent Selecione um agent cliente.
O Zabbix irá simular ser o navegador selecionado. Isso é útil quando um site retorna conteúdo diferente para navegadores diferentes.
Macros de usuário podem ser usadas neste campo.
Proxy HTTP Você pode especificar um proxy HTTP para usar, usando o formato [protocol://][username[:password]@]proxy.example.com[:port].
Isso define a opção cURL CURLOPT_PROXY.
O prefixo opcional protocol:// pode ser usado para especificar protocolos de proxy alternativos (o suporte ao 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 sobrescreverá as variáveis de ambiente relacionadas ao proxy, como http_proxy, HTTPS_PROXY. Se não for especificado, o proxy não sobrescreverá as variáveis de ambiente relacionadas ao proxy. O valor inserido é passado "como está", sem verificação de sanidade.
Você também pode inserir um endereço de proxy SOCKS. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado.
Observação: 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 nas etapas do cenário (URL, variáveis post).
Elas têm o seguinte formato:
{macro1}=valor1
{macro2}=valor2
{macro3}=regex:<expressão regular>
{macro4}=jsonpath:<jsonpath>
{macro5}=xmlxpath:<xmlxpath>
{macro6}={{macro}.function()} (veja funções de macro)
Por exemplo:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
As macros podem então ser referenciadas nas etapas como {username}, {password}, {hostid}, etc. O Zabbix irá substituí-las automaticamente pelos valores reais. Observe que variáveis com regex: precisam de uma etapa para obter o valor da expressão regular, para que o valor extraído só possa ser aplicado à etapa seguinte.
Se a parte do valor começar com regex:, então a parte após ela é tratada como uma expressão regular que pesquisa a página web e, se encontrada, armazena a correspondência na variável. Pelo menos um subgrupo deve estar presente para que o valor correspondente possa ser extraído.
Macros de usuário e {HOST.*} macros são suportadas.
As variáveis são automaticamente codificadas em URL quando usadas em campos de consulta ou dados de formulário para variáveis post, mas devem ser codificadas manualmente quando usadas em post bruto ou diretamente na URL.
Cabeçalhos Cabeçalhos HTTP são usados ao executar uma requisição. Cabeçalhos padrão e personalizados podem ser usados.
Cabeçalhos serão atribuídos usando as configurações padrão dependendo do tipo de Agent selecionado em uma lista suspensa no nível do cenário, e serão aplicados a todas as etapas, a menos que sejam definidos de forma personalizada no nível da etapa.
Deve-se observar que definir o cabeçalho no nível da etapa descarta automaticamente todos os cabeçalhos definidos anteriormente, exceto o cabeçalho padrão que é atribuído ao selecionar o 'User-Agent' em uma lista suspensa no nível do cenário.
No entanto, mesmo o cabeçalho padrão 'User-Agent' pode ser sobrescrito ao especificá-lo no nível da etapa.
Para desabilitar o cabeçalho no nível do cenário, o cabeçalho deve ser nomeado e atribuído sem valor no nível da etapa.
Cabeçalhos devem ser listados usando a mesma sintaxe que apareceriam no protocolo HTTP, opcionalmente usando alguns recursos 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 {HOST.*} macros são suportadas.
Ativado O cenário está ativo se esta caixa estiver marcada, caso contrário, está desativado.

Observe que ao editar um cenário existente, dois botões extras estão disponíveis no formulário:

Cria outro cenário com base nas propriedades do existente.
Exclui os dados de histórico e tendência do cenário. Isso fará com que o server execute o cenário imediatamente após a exclusão dos dados.

Se o campo Proxy HTTP for deixado em branco, outra maneira de usar um proxy HTTP é definir as variáveis de ambiente relacionadas ao proxy.

Para verificações HTTP - defina a variável de ambiente http_proxy para o usuário do 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 o comando shell: # man curl.

A aba Etapas permite configurar as etapas do cenário web. Para adicionar uma etapa ao cenário web, clique em Adicionar no bloco Etapas.

Macros de usuário secretas não devem ser usadas em URLs, pois serão resolvidas como "******".

Configurando etapas

Parâmetros da etapa:

Parâmetro Descrição
Nome Nome exclusivo da etapa.
Macros de usuário são suportadas. Observe que, se macros de usuário forem usadas, essas macros permanecerão não resolvidas nos nomes de itens de monitoramento web.
URL URL para conectar e recuperar dados. Por exemplo:
https://www.example.com
http://www.example.com/download
Nomes de domínio podem ser especificados com caracteres Unicode. Eles são automaticamente convertidos de punycode para ASCII ao executar a etapa do cenário web.
O botão Parse pode ser usado para separar campos de consulta opcionais (como ?name=Admin&password=mypassword) da URL, movendo os atributos e valores para Campos de consulta para codificação automática da URL.
Variáveis podem ser usadas na URL, utilizando a sintaxe {macro}. As variáveis podem ser codificadas manualmente para URL usando a sintaxe {{macro}.urlencode()}.
Macros de usuário e macros} são suportadas.
Limitado a 2048 caracteres.
Campos de consulta Variáveis HTTP GET para a URL.
Especificadas como pares de atributo e valor.
Os valores são codificados automaticamente para URL. Valores de variáveis do cenário, macros de usuário ou macros {HOST.*} são resolvidos e então codificados automaticamente para URL. O uso da sintaxe {{macro}.urlencode()} fará uma codificação dupla da URL.
Macros de usuário e macros} são suportadas.
Post Variáveis HTTP POST.
No modo Form data, especificadas como pares de atributo e valor.
Os valores são codificados automaticamente para URL. Valores de variáveis do cenário, macros de usuário ou macros {HOST.*} são resolvidos e então codificados automaticamente para URL.
No modo Raw data, atributos/valores são exibidos em uma única linha e concatenados com o símbolo &.
Valores brutos podem ser codificados/decodificados manualmente para URL usando a sintaxe {{macro}.urlencode()} ou {{macro}.urldecode()}.
Por exemplo: id=2345&userid={user}
Se {user} estiver definida como uma variável do cenário web, ela será substituída pelo seu valor quando a etapa for executada. Se desejar codificar a variável para URL, substitua {user} por {{user}.urlencode()}.
Macros de usuário e macros} são suportadas.
Variáveis Variáveis no nível da etapa que podem ser usadas para funções GET e POST.
Especificadas como pares de atributo e valor.
Variáveis no nível da etapa substituem variáveis no nível do cenário ou variáveis da etapa anterior. No entanto, o valor de uma variável no nível da etapa afeta apenas a etapa seguinte (e não a etapa atual).
Elas têm o seguinte formato:
{macro}=valor
{macro}=regex:<expressão regular>
Para mais informações, consulte a descrição de variáveis no nível do cenário.
As variáveis são automaticamente codificadas para URL quando usadas em campos de consulta ou dados de formulário para variáveis post, mas devem ser codificadas manualmente para URL quando usadas em post bruto ou diretamente na URL.
Cabeçalhos Cabeçalhos HTTP personalizados que serão enviados ao executar uma solicitação.
Especificados como pares de atributo e valor.
Um cabeçalho definido no nível da etapa será usado para essa etapa específica.
Observe que definir o cabeçalho no nível da etapa descarta automaticamente todos os cabeçalhos definidos anteriormente, exceto um cabeçalho padrão atribuído ao selecionar 'User-Agent' em uma lista suspensa no nível do cenário.
No entanto, até mesmo o cabeçalho padrão 'User-Agent' pode ser substituído ao especificá-lo no nível da etapa.
Por exemplo, atribuir o nome a um cabeçalho, mas não definir valor, removerá o cabeçalho padrão no nível do cenário.
Macros de usuário e macros {HOST.*} são suportadas.
Isso define a opção cURL CURLOPT_HTTPHEADER.
Seguir redirecionamentos Marque a caixa de seleção para seguir redirecionamentos HTTP.
Isso define a opção cURL CURLOPT_FOLLOWLOCATION.
Modo de recuperação Selecione o modo de recuperação:
Body - recupera somente o corpo da resposta HTTP
Headers - recupera somente os cabeçalhos da resposta HTTP
Body and headers - recupera o corpo e os cabeçalhos da resposta HTTP
Timeout O Zabbix não gastará mais do que o tempo definido para processar a URL (de um segundo até no máximo 1 hora). Na prática, este parâmetro define o tempo máximo para estabelecer conexão com a URL e o tempo máximo para executar uma solicitação HTTP. Portanto, o Zabbix não gastará mais do que 2 x Timeout segundos na etapa.
Sufixos de tempo são suportados, por exemplo, 30s, 1m, 1h. Macros de usuário são suportadas.
String obrigatória Padrão obrigatório de expressão regular.
A menos que o conteúdo recuperado (HTML) corresponda ao padrão obrigatório, a etapa falhará. Se estiver vazio, nenhuma verificação da string obrigatória será realizada.
Por exemplo:
Página inicial do Zabbix
Welcome.*admin
Observação: Não há suporte, neste campo, para referência a expressões regulares criadas no frontend do Zabbix.
Macros de usuário e macros} são suportadas.
Códigos de status obrigatórios Lista de códigos de status HTTP esperados. Se o Zabbix receber um código que não esteja na lista, a etapa falhará.
Se estiver vazio, nenhuma verificação dos códigos de status será realizada.
Por exemplo: 200,201,210-299
Macros de usuário são suportadas.

Quaisquer alterações nas etapas do cenário web só serão salvas quando o cenário inteiro for salvo.

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

Configurando tags

A aba Tags permite definir tags no nível do cenário.

A marcação permite filtrar cenários web e items de monitoramento web.

Configurando autenticação

A aba Autenticação permite configurar as opções de autenticação do cenário. Um ponto verde ao lado do nome da aba indica que algum tipo de autenticação HTTP está habilitado.

Parâmetros de autenticação:

Parâmetro Descrição
Autenticação HTTP Selecione a opção de autenticação:
Nenhuma - nenhuma autenticação é usada;
Básica - 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.
Usuário Informe o nome do usuário (até 255 caracteres).
Este campo está disponível se Autenticação HTTP estiver definida como Básica, NTLM, Kerberos ou Digest. Macros de usuário são suportadas.
Senha Informe a senha do usuário (até 255 caracteres).
Este campo está disponível se Autenticação HTTP estiver definida como Básica, NTLM, Kerberos ou Digest. Macros de usuário são suportadas.
Verificar SSL peer Marque a caixa para verificar o certificado SSL do servidor web.
O certificado do servidor será obtido automaticamente do local da autoridade certificadora (CA) do sistema. Você pode sobrescrever o local dos arquivos CA usando o parâmetro de configuração do Zabbix server ou proxy SSLCALocation.
Isso define a opção cURL CURLOPT_SSL_VERIFYPEER.
Verificar host SSL Marque a caixa para verificar se o campo Common Name ou o campo Subject Alternate Name do certificado do servidor web corresponde.
Isso 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 também contiver a chave privada, deixe o campo Arquivo de chave SSL em branco. Se a chave estiver criptografada, especifique a senha no campo Senha da chave SSL. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy SSLCertLocation.
Macros HOST.* e macros de usuário podem ser usadas neste campo.
Isso define a opção cURL CURLOPT_SSLCERT.
Arquivo de chave SSL Nome do arquivo de chave privada SSL usado para autenticação do cliente. O arquivo de chave privada deve estar no formato PEM1. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy SSLKeyLocation.
Macros HOST.* e macros de usuário podem ser usadas neste campo.
Isso 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.
Isso define a opção cURL CURLOPT_KEYPASSWD.

[1] O Zabbix suporta arquivos de certificado e chave privada apenas no formato PEM. Caso você tenha seu certificado e chave privada em um arquivo no formato PKCS #12 (geralmente com extensão *.p12 ou *.pfx), você pode gerar o arquivo PEM a partir dele 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 aplica alterações em certificados sem reinicialização.

Se você tiver o certificado do cliente e a chave privada em um único arquivo, basta especificá-lo no campo "Arquivo de certificado SSL" e deixar o campo "Arquivo de chave SSL" em branco. O certificado e a chave ainda devem estar no formato PEM. Combinar o certificado e a chave é fácil:

cat client.crt client.key > client.pem

Exibição

Para visualizar os cenários web configurados para um host, vá para Monitoramento → Hosts, localize o host na lista e clique no hiperlink 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 Dashboards pelo widget de Monitoramento web.

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

Monitoramento estendido

Às vezes, é necessário registrar o conteúdo da página HTML recebida. Isso é especialmente útil se alguma etapa do cenário web falhar. O nível de depuração 5 (trace) serve para esse propósito. Esse nível pode ser definido nos arquivos de configuração do server e do proxy ou usando uma opção de controle em tempo de execução (-R log_level_increase="http poller,N", onde N é o número do processo). Os exemplos a seguir demonstram como o monitoramento estendido pode ser iniciado, desde que o nível de depuração 4 já esteja definido:

# Aumentar o nível de log de todos os http pollers:
zabbix_server -R log_level_increase="http poller"

# Aumentar o nível de log do segundo http poller:
zabbix_server -R log_level_increase="http poller,2"

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