Áú»¢¶Ä²©

16 Agent HTTP

Vista general

Aquest tipus d'element permet interrogar les dades emprant el protocol HTTP/HTTPS. El trap tamb¨¦ ¨¦s possible emprant Áú»¢¶Ä²© Sender o el protocol Áú»¢¶Ä²© Sender, o emprant el m¨¨tode API history.push (per enviar informaci¨® al servidor Áú»¢¶Ä²©).

La verificaci¨® d'elements HTTP les executa el servidor Áú»¢¶Ä²©. De tota manera, quan els equips s¨®n monitorats per un proxy Áú»¢¶Ä²©, aquestes verificacions les fa el propi proxy.

Les verificacions d'elements HTTP es poden fer sense que l'equip monitorat executi l'agent Áú»¢¶Ä²©.

L'agent HTTP admet HTTP i HTTPS. Áú»¢¶Ä²© seguir¨¤ opcionalment les redireccions (veieu l'opci¨® Seguir les redireccions aqu¨ª sota). El nombre m¨¤xim de redirecions s'ha definit en 10 (emprant l'opci¨® cURL CURLOPT_MAXREDIRS).

El servidor/proxy Áú»¢¶Ä²© s'ha de configurar inicialment amb el suport de cURL (libcurl).

Les comprovacions HTTP s'executen de manera as¨ªncrona: no cal rebre la resposta a una petici¨® abans que s'inici?n altres comprovacions. La resoluci¨® de DNS tamb¨¦ ¨¦s as¨ªncrona.

La concurr¨¨ncia m¨¤xima de comprovacions as¨ªncrones ¨¦s 1000 (definida per MaxConcurrentChecksPerPoller).

El nombre d'enquestadors d'agent HTTP as¨ªncrons el defineix el par¨¤metre StartHTTPAgentPollers.

La funci¨® cURL de connexions persistents s'ha afegit a les comprovacions de l'agent HTTP des de Áú»¢¶Ä²© 7.0.

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®

Per configurar un element HTTP:

  • Aneu a: °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® ¡ú Equips
  • Feu clic a Items a la fila de l'equip
  • Feu clic a Crear element
  • Introdu?u els par¨¤metres de l'element al formulari

Tots els camps d'entrada obligatoris s¨®n marcats amb un asterisc vermell.

Els camps que requereixen informaci¨® espec¨ªfica per als elements HTTP s¨®n:

±Ê²¹°ù¨¤³¾±ð³Ù°ù±ð ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®
Type Trieu Agent HTTP ²¹±ç³Ü¨ª.
Key Introdu?u una clau d'element ¨²nica.
URL URL de connexi¨® i recuperaci¨® de dades. Per exemple:
https://www.example.com
http://www.example.com/download
Els noms de domini es poden especificar en car¨¤cters Unicode. Es converteixen autom¨¤ticament de punycode a ASCII quan s'executa la comprovaci¨® HTTP.
El bot¨® Analitzar es pot emprar per separar els camps de consulta opcionals (com ara ?name=Admin&password=mypassword) de l'URL, movent els atributs i els valors als camps de consulta per a la codificaci¨® autom¨¤tica d'URL.
Limitat a 2048 car¨¤cters.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST . NOM}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix el . .se/libcurl/c/CURLOPT_URL.html) de cURL.
Camps de consulta Variables per a l'URL (veieu m¨¦s amunt).
Especificat com a parells d'atribut i valor.
Els valors es codifiquen autom¨¤ticament per URL. Els valors de macro es resolen i despr¨¦s es codifica autom¨¤ticament l'URL.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM .ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix el de cURL.
Tipus de petici¨® Trieu el tipus de m¨¨tode de petici¨®: GET, POST, PUT o HEAD
Temps d'espera Áú»¢¶Ä²© no gastar¨¤ m¨¦s del temps establert al processament d'URL (1-60 segons). De fet, aquest par¨¤metre defineix el temps m¨¤xim per establir una connexi¨® a l'URL i el temps m¨¤xim per fer una petici¨® HTTP. Per tant, Áú»¢¶Ä²© no dedicar¨¤ m¨¦s de 2 segons de temps d'espera en una comprovaci¨®.
S'admeten sufixos de temps, p. 30 s, 1 min.
Macros admeses: macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix el de cURL .
Tipus de cos de la petici¨® Trieu el tipus de cos de la petici¨®:
Dades en brut: cos de petici¨® HTTP personalitzat, les macros es substitueixen per¨° no es fa cap codificaci¨®
Dades JSON: cos de la petici¨® HTTP a Format JSON. Les macros es poden emprar com a cadena, nombre, vertader i fals; Les macros emprades com a cadenes s'han de lliurar entre cometes dobles. Els valors de macro es resolen i despr¨¦s s'escapa autom¨¤ticament. Si no s'especifica "Tipus de contingut" a les cap?aleres, ser¨¤ per defecte "Tipus de contingut: aplicaci¨®/json"
Dades XML: cos de la petici¨® HTTP en format XML. Les macros es poden emprar com a node de text, atribut o secci¨® CDATA. Els valors de macro es resolen i despr¨¦s s'escapa autom¨¤ticament a un node i atribut de text. Si "Content-Type" no s'especifica a les cap?aleres, per defecte ser¨¤ "Content-Type: application/xml"
Tingueu en compte que triar XML Data requereix libxml2.
Cos de la petici¨® Introdu?u el cos de la petici¨®.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, { ARTICLE. ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Cap?aleres Cap?aleres HTTP personalitzades que s'enviaran en executar una petici¨®.
Especificada com a parells d'atributs i valors.
Macros admeses: {HOST .IP}, {HOST.CONN}, {HOST.DNS} , {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® de cURL.
Codis d'estat obligatoris Llista de codis d'estat HTTP esperats. Si Áú»¢¶Ä²© obt¨¦ un codi que no es troba a la llista, l'element ja no ser¨¤ compatible. Si ¨¦s buit, no es fa pas cap comprovaci¨®.
Per exemple: 200,201,210-299
Macros admeses a la llista: macros d'usuari, macros de descoberta de baix nivell.
Aix¨° empra l'opci¨® CURLINFO _RESPONSE_CODE de cURL.
Seguir redireccions Marqueu la casella per seguir les redireccions HTTP.
Aix¨° estableix l'opci¨® cURL .
Mode de recuperaci¨® Trieu la part de la resposta que voleu recuperar:
Cos - nom¨¦s el cos
Cap?aleres - nom¨¦s les cap?aleres
Cos i cap?aleres - cos i cap?aleres
Convertir a JSON Les cap?aleres es desen com a parells d'atributs i valors sota la clau "cap?alera".
Si es troba "Tipus de contingut: aplicaci¨®/json", el cos es desa com a objecte, en cas contrari s'emmagatzema com a cadena, per exemple:
Proxy HTTP Podeu especificar un proxy HTTP per emprar, emprant el format [protocol://][nom d'usuari[:contrasenya]@]proxy.example.com[:port].
El prefix opcional protocol:// es pot emprar per especificar protocols de proxy alternatius (per exemple, https, socks4, socks5; veieu ; el suport del prefix de protocol era afegit a cURL 7.21.7. Sense un protocol especificat, el proxy es tractar¨¤ com un proxy HTTP. Si especifiqueu un protocol incorrecte, la connexi¨® fallar¨¤ i l'element ja no ser¨¤ compatible. br>Per defecte, s'emprar¨¤ el port 1080.
Si s'especifica, el proxy substituir¨¤ les variables d'entorn relacionades amb el proxy, com ara http_proxy, HTTPS_PROXY. Si no s'especifica, el proxy no sobreescriur¨¤ les variables d'entorn relacionades amb el proxy. El valor introdu?t es passa "tal com ve", no es fa cap comprovaci¨® d'integritat.
Tingueu en compte que nom¨¦s s'admet l'autenticaci¨® simple amb el proxy HTTP.
Macros compatibles: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, { HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY }, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® cURL .
´¡³Ü³Ù±ð²Ô³Ù¾±³¦²¹³¦¾±¨® HTTP Tipus d'autenticaci¨®:
Cap: no s'empra cap autenticaci¨®.
µþ¨¤²õ¾±³¦²¹: s'empra l'autenticaci¨® b¨¤sica.
NTLM - NTLM ().
Kerberos: s'empra l'autenticaci¨® Kerberos. Veieu tamb¨¦: °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de Kerberos amb Áú»¢¶Ä²©.
Digest: s'empra l'autenticaci¨® de Digest.
Seleccionar un m¨¨tode d'autenticaci¨® proporcionar¨¤ dos camps addicionals per introduir un nom d'usuari i mot de pas, on s'admeten macros d'usuari i macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® cURL .
Verifiqueu SSL peer Marqueu la casella per verificar el certificat SSL del servidor web. El certificat del servidor es recuperar¨¤ autom¨¤ticament des de la ubicaci¨® de l'Autoritat de certificaci¨® (CA) de tot el sistema. Podeu substituir la ubicaci¨® dels fitxers CA mitjan?ant el par¨¤metre de configuraci¨® del servidor Áú»¢¶Ä²© o del proxy SSLCALocation.
Aix¨° estableix l'opci¨® cURL .
Verifica l'equip SSL Marca la casella per verificar que el camp Nom com¨² o Nom alternatiu de l'assumpte del certificat del servidor web coincideix.
Aix¨° estableix el de cURL.
Fitxer de certificat SSL Nom del fitxer de certificat SSL emprat per a l'autenticaci¨® del client. El fitxer del certificat ha d'¨¦sser en format PEM1. Si el fitxer del certificat tamb¨¦ cont¨¦ la clau privada, deixeu el camp Fitxer de clau SSL en blanc. Si la clau ¨¦s xifrada, especifiqueu el mot de pas al camp Mot de pas de la clau SSL. El directori que cont¨¦ aquest fitxer l'especifica el servidor Áú»¢¶Ä²© o el par¨¤metre de configuraci¨® del proxy SSLCertLocation.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST }, {HOST.NAME } , {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® cURL .
Fitxer de clau SSL Nom del fitxer de clau privada SSL emprat per a l'autenticaci¨® del client. El fitxer de clau privada ha d'¨¦sser en format PEM1. El directori que cont¨¦ aquest fitxer l'especifica el servidor Áú»¢¶Ä²© o el par¨¤metre de configuraci¨® del proxy SSLKeyLocation.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® cURL .
Mot de pas de clau SSL Mot de pas del fitxer de clau privada SSL.
Macros admeses: macros d'usuari, macros de descoberta de baix nivell.
Aix¨° estableix l'opci¨® cURL .
Activa trampes Amb aquesta casella marcada, l'element tamb¨¦ funcionar¨¤ com a element trapper i acceptar¨¤ les dades enviades al servidor o proxy Áú»¢¶Ä²© emprant la utilitat Áú»¢¶Ä²© sender o el protocol, o acceptar¨¤ les dades enviades al servidor Áú»¢¶Ä²© emprant el m¨¨tode API history.push. Per tindre m¨¦s informaci¨® sobre l'enviament d'informaci¨®, veieu: Elements trapper.
Equips permesos Visible nom¨¦s si la casella Activa trampes ¨¦s marcada.
Llista d'adreces IP delimitades per comes, opcionalment en notaci¨® CIDR, o noms d'equips.
Si s'especifica, les connexions nom¨¦s s'acceptaran de trucades entrants dels equips que s'indiquen ²¹±ç³Ü¨ª.
Si el suport d'IPv6 ¨¦s habilitat, "127.0.0.1", "::127.0.0.1", "::ffff:127.0.0.1" es tracten de la mateixa manera i "::/0" permetr¨¤ qualsevol adre?a IPv4 o IPv6.
'0.0.0.0/0' es pot emprar per permetre qualsevol adre?a IPv4.
Tingueu en compte que les adreces IPv6 compatibles amb IPv4 (prefix 0000::/96) s¨®n compatibles, per¨° ¨¦s obsolet per .
Exemple: Server=127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, zabbix.domain
Els espais i les macros d'usuari s¨®n permeses en aquest camp.
Les macros d'equip: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} s¨®n permeses en aquest camp.

Si el camp Proxy HTTP es deixa en blanc, una altra manera d'emprar un proxy HTTP ¨¦s establir variables d'entorn relacionades amb el proxy.

Per a HTTP: establiu la variable d'entorn "http_proxy" per a l'usuari del servidor Áú»¢¶Ä²©. Per exemple:
http_proxy=http://proxy_ip:proxy_port.

Per a HTTPS: establiu la variable d'entorn HTTPS_PROXY. Per exemple:
HTTPS_PROXY=http://proxy_ip:proxy_port. Hi ha m¨¦s detalls disponibles executant l'ordre de shell: # man curl.

[1]Áú»¢¶Ä²© nom¨¦s admet fitxers de certificat i clau privada en format PEM. Si teniu el vostre certificat i les vostres dades de clau privada en un fitxer en format PKCS #12 (normalment amb l'extensi¨® *.p12 o *.pfx), podeu generar-ne el fitxer PEM amb les ordres seg¨¹ents:

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

Exemples

Exemple 1

Envieu peticions GET simples per extreure les dades de serveis com ara Elasticsearch:

  • Crear un element GET amb l'URL : localhost:9200/?pretty
  • Veieu la 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"
        }
  • Extreure ara el nombre de versi¨® emprant una etapa de pre-processament JSONPath: $.version.number
Exemple 2

Enviar les peticions POST simples per extreure les dades de serveis com ara Elasticsearch:

  • Crear un element POST amb l'URL : http://localhost:9200/str/values/_search?scroll=10s
  • Configurar el cos POST seguint per obtindre la c¨¤rrega del processador (mitjana 1 min per nucli)
    {
               "query": {
                   "bool": {
                       "must": [{
                           "match": {
                               "itemid": 28275
                           }
                       }],
                       "filter": [{
                           "range": {
                               "clock": {
                                   "gt": 1517565836,
                                   "lte": 1517566137
                               }
                           }
                       }]
                   }
               }
           }
  • Rebut :
    {
               "_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
                       }
                   }]
               }
           }
  • Emprem ara una etapa de pre-tractament JSONPath per obtindre el valor de l'element: $.hits.hits[0]._source.value
Exemple 3

Verificar si l'API Áú»¢¶Ä²© ¨¦s viva, emprant apiinfo.version.

  • °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de l'element:

Veieu que l'¨²s del m¨¨tode POST amb les dades JSON, la definici¨® de les cap?aleres de petici¨® i l'enviament nom¨¦s de les cap?aleres:

  • Pre-tractament del valor d'element amb una expressi¨® regular per obtindre el codi HTTP:

  • Verificaci¨® del resultat a Darreres dades:

Exemple 4

Recuperaci¨® dels informes meteorol¨°gics connectant al servei p¨²blic Openweathermap.

  • Configurar un element principal per la recollida de dades en bloc en un sol JSON:

Veieu que emprem macros als camps de petici¨®. Veieu l'API per sapiguer com omplir-les.

Exemple de codi JSON retornat en resposta a l'agent 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
           }
       }

La seg¨¹ent tasca consisteix en configurar els elements dependents que extreuen les dades del JSON.

  • Configureu un element dependent per la humitat:

Altres m¨¨triques meteorol¨®giques com ara la 'Temperatura' s'afegeixen de la mateixa manera.

  • Exemple de pre-tractament del valor de l'element dependent amb JSONPath:

  • Verifiqueu el resultat de les dades meteorol¨°giques a Darreres dades:

Exemple 5

Connexi¨® a la p¨¤gina d'estat d'Nginx i obtindre les seves m¨¨triques de forma massiva.

  • Configureu Nginx seguint la [guia oficial] (https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html).
  • Configureu un element principal per la recollida massiva de les dades:

Exemple de sortida d'estat de l'stub Nginx:

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

La seg¨¹ent tasca consisteix en configurar els elements dependents que extreuen les dades.

  • Configureu un exemple d'element dependent per les peticions per segon:

  • Exemple de pre-tractament del valor de l'element dependent amb una expressi¨® regular el servidor accepta les peticions tractades\s+([0-9]+) ([0-9]+) ([0-9]+):

  • Verifiqueu el resultat complet del m¨°dul stub a Darreres dades: