Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

9 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 um proxy, as etapas são executadas pelo proxy.

Os cenários web são vinculados a hosts/templates da mesma forma que items, triggers, etc. Isso significa que cenários web também podem ser criados em nível de template e, em seguida, 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, veja itens de monitoramento web.

Os dados coletados a partir 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 simulados do mouse na página.

O monitoramento web do Zabbix suporta HTTP e HTTPS. Ao executar um cenário web, o Zabbix irá, opcionalmente, seguir redirecionamentos (veja a opção Seguir redirecionamentos abaixo). O número máximo de redirecionamentos é definido 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. Nota que se macros de usuário forem usadas, essas macros permanecerão não resolvidas nos nomes dos itens de monitoramento web.
URL URL para conectar e recuperar dados. Por exemplo:
https://www.exemplo.com.br
http://www.exemplo.com.br/download
Nomes de domínio podem ser especificados em caracteres Unicode. Eles são automaticamente convertidos para ASCII (punycode) ao executar 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 Campos de consulta para codificação automática da URL.
Variáveis podem ser usadas na URL, usando a sintaxe {macro}. Variáveis podem ser codificadas manualmente usando a sintaxe {{macro}.urlencode()}.
Macros de usuário e {HOST.*} 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. Valores de variáveis do cenário, macros de usuário ou macros {HOST.*} são resolvidos e então codificados automaticamente. Usar a sintaxe {{macro}.urlencode()} irá codificá-los duas vezes.
Macros de usuário e {HOST.*} macros são suportadas.
Post Variáveis HTTP POST.
No modo Dados do formulário, especificadas como pares de atributo e valor.
Os valores são codificados automaticamente. Valores de variáveis do cenário, macros de usuário ou macros {HOST.*} são resolvidos e então codificados automaticamente.
No modo Dados brutos, atributos/valores são exibidos em uma única linha e concatenados com o símbolo &.
Valores brutos podem ser codificados/decodificados manualmente usando a sintaxe {{macro}.urlencode()} ou {{macro}.urldecode()}.
Por exemplo: id=2345&userid={user}
Se {user} for definida como uma variável do cenário web, ela será substituída por seu valor quando a etapa for executada. Se desejar codificar a variável, substitua {user} por {{user}.urlencode()}.
Macros de usuário e {HOST.*} 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 só afeta 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, veja a descrição da variável no nível do cenário.
As variáveis são codificadas automaticamente 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 personalizados que serão enviados ao executar uma requisição.
Especificados como pares de atributo e valor.
Um cabeçalho definido no nível da etapa será usado apenas para aquela 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, até mesmo o cabeçalho padrão 'User-Agent' pode ser sobrescrito ao especificá-lo no nível da etapa.
Por exemplo, atribuir o nome a um cabeçalho, mas não definir valor, irá desabilitar 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:
Corpo - recupera apenas o corpo da resposta HTTP
Cabeçalhos - recupera apenas os cabeçalhos da resposta HTTP
Corpo e cabeçalhos - recupera corpo e 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é o máximo de 1 hora). Na verdade, este parâmetro define o tempo máximo para fazer a conexão com a URL e o tempo máximo para executar uma requisiçã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 de expressão regular obrigatório.
A menos que o conteúdo recuperado (HTML) corresponda ao padrão obrigatório, a etapa falhará. Se vazio, nenhuma verificação de string obrigatória é realizada.
Por exemplo:
Página inicial do Zabbix
Bem-vindo.*admin
Nota: Referenciar expressões regulares criadas no frontend do Zabbix não é suportado neste campo.
Macros de usuário e {HOST.*} 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 está na lista, a etapa falhará.
Se vazio, nenhuma verificação de códigos de status é 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 todo o cenário 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.