Este tipo de item permite a coleta de dados usando o protocolo HTTP/HTTPS. A captura também é possível usando a utilidade Zabbix sender ou o protocolo do Zabbix sender (para enviar dados ao Zabbix server ou proxy), ou usando o método de API history.push (para enviar dados ao Zabbix server).
As verificações de item HTTP são executadas pelo Zabbix server. No entanto, quando hosts são monitorados por um Zabbix proxy, as verificações de item HTTP são executadas pelo proxy.
As verificações de item HTTP não requerem nenhum agent em execução no host sendo monitorado.
O agent HTTP suporta tanto HTTP quanto HTTPS. O Zabbix seguirá, opcionalmente, redirecionamentos (veja a opção Seguir redirecionamentos abaixo). O número máximo de redirecionamentos é fixado em 10 (usando a opção cURL CURLOPT_MAXREDIRS).
O Zabbix server/proxy deve ser inicialmente configurado com suporte ao cURL (libcurl).
As verificações HTTP são executadas de forma assíncrona - não é necessário receber a resposta de uma solicitação antes que outras verificações sejam iniciadas. A resolução de DNS também é assíncrona.
A concorrência máxima de verificações assíncronas é 1000 (definida por MaxConcurrentChecksPerPoller).
O número de pollers assíncronos de agent HTTP é definido pelo parâmetro StartHTTPAgentPollers.
O recurso de conexões persistentes do cURL foi adicionado às verificações de agent HTTP a partir do Zabbix 7.0.
Para configurar um item HTTP:

Todos os campos obrigatórios estão marcados com um asterisco vermelho.
Os campos que exigem informações específicas para itens HTTP são:
| Parâmetro | Descrição |
|---|---|
| Tipo | Selecione HTTP agent aqui. |
| Chave | Insira uma chave de item exclusiva. |
| 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 verificação HTTP. 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. Limitado a 2048 caracteres. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_URL. |
| Campos de consulta | Variáveis para a URL (veja acima). Especificadas como pares de atributo e valor. Os valores são codificados automaticamente na URL. Valores de macros são resolvidos e então codificados automaticamente na URL. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_URL. |
| Tipo de requisição | Selecione o tipo de método de requisição: GET, POST, PUT ou HEAD |
| Tipo de corpo da requisição | Selecione o tipo de corpo da requisição: Dados brutos - corpo de requisição HTTP personalizado, macros são substituídas, mas nenhuma codificação é realizada Dados JSON - corpo da requisição HTTP em formato JSON. Macros podem ser usadas como string, número, true e false; macros usadas como strings devem estar entre aspas duplas. Valores de macros são resolvidos e então escapados automaticamente. Se "Content-Type" não for especificado nos cabeçalhos, será definido como "Content-Type: application/json" Dados XML - corpo da requisição HTTP em formato XML. Macros podem ser usadas como nó de texto, atributo ou seção CDATA. Valores de macros são resolvidos e então escapados automaticamente em um nó de texto e atributo. Se "Content-Type" não for especificado nos cabeçalhos, será definido como "Content-Type: application/xml" Observe que selecionar Dados XML requer libxml2. |
| Corpo da requisição | Insira o corpo da requisição. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. |
| Cabeçalhos | Cabeçalhos HTTP personalizados que serão enviados ao realizar uma requisição. Especificados como pares de atributo e valor. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_HTTPHEADER. |
| Códigos de status requeridos | Lista de códigos de status HTTP esperados. Se o Zabbix receber um código que não está na lista, o item se tornará não suportado. Se vazio, nenhuma verificação é realizada. Por exemplo: 200,201,210-299 Macros suportadas na lista: macros de usuário, macros de descoberta de baixo nível. Isso usa a opção cURL CURLINFO_RESPONSE_CODE. |
| 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 a parte da resposta que deve ser recuperada: Corpo - apenas o corpo Cabeçalhos - apenas os cabeçalhos Corpo e cabeçalhos - corpo e cabeçalhos |
| Converter para JSON | Os cabeçalhos são salvos como pares de atributo e valor sob a chave "header" se o Modo de recuperação não estiver definido como Corpo. Se 'Content-Type: application/json' for encontrado, o corpo é salvo como um objeto, caso contrário, é armazenado como string, por exemplo: ![]() |
| Proxy HTTP | Você pode especificar um proxy HTTP para usar, usando o formato [protocol://][username[:password]@]proxy.exemplo.com.br[:port].O prefixo opcional protocol:// pode ser usado para especificar protocolos de proxy alternativos (por exemplo, https, socks4, socks5; veja a documentação; o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Sem protocolo especificado, o proxy será tratado como um proxy HTTP. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado.Por padrão, a porta 1080 será usada. Se especificado, o proxy substituirá as variáveis de ambiente relacionadas a proxy como http_proxy, HTTPS_PROXY. Se não especificado, o proxy não substituirá as variáveis de ambiente relacionadas a proxy. O valor inserido é passado "como está", sem verificação de sanidade. Observe que apenas autenticação simples é suportada com proxy HTTP. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_PROXY. |
| 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. Isso define a opção cURL CURLOPT_HTTPAUTH. |
| Nome de usuário | Insira o nome de usuário (até 255 caracteres). Este campo está disponível se Autenticação HTTP estiver definido como Básica, NTLM, Kerberos ou Digest. Macros de usuário e macros de descoberta de baixo nível são suportadas. |
| Senha | Insira a senha do usuário (até 255 caracteres). Este campo está disponível se Autenticação HTTP estiver definido como Básica, NTLM, Kerberos ou Digest. Macros de usuário e macros de descoberta de baixo nível são suportadas. |
| Verificar certificado SSL | Marque a caixa de seleção para verificar o certificado SSL do servidor web. O certificado do servidor será automaticamente obtido do local da autoridade certificadora (CA) do sistema. Você pode substituir o local dos arquivos CA usando o parâmetro de configuração SSLCALocation do Zabbix server ou proxy. Isso define a opção cURL CURLOPT_SSL_VERIFYPEER. |
| Verificar host SSL | Marque a caixa de seleção 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 de arquivo de chave SSL vazio. Se a chave estiver criptografada, especifique a senha no campo de senha da chave SSL. O diretório que contém este arquivo é especificado pelo parâmetro de configuração SSLCertLocation do Zabbix server ou proxy. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. 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 SSLKeyLocation do Zabbix server ou proxy. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_SSLKEY. |
| Senha da chave SSL | Senha do arquivo de chave privada SSL. Macros suportadas: macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_KEYPASSWD. |
| Timeout | O Zabbix não gastará mais do que o tempo definido no processamento da URL (1-600 segundos). Na verdade, este parâmetro define o tempo máximo para fazer uma 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 em uma verificação. Isso define a opção cURL CURLOPT_TIMEOUT. Para mais informações sobre o parâmetro Timeout, consulte atributos gerais do item. |
| Habilitar trapping | Com esta caixa marcada, o item também funcionará como um item trapper e aceitará dados enviados ao Zabbix server ou proxy usando a utilidade Zabbix sender ou o protocolo Zabbix sender, ou aceitará dados enviados ao Zabbix server usando o método de API history.push. Para mais informações sobre o envio de dados, consulte: Itens trapper. |
| Hosts permitidos | Visível apenas se a caixa Habilitar trapping estiver marcada. Lista de endereços IP separados por vírgula, opcionalmente em notação CIDR, ou nomes DNS. Se especificado, conexões recebidas serão aceitas apenas dos hosts listados aqui. Se o suporte a IPv6 estiver habilitado, então '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' são tratados igualmente e '::/0' permitirá qualquer endereço IPv4 ou IPv6. '0.0.0.0/0' pode ser usado para permitir qualquer endereço IPv4. Observe que "endereços IPv6 compatíveis com IPv4" (prefixo 0000::/96) são suportados, mas obsoletos pelo RFC4291. Exemplo: 127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.exemplo.com.br, {HOST.HOST} Espaços e macros de usuário são permitidos neste campo. Macros de host: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} são permitidas neste campo. |
Se o campo Proxy HTTP for deixado em branco, outra forma de usar um proxy HTTP é definir variáveis de ambiente relacionadas a proxy.
Para 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 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 de shell: # man curl.
[1] O Zabbix suporta apenas arquivos de certificado e chave privada 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:
Envie solicitações GET simples para recuperar dados de serviços como Elasticsearch:
localhost:9200/?pretty {
"name" : "YQ2VAY-",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
"version" : {
"number" : "6.1.3",
"build_hash" : "af51318",
"build_date" : "2018-01-26T18:22:55.523Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You know, for search"
}$.version.numberEnvie solicitações POST simples para recuperar dados de serviços como Elasticsearch:
http://localhost:9200/str/values/_search?scroll=10s {
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
} {
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_index": "dbl",
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_score": 1.0,
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}$.hits.hits[0]._source.valueVerificando se a API do Zabbix está ativa, usando apiinfo.version.

Observe o uso do método POST com dados JSON, definindo os cabeçalhos da requisição e solicitando o retorno apenas dos cabeçalhos:


Recuperando informações meteorológicas conectando-se ao serviço público Openweathermap.

Observe o uso de macros nos campos de consulta. Consulte a API do Openweathermap para saber como preenchê-los.
Exemplo de JSON retornado em resposta ao HTTP agent:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56.11
},
"weather": [{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}],
"base": "stations",
"main": {
"temp": 15.14,
"pressure": 1012.6,
"humidity": 66,
"temp_min": 15.14,
"temp_max": 15.14,
"sea_level": 1030.91,
"grnd_level": 1012.6
},
"wind": {
"speed": 1.86,
"deg": 246.001
},
"clouds": {
"all": 20
},
"dt": 1526509427,
"sys": {
"message": 0.0035,
"country": "RU",
"sunrise": 1526432608,
"sunset": 1526491828
},
"id": 487837,
"name": "Stavrovo",
"cod": 200
}
}A próxima tarefa é configurar itens dependentes que extraem dados do JSON.

Outras métricas meteorológicas, como 'Temperatura', são adicionadas da mesma forma.


Conectando à página de status do Nginx e obtendo suas métricas em lote.

Exemplo de saída do status do Nginx:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0A próxima tarefa é configurar itens dependentes que extraem os dados.

server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+):
