Áú»¢¶Ä²©

16 Agente HTTP

Vis?o geral

Este tipo de item permite a coleta de dados usando o protocolo HTTP/HTTPS. Trapping tamb¨¦m ¨¦ poss¨ªvel usando o Áú»¢¶Ä²© sender ou o protocolo Áú»¢¶Ä²© sender.

A verifica??o de item HTTP ¨¦ executada pelo servidor Áú»¢¶Ä²©. No entanto, quando os hosts s?o monitorados por um proxy Áú»¢¶Ä²©, as verifica??es de itens HTTP s?o executadas pelo proxy.

As verifica??es de itens HTTP n?o exigem nenhum agente em execu??o no host que est¨¢ sendo monitorado.

O agente HTTP suporta tanto HTTP quanto HTTPS. O Áú»¢¶Ä²© 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 servidor/proxy Áú»¢¶Ä²© deve ser configurado inicialmente com suporte a cURL (libcurl).

Configura??o

Para configurar um item HTTP:

  • V¨¢ para: Configura??o ¡ú Hosts
  • Clique em Itens na linha do host
  • Clique em Criar item
  • Insira os par?metros do item no formul¨¢rio

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 ¨²nica para o item.
URL URL para conectar-se 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 para ASCII em punycode ao executar a verifica??o HTTP.
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 de URL.
Limitado a 2048 caracteres.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL .
Campos de consulta Vari¨¢veis para a URL (veja acima).
Especificados como pares de atributos e valores. Valores s?o codificados automaticamente na URL. Valores de macros s?o resolvidos e, em seguida, codificados automaticamente na URL.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL.
Tipo de solicita??o Selecione o tipo de m¨¦todo de solicita??o: GET, POST, PUT ou HEAD
Timeout O Áú»¢¶Ä²© n?o gastar¨¢ mais do que o tempo definido para processar a URL (1-60 segundos). Esse par?metro define o tempo m¨¢ximo para estabelecer uma conex?o com a URL e o tempo m¨¢ximo para executar uma solicita??o HTTP. Portanto, o Áú»¢¶Ä²© n?o gastar¨¢ mais do que 2 x Timeout segundos em uma verifica??o.
Sufixos de tempo s?o suportados, como 30s, 1m.
Macros suportados: macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL cURL.
Tipo de corpo da solicita??o Selecione o tipo de corpo da solicita??o:
Dados brutos - corpo de solicita??o HTTP personalizado, macros s?o substitu¨ªdos, mas nenhuma codifica??o ¨¦ realizada
Dados JSON - corpo da solicita??o HTTP em formato JSON. Macros podem ser usados como string, n¨²mero, true e false; macros usados como strings devem estar entre aspas duplas. Valores de macros s?o resolvidos e, em seguida, escapados automaticamente. Se "Content-Type" n?o for especificado nos cabe?alhos, ele ser¨¢ definido como "Content-Type: application/json" por padr?o.
Dados XML - corpo da solicita??o HTTP em formato XML. Macros podem ser usados como n¨® de texto, atributo ou se??o CDATA. Valores de macros s?o resolvidos e, em seguida, escapados automaticamente em um n¨® de texto e atributo. Se "Content-Type" n?o for especificado nos cabe?alhos, ele ser¨¢ definido como "Content-Type: application/xml" por padr?o.
Note que a sele??o de Dados XML requer libxml2.
Corpo da solicita??o Insira o corpo da solicita??o.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {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 solicita??o.
Especificados como pares de atributos e valores.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL .
C¨®digos de status esperados Lista de c¨®digos de status HTTP esperados. Se o Áú»¢¶Ä²© receber um c¨®digo que n?o esteja na lista, o item se tornar¨¢ n?o suportado. Se estiver vazio, nenhuma verifica??o ¨¦ realizada.
Por exemplo: 200,201,210-299
Macros suportados na lista: macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso usa a op??o cURL .
Seguir redirecionamentos Marque a caixa de sele??o para seguir redirecionamentos HTTP.
Isso define a op??o cURL .
Modo de recupera??o Selecione a parte da resposta que deve ser recuperada:
Corpo - somente corpo
Cabe?alhos - somente cabe?alhos
Corpo e cabe?alhos - corpo e cabe?alhos
Conventer para JSON Cabe?alhos s?o salvos como pares de atributos e valores sob a chave "header".
Se 'Content-Type: application/json' for encontrado, o corpo ser¨¢ salvo como um objeto, caso contr¨¢rio, ser¨¢ armazenado como string, por exemplo:
Proxy HTTP Voc¨º pode especificar um proxy HTTP a ser usado, usando o formato [protocol://][username[:password]@]proxy.example.com[:port].
O prefixo opcional protocol:// pode ser usado para especificar protocolos de proxy alternativos (por exemplo, https, socks4, socks5; consulte ; o suporte ao prefixo do protocolo foi adicionado no cURL 7.21.7). Se nenhum protocolo for 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 ao proxy, como http_proxy, HTTPS_PROXY. Se n?o for especificado, o proxy n?o substituir¨¢ as vari¨¢veis de ambiente relacionadas ao proxy. O valor inserido ¨¦ passado "como ¨¦", nenhuma verifica??o de sanidade ¨¦ realizada.
Note que apenas autentica??o simples ¨¦ suportada com proxy HTTP.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macro de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL cURL.
Atentica??o HTTP Tipo de autentica??o:
Nenhuma - nenhuma autentica??o usada.
µþ¨¢²õ¾±³¦²¹ - autentica??o b¨¢sica usada.
NTLM - autentica??o NTLM ( ¨¦ usada.
Kerberos - autentica??o Kerberos ¨¦ usada. Veja tamb¨¦m: Configuring Kerberos with Áú»¢¶Ä²©.
Digest - Autentica??o Digest ¨¦ usada.
Selecionar um m¨¦todo de autentica??o fornecer¨¢ dois campos adicionais para inserir um nome de usu¨¢rio e senha, onde macros de usu¨¢rio e macros de descoberta de baixo n¨ªvel s?o suportados.
Isso define a op??o cURL .
Verifica??o de par SSL Selecione a caixa de sele??o para verificar o certificado SSL do servido da web. O certificado do servidor ser¨¢ automaticamente obtido da localiza??o da autoridade de certifica??o (CA) do sistema. Voc¨º pode substituir a localiza??o dos arquivos CA usando o par?metro de configura??o do servidor ou proxy do Áú»¢¶Ä²©, SSLCALocation.
Isso define a op??o cURL .
SSL verify host 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 .
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 do 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 do servidor ou proxy do Áú»¢¶Ä²© SSLCertLocation.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL cURL.
Arquivo de chave SSL Nome do arquivo de chave privada SSL usado para autentica??o do cliente. O arquivo da chave privada deve estar no formato PEM1. O diret¨®rio que cont¨¦m este arquivo ¨¦ especificado pelo par?metro de configura??o do Áú»¢¶Ä²© server ou proxy, SSLKeyLocation.
Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL .
Senha da chave SSL Senha do arquivo de chave privada.
Macros suportados: macros de usu¨¢rio, macros de descoberta de baixo n¨ªvel.
Isso define a op??o cURL .
Habilitar trapping Com esta caixa de sele??o marcada, o item tamb¨¦m funcionar¨¢ como um trapper item e aceitar¨¢ dados enviados para este item pelo Áú»¢¶Ä²© sender ou usando o protocolo Áú»¢¶Ä²© sender.
Hosts permitidos Vis¨ªvel apenas se a caixa de sele??o Habilitar trapping estiver marcada.
Lista de endere?os IP delimitados por v¨ªrgula, opcionalmente em nota??o CIDR, ou nomes DNS.
Se especificado, as 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' ser?o tratados de forma igual e '::/0' permitir¨¢ qualquer endere?o IPv4 ou IPv6.
'0.0.0.0/0' pode ser usado para permitir qualquer endere?o IPv4.
Note "endere?os IPv6 compat¨ªveis com IPv4" (prefixo 0000::/96) s?o suportados, mas descontinuados pelo .
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.example.com, {HOST.HOST}
Espa?os e user macros n?o s?o permitidos nesse campo.
Macros de host: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} s?o permitidos nesse campo.

Se o campo HTTP proxy estiver vazio, aoutra maneira de usar um proxy HTTP ¨¦ definir vari¨¢veis de ambiente relacionadas ao proxy.

Para HTTP - definia a vari¨¢vel de ambiente http_proxy para o servidor do usu¨¢rio Áú»¢¶Ä²©. 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 ao executar um comando shell: # man curl.

[1] O Áú»¢¶Ä²© suporta apenas arquivos de certificado e chave privada no formato PEM. Caso voc¨º tenha os dados do certificado e da 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

Exemplos

Exemplo 1

Envie solicita??es GET simples para recuperar dados de servi?os como o Elasticsearch:

  • Crie um item GET com a URL: localhost:9200/?pretty
  • Observe a resposta:
{
         "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"
       }
  • Agora extraia o n¨²mero da vers?o usando uma etapa de pr¨¦-processamento JSONPath: $.version.number
Exemplo 2

Envie solicita??es POST simples para recuperar dados de servi?os como o Elasticsearch:

  • Crie um item POST com a URL: http://localhost:9200/str/values/_search?scroll=10s
  • Configure o seguinte corpo de POST para obter a carga do processador (m¨¦dia de 1 minuto por n¨²cleo):
{
           "query": {
               "bool": {
                   "must": [{
                       "match": {
                           "itemid": 28275
                       }
                   }],
                   "filter": [{
                       "range": {
                           "clock": {
                               "gt": 1517565836,
                               "lte": 1517566137
                           }
                       }
                   }]
               }
           }
       }
  • Recebido:
{
           "_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
                   }
               }]
           }
       }
  • Agora use uma etapa de pr¨¦-processamento JSONPath para obter o valor do item: $.hits.hits[0]._source.value
Exemplo 3

Verificando se a API Áú»¢¶Ä²© est¨¢ dispon¨ªvel, usando apiinfo.version.

  • Configura??o do item:

Note o uso do m¨¦todo POST com dados JSON, configurando cabe?alhos da requisi??o e solicitando o retorno de apenas cabe?alhos:

  • Pr¨¦-processamento do valor do item com express?o regular para obter c¨®digo HTTP:

  • Verificando o resultado nos ?ltimos dados:

Exemplo 4

Obtendo informa??es de clima pela conex?o ao servi?o p¨²blico Openweathermap.

  • Configure um item principal para coletar dados massivos em um ¨²nico JSON:

Note o uso de macros nos campos da requisi??o. Tome como refer¨ºncia a para saber como preench¨º-los.

Exemplo de JSON retornado como resposta ao agente HTTP:

{
           "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 os itens dependentes para extrair dados do JSON.

  • Configure uma amostra de item dependente para umidade:

Outras m¨¦tricas como 'Temperatura' s?o adicionados da mesma forma.

  • Amostra de item dependente de pr¨¦-processamento de valor com JSONPath:

  • Verifique o resultado dos dados meteorol¨®gicos nos ?ltimos dados:

Exemplo 5

Conectando-se ¨¤ p¨¢gina de status do Nginx e obtendo suas m¨¦tricas em massa.

  • Configure o Nginx seguindo o guia oficial .
  • Configure um item mestre para coleta de dados em massa:

Exemplo de sa¨ªda do status de stub do Nginx:

Active connections: 1 Active connections:
       server accepts handled requests
        52 52 52 
       Reading: 0 Writing: 1 Waiting: 0

A pr¨®xima tarefa ¨¦ configurar itens dependentes que extraem os dados.

  • Configure um item dependente de exemplo para solicita??es por segundo:

  • Exemplo de pr¨¦-processamento do valor do item dependente com express?o server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+):

  • Verifique o resultado completo do m¨®dulo stub em ?ltimos dados: